2021-10-22 16:33:58 +00:00
---
id : shareisland-api
name : Shareisland (API)
description : "A general italian tracker"
language : it-IT
type : private
encoding : UTF-8
links :
- https://shareisland.org/
legacylinks :
- http://shareisland.org/
- http://www.shareisland.org/
caps :
categorymappings :
- {id: 1, cat: Movies, desc : "Movie" }
- {id: 2, cat: TV, desc : "Serie TV" }
- {id: 15, cat: Books/EBook, desc : "Ebook" }
- {id: 17, cat: Books/Mags, desc : "Riviste e Giornali" }
- {id: 19, cat: XXX, desc : "XXX" }
- {id: 3, cat: Audio, desc : "Music" }
- {id: 7, cat: PC/Games, desc : "Games" }
- {id: 23, cat: PC, desc : "Software" }
modes :
search : [ q]
tv-search : [ q, season, ep, imdbid, tvdbid]
movie-search : [ q, imdbid, tmdbid]
music-search : [ q]
book-search : [ q]
settings :
- name : apikey
type : text
label : APIKey
- name : info_key
type : info
label : About your API key
default : "Find or Generate a new API Token by accessing your <a href=\"https://shareisland.org/\" target =_blank>Shareisland</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name : freeleech
type : checkbox
label : Search freeleech only
default : false
- name : sort
type : select
label : Sort requested from site
default : created_at
options :
created_at : created
seeders : seeders
size : size
name : title
- name : type
type : select
label : Order requested from site
default : desc
options :
desc : desc
asc : asc
2022-01-16 19:16:53 +00:00
login :
path : /api/torrents
method : get
inputs :
api_token : "{{ .Config.apikey }}"
error :
- selector : a[href*="/login"]
2022-01-16 20:18:17 +00:00
message :
text : "The API key was not accepted by {{ .Config.sitelink }}."
2022-01-16 19:16:53 +00:00
2021-10-22 16:33:58 +00:00
search :
paths :
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
2021-11-17 05:01:44 +00:00
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
2022-02-10 18:05:30 +00:00
- path : "/api/torrents/filter"
2021-10-22 16:33:58 +00:00
response :
type : json
2022-02-10 18:05:30 +00:00
inputs :
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token : "{{ .Config.apikey }}"
name : "{{ .Keywords }}"
$raw : "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
sortField : "{{ .Config.sort }}"
sortDirection : "{{ .Config.type }}"
perPage : 100
page : 1
2021-10-22 16:33:58 +00:00
keywordsfilters :
- name : diacritics
args : replace
- name : re_replace # S01 to 1
args : [ "(?i)\\bS0*(\\d+)\\b" , "$1" ]
- name : re_replace # S01E01 to 1 1
args : [ "(?i)\\bS0*(\\d+)E0*(\\d+)\\b" , "$1 $2" ]
rows :
selector : data
2022-02-07 20:54:17 +00:00
attribute : attributes
2021-10-22 16:33:58 +00:00
count :
selector : meta.total
fields :
2022-04-08 06:50:25 +00:00
category :
selector : category_id
2021-10-22 16:33:58 +00:00
title :
selector : name
filters :
- name : re_replace # replace special characters with " " (space)
args : [ "[\\[!\"#$%&'()*+,\\-.\\/:;<=>?@[\\]^_`{|}~]" , " " ]
- name : diacritics
args : replace
- name : re_replace # replace multiple spaces
args : [ "[ ]{2,}" , " " ]
# normalize to SXXEYY format
- name : re_replace # S01 E01 to S01E01
args : [ "(?i)\\bS(\\d+)\\sE(\\d+)\\b" , "S$1E$2" ]
- name : re_replace # 01x01 to S01E01
args : [ "(?i)(\\d{2})x(\\d+)" , "S$1E$2" ]
- name : re_replace # 1x01 to S01E01
args : [ "(?i)\\b(\\d{1})x(\\d+)" , "S0$1E$2" ]
- name : re_replace # Stagione X --> S0X
args : [ "(?i)\\bStagion[ei]\\s?(\\d{1})\\b|\\bSeason'?s?\\s?(\\d{1})\\b" , "S0$1$2" ]
- name : re_replace # Stagione XX --> SXX
args : [ "(?i)\\bStagion[ei]\\s?(\\d{2,})\\b|\\bSeason'?s?\\s?(\\d{2,})\\b" , "S$1$2" ]
- name : re_replace # Episodio 4 to E4
args : [ "(?i)\\b(?:[\\/\\|]?Episodio\\s?(\\d+)|Puntata\\s?(\\d+))" , "E$1$2" ]
- name : re_replace # Episodi 4 5 to E04-05
args : [ "(?i)\\b(?:Puntate\\s*)(\\d+)\\s?(\\d+)" , "E0$1-0$2" ]
- name : re_replace # rimozioni varie
args : [ "(?i)(Serie completa|Completat?a?|in pausa)" , "" ]
details :
selector : details_link
download :
selector : download_link
poster :
selector : poster
filters :
- name : replace
args : [ "https://via.placeholder.com/90x135" , "" ]
imdbid :
selector : imdb_id
tmdbid :
selector : tmdb_id
tvdbid :
selector : tvdb_id
files :
selector : num_file
seeders :
selector : seeders
leechers :
selector : leechers
grabs :
selector : times_completed
date :
# 2021-10-18T00:34:50.000000Z"
selector : created_at
size :
selector : size
downloadvolumefactor :
2022-02-10 18:05:30 +00:00
# api returns 0%, 25%, 50%, 75%, 100%
2021-10-22 16:33:58 +00:00
selector : freeleech
case :
2022-02-10 18:05:30 +00:00
0% : 1 # not free
25% : 0.75
50% : 0.5
75% : 0.25
100% : 0 # freeleech
"*": 0 # catch errors
2021-10-22 16:33:58 +00:00
uploadvolumefactor :
# api returns 0=false, 1=true
selector : double_upload
case :
0 : 1 # normal
1 : 2 # double
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime :
# 7 day (as seconds = 7 x 24 x 60 x 60)
text : 604800
2022-04-08 06:50:25 +00:00
# json UNIT3D 6.0.6