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 :
2021-10-22 17:01:22 +00:00
# dont forget to update the case block in the search fields category
2021-10-22 16:33:58 +00:00
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"]
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
- path : "/api/torrents/filter?api_token={{ .Config.apikey }}&name={{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ 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 }}&sortField={{ .Config.sort }}&sortDirection={{ .Config.type }}&perPage=100&page=1{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
2021-10-22 16:33:58 +00:00
response :
type : json
attribute : attributes
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
count :
selector : meta.total
fields :
category :
selector : category
case :
"Movie": 1
"Serie TV": 2
"Ebook": 15
"Riviste e Giornali": 17
"XXX": 19
"Music": 3
"Games": 7
"Software": 23
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" , "" ]
- name : replace
args : [ "https://via.placeholder.com/400x600" , "" ]
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 :
# api returns 0=false, 1=true
selector : freeleech
case :
0 : 1 # not free
1 : 0 # freeleech
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
# json UNIT3D 5.3.0