From 6c0b51a15ee3e7194dc6deb6e4818538179f4985 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 2 May 2023 13:50:08 +0300 Subject: [PATCH] update schema --- definitions/v10/1337x.yml | 296 ++++++++++++++++++++++++++++++ definitions/v10/anthelion-api.yml | 160 ++++++++++++++++ definitions/v10/bitsearch.yml | 151 +++++++++++++++ definitions/v10/digitalcore.yml | 230 +++++++++++++++++++++++ definitions/v10/movietorrent.yml | 131 +++++++++++++ definitions/v10/schema.json | 26 +++ 6 files changed, 994 insertions(+) create mode 100644 definitions/v10/1337x.yml create mode 100644 definitions/v10/anthelion-api.yml create mode 100644 definitions/v10/bitsearch.yml create mode 100644 definitions/v10/digitalcore.yml create mode 100644 definitions/v10/movietorrent.yml diff --git a/definitions/v10/1337x.yml b/definitions/v10/1337x.yml new file mode 100644 index 000000000..478a2e148 --- /dev/null +++ b/definitions/v10/1337x.yml @@ -0,0 +1,296 @@ +--- +id: 1337x +name: 1337x +description: "1337X is a Public torrent site that offers verified torrent downloads" +language: en-US +type: public +encoding: UTF-8 +followredirect: true +requestDelay: 2 +links: + - https://1337x.to/ + - https://1337x.st/ + - https://x1337x.ws/ + - https://x1337x.eu/ + - https://x1337x.se/ + - https://1337x.unblockit.click/ + - https://1337x.mrunblock.guru/ + - https://1337x.unblockninja.com/ +legacylinks: + - https://1337x.is/ + - https://1337x.nocensor.work/ + - https://1337x.unblockit.how/ + - https://1337x.unblockit.cam/ + - https://1337x.nocensor.biz/ + - https://1337x.gd/ + - https://1337x.unblockit.day/ + - https://1337x.unblockit.llc/ + - https://1337x.unblockit.blue/ + - https://1337x.unblockit.name/ + - https://1337x.nocensor.sbs/ + - https://1337x.unblockit.ist/ + - https://1337x.unblockit.bet/ + - https://1337x.unblockit.cat/ + - https://1337x.unblockit.nz/ + - https://1337x.nocensor.world/ + - https://1337x.unblockit.page/ + - https://1337x.unblockit.pet/ + - https://1337x.nocensor.lol/ + - https://1337x.unblockit.ink/ + - https://1337x.nocensor.art/ + - https://1337x.unblockit.bio/ + - https://1337x.unblockit.boo/ + +caps: + categorymappings: + # Anime + - {id: 28, cat: TV/Anime, desc: "Anime/Anime"} + - {id: 78, cat: TV/Anime, desc: "Anime/Dual Audio"} + - {id: 79, cat: TV/Anime, desc: "Anime/Dubbed"} + - {id: 80, cat: TV/Anime, desc: "Anime/Subbed"} + - {id: 81, cat: TV/Anime, desc: "Anime/Raw"} + # Audio + - {id: 22, cat: Audio/MP3, desc: "Music/MP3"} + - {id: 23, cat: Audio/Lossless, desc: "Music/Lossless"} + - {id: 24, cat: Audio, desc: "Music/DVD"} + - {id: 25, cat: Audio/Video, desc: "Music/Video"} + - {id: 26, cat: Audio, desc: "Music/Radio"} + - {id: 27, cat: Audio/Other, desc: "Music/Other"} + - {id: 53, cat: Audio, desc: "Music/Album"} + - {id: 58, cat: Audio, desc: "Music/Box set"} + - {id: 59, cat: Audio, desc: "Music/Discography"} + - {id: 60, cat: Audio, desc: "Music/Single"} + - {id: 68, cat: Audio, desc: "Music/Concerts"} + - {id: 69, cat: Audio, desc: "Music/AAC"} + # Movies + - {id: 1, cat: Movies/DVD, desc: "Movies/DVD"} + - {id: 2, cat: Movies/SD, desc: "Movies/Divx/Xvid"} + - {id: 3, cat: Movies, desc: "Movies/SVCD/VCD"} + - {id: 4, cat: Movies/Foreign, desc: "Movies/Dubs/Dual Audio"} + - {id: 42, cat: Movies/HD, desc: "Movies/HD"} + - {id: 54, cat: Movies/HD, desc: "Movies/h.264/x264"} + - {id: 55, cat: Movies, desc: "Movies/Mp4"} + - {id: 66, cat: Movies/3D, desc: "Movies/3D"} + - {id: 70, cat: Movies/HD, desc: "Movies/HEVC/x265"} + - {id: 73, cat: Movies, desc: "Movies/Bollywood"} + - {id: 76, cat: Movies/UHD, desc: "Movies/UHD"} + # TV + - {id: 5, cat: TV, desc: "TV/DVD"} + - {id: 6, cat: TV, desc: "TV/Divx/Xvid"} + - {id: 7, cat: TV, desc: "TV/SVCD/VCD"} + - {id: 41, cat: TV/HD, desc: "TV/HD"} + - {id: 71, cat: TV, desc: "TV/HEVC/x265"} + - {id: 74, cat: TV, desc: "TV/Cartoons"} + - {id: 75, cat: TV/SD, desc: "TV/SD"} + - {id: 9, cat: TV/Documentary, desc: "TV/Documentary"} + # Apps + - {id: 18, cat: PC, desc: "Apps/PC Software"} + - {id: 19, cat: PC/Mac, desc: "Apps/Mac"} + - {id: 20, cat: PC, desc: "Apps/Linux"} + - {id: 21, cat: PC, desc: "Apps/Other"} + - {id: 56, cat: PC/Mobile-Android, desc: "Apps/Android"} + - {id: 57, cat: PC/Mobile-iOS, desc: "Apps/iOS"} + # Games + - {id: 10, cat: PC/Games, desc: "Games/PC Game"} + - {id: 11, cat: Console/PS3, desc: "Games/PS2"} + - {id: 12, cat: Console/PSP, desc: "Games/PSP"} + - {id: 13, cat: Console/XBox, desc: "Games/Xbox"} + - {id: 14, cat: Console/XBox 360, desc: "Games/Xbox360"} + - {id: 15, cat: Console/PS3, desc: "Games/PS1"} + - {id: 16, cat: Console/Other, desc: "Games/Dreamcast"} + - {id: 17, cat: PC/Mobile-Other, desc: "Games/Other"} + - {id: 43, cat: Console/PS3, desc: "Games/PS3"} + - {id: 44, cat: Console/Wii, desc: "Games/Wii"} + - {id: 45, cat: Console/NDS, desc: "Games/DS"} + - {id: 46, cat: Console/Other, desc: "Games/GameCube"} + - {id: 72, cat: Console/3DS, desc: "Games/3DS"} + - {id: 77, cat: Console/PS4, desc: "Games/PS4"} + - {id: 82, cat: Console/Other, desc: "Games/Switch"} + # XXX + - {id: 48, cat: XXX/DVD, desc: "XXX/Video"} + - {id: 49, cat: XXX/ImageSet, desc: "XXX/Picture"} + - {id: 50, cat: XXX, desc: "XXX/Magazine"} + - {id: 51, cat: XXX, desc: "XXX/Hentai"} + - {id: 67, cat: XXX, desc: "XXX/Games"} + # Other + - {id: 33, cat: Other, desc: "Other/Emulation"} + - {id: 34, cat: Books, desc: "Other/Tutorial"} + - {id: 35, cat: Other, desc: "Other/Sounds"} + - {id: 36, cat: Books/EBook, desc: "Other/E-books"} + - {id: 37, cat: Other, desc: "Other/Images"} + - {id: 38, cat: Other, desc: "Other/Mobile Phone"} + - {id: 39, cat: Books/Comics, desc: "Other/Comics"} + - {id: 40, cat: Other/Misc, desc: "Other/Other"} + - {id: 47, cat: Other, desc: "Other/Nulled Script"} + - {id: 52, cat: Audio/Audiobook, desc: "Other/Audiobook"} + + modes: + search: [q] + tv-search: [q, season, ep] + movie-search: [q] + music-search: [q, album, artist] + book-search: [q] + allowrawsearch: true + limitsDefault: 80 + limitsMax: 80 + +settings: + - name: flaresolverr + type: info + label: FlareSolverr + default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires FlareSolverr to access it. + - name: downloadlink + type: select + label: Download link + default: "http://itorrents.org/" + options: + "http://itorrents.org/": iTorrents.org + "magnet:": magnet + - name: downloadlink2 + type: select + label: Download link (fallback) + default: "magnet:" + options: + "http://itorrents.org/": iTorrents.org + "magnet:": magnet + - name: info_download + type: info + label: About the Download links + default: As the iTorrents .torrent download link on this site is known to fail from time to time, we suggest using the magnet link as a fallback. The BTCache and Torrage services are not supported because they require additional user interaction (a captcha for BTCache and a download button on Torrage.) + - name: sort + type: select + label: Sort requested from site + default: time + options: + time: created + seeders: seeders + size: size + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + +download: + # the .torrent URL and magnet URI are on the details page + selectors: + - selector: ul li a[href^="{{ .Config.downloadlink }}"] + attribute: href + - selector: ul li a[href^="{{ .Config.downloadlink2 }}"] + attribute: href + +search: + pageSize: 20 + pageable: "{{ if or .Query.Album .Query.Artist .Keywords }}true{{ else }}false{{ end }}" + + paths: + # present first page of movies tv and music results if there are no search parms supplied (20 hits per page) + - path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/Movies{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/1/" + - path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/TV{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/{{ if or .Query.Album .Query.Artist .Keywords }}2{{ else }}1{{ end }}/" + - path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/Music{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/{{ if or .Query.Album .Query.Artist .Keywords }}3{{ else }}1{{ end }}/" + - path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/Other{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/{{ if or .Query.Album .Query.Artist .Keywords }}4{{ else }}1{{ end }}/" + + rows: + selector: tr:has(a[href^="/torrent/"]) + + fields: + title_default: + # the movies, tv and music pages abbreviate the title + selector: td[class^="coll-1"] a[href^="/torrent/"] + title_optional: + # the movies, tv and music pages abbreviate the title so we process the href instead. #8137 + optional: true + selector: td[class^="coll-1"] a[href^="/torrent/"]:contains("...") + attribute: href + filters: + - name: urldecode + - name: split + args: ["/", 3] + title: + # title_optional can be empty so use the title_default instead #8586 + text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}" + filters: + - name: re_replace + args: ["-([\\w]+(?:[\\[\\]\\(\\)\\w]+)?)$", "~$1"] + - name: replace + args: ["-", " "] + - name: re_replace + args: ["~([\\w]+(?:[\\[\\]\\(\\)\\w]+)?)$", "-$1"] + - name: replace + args: ["\u000f", ""] # get rid of unwanted character #6582 + # cleanup for Sonarr + - name: re_replace # EP 3 4 to E3-4 + args: ["(?i)\\sEP\\s(\\d{1,2})\\s(E?\\s?\\d{1,2})\\s", " E$1-$2 "] + - name: re_replace # S02E04 05 to S02E04-05 + args: ["(?i)\\sS(\\d{1,2})\\s?E\\s?(\\d{1,2})\\s(E?\\s?\\d{1,2})\\s", " S$1E$2-$3 "] + - name: re_replace + args: ["(?i)AC3\\s?(\\d)\\s(\\d)", "AC3 $1.$2"] + - name: re_replace + args: ["(?i) DD\\s?(\\d)\\s(\\d)", " DD $1.$2"] + - name: re_replace + args: ["(?i) DDP\\s?(\\d)\\s(\\d)", " DDP $1.$2"] + - name: re_replace + args: ["(?i)\\sE\\s?AC3", " EAC3"] + - name: re_replace + args: ["(?i)WEB\\sDL", "WEB-DL"] + - name: re_replace + args: ["(?i)HDTVRIP", "HDTV"] + category_sub: + optional: true + selector: td[class^="coll-1"] a[href^="/sub/"] + attribute: href + filters: + # extract the third part + - name: split + args: ["/", 2] + category: + text: "{{ if .Result.category_sub }}{{ .Result.category_sub }}{{ else }}40{{ end }}" + details: + selector: td[class^="coll-1"] a[href^="/torrent/"] + attribute: href + download: + # .torrent link is on the details page + selector: td[class^="coll-1"] a[href^="/torrent/"] + attribute: href + # dates come in three flavours: + date_year: + # (within this year) 7am Sep. 14th + optional: true + selector: td[class^="coll-date"]:not(:contains(":")):not(:contains("'")) + filters: + - name: re_replace + args: ["st|nd|rd|th", ""] + - name: dateparse + args: "htt MMM. d" + date_years: + # (more than a year ago) Apr. 18th '11 + optional: true + selector: td[class^="coll-date"]:contains("'") + filters: + - name: replace + args: ["'", ""] + - name: re_replace + args: ["st|nd|rd|th", ""] + - name: dateparse + args: "MMM. d yy" + date_today: + # (today) 12:25am + optional: true + selector: td[class^="coll-date"]:contains(":") + filters: + - name: fuzzytime + date: + text: "{{ if or .Result.date_year .Result.date_years .Result.date_today }}{{ or .Result.date_year .Result.date_years .Result.date_today }}{{ else }}now{{ end }}" + size: + selector: td[class^="coll-4"] + seeders: + selector: td[class^="coll-2"] + leechers: + selector: td[class^="coll-3"] + downloadvolumefactor: + text: 0 + uploadvolumefactor: + text: 1 +# engine n/a diff --git a/definitions/v10/anthelion-api.yml b/definitions/v10/anthelion-api.yml new file mode 100644 index 000000000..05cf4455f --- /dev/null +++ b/definitions/v10/anthelion-api.yml @@ -0,0 +1,160 @@ +--- +id: anthelion-api +name: Anthelion (API) +description: "Anthelion is a Private MOVIES tracker" +language: en-US +type: private +encoding: UTF-8 +links: + - https://anthelion.me/ + +caps: + categorymappings: + - {id: 2000, cat: Movies} + - {id: 2030, cat: Movies/SD} + - {id: 2040, cat: Movies/HD} + - {id: 2045, cat: Movies/UHD} + - {id: 2050, cat: Movies/BluRay} + - {id: 2080, cat: Movies/WEB-DL} + - {id: 8000, cat: Other} + + modes: + search: [q] + movie-search: [q, imdbid, tmdbid] + # note: the api any supports movie search so there is no tv season/episode support. + # not using year search because torznab adds it to the q= which results in &q=keyword+2022&year=2022 sent to api !?! + +settings: + - name: apikey + type: text + label: APIKey + - name: info_key + type: info + label: About your API key + default: "Find or Generate a new API Key by accessing your Anthelion account Settings page and scrolling down to the API Key section.
Tick the Search and Download checkboxes and click the save profile button to generate the key." + +login: + path: api.php + method: get + inputs: + api_key: "{{ .Config.apikey }}" + error: + - selector: ":root:contains(\"Unrecognized key\")" + message: + text: "The API key was not accepted by {{ .Config.sitelink }}." + - selector: ":root:contains(\"No API_KEY provided\")" + message: + text: "You did not enter an API key." + +search: + pageSize: 100 + + paths: + # docs: https://anthelion.me/forums.php?action=viewthread&threadid=1026 + - path: api.php + response: + type: json + + inputs: + api_key: "{{ .Config.apikey }}" + o: json + t: movie + q: "{{ .Keywords }}" + tmdb: "{{ .Query.TMDBID }}" + imdb: "{{ .Query.IMDBIDShort }}" + cat: "{{ join .Categories \",\" }}" + limit: "{{ .Query.Limit }}" + offset: "{{ .Query.Offset }}" + + rows: + selector: item + count: + selector: response.total + + fields: + category: + selector: category + filters: + - name: split + args: [",", -1] + year: + selector: year + optional: true + _codec: + selector: codec + _container: + selector: container + _media: + selector: media + filters: + - name: replace + args: ["WEB", "WEB-DL"] + _resolution: + selector: resolution + _audioFormat: + selector: audioFormat + _subbing: + selector: subbing + optional: true + _flags: + selector: flags + optional: true + filters: + - name: replace + args: [",", " "] + _language: + selector: language + optional: true + _releaseGroup: + selector: releaseGroup + optional: true + filters: + - name: trim + title: + selector: title + filters: + - name: htmldecode + - name: append + args: " {{ .Result.year }} {{ .Result._codec }} {{ .Result._container }} {{ .Result._media }} {{ .Result._resolution }} {{ .Result._audioFormat }}{{ if .Result._subbing }} Subs{{ else }}{{ end }}{{ if .Result._flags }} {{ .Result._flags }}{{ else }}{{ end }}{{ if .Result._language }} {{ .Result._language }}{{ else }}{{ end }}{{ if and (.Result._releaseGroup) (ne .Result._releaseGroup \"NULL\") }} -{{ .Result._releaseGroup }}{{ else }}{{ end }}" + details: + selector: guid + download: + selector: link + filters: + - name: htmldecode + infohash: + selector: infohash + imdbid: + selector: imdb + tmdbid: + selector: tmdb + genre: + selector: tags + filters: + - name: replace + args: [".", "_"] + description: + text: "{{ .Result.genre }}" + files: + selector: fileCount + seeders: + selector: seeders + leechers: + selector: leechers + grabs: + selector: grabs + date: + # 2022-08-07T20:56:06+0200 + selector: pubDate + size: + selector: size + downloadvolumefactor: + text: 1 + uploadvolumefactor: + text: 1 + minimumratio: + text: 1.0 + minimumseedtime: + # 3 day (as seconds = 3 x 24 x 60 x 60) + text: 259200 +# json api diff --git a/definitions/v10/bitsearch.yml b/definitions/v10/bitsearch.yml new file mode 100644 index 000000000..5014b881e --- /dev/null +++ b/definitions/v10/bitsearch.yml @@ -0,0 +1,151 @@ +--- +id: bitsearch +name: BitSearch +description: "BitSearch is a Public torrent meta-search engine" +language: en-US +type: public +encoding: UTF-8 +requestDelay: 2 +links: + - https://bitsearch.to/ + - https://bitsearch.mrunblock.guru/ +legacylinks: + - https://bitsearch.nocensor.biz/ + - https://bitsearch.nocensor.sbs/ + - https://bitsearch.nocensor.world/ + - https://bitsearch.nocensor.lol/ + +caps: + categories: + AudioBook: Audio/Audiobook + eBook: Books/EBook + "Ebook/Course": Books/EBook + Games: PC/Games + "Games/PC": PC/Games + Movies: Movies + Music: Audio + "Music/Album": Audio + "Music/mp3": Audio/MP3 + "Music/Lossless": Audio/Lossless + "Music/Video": Audio/Video + Other: Other + "Other/Android": PC/Mobile-Android + "Other/Archive": Other + "Other/Audio": Audio + "Other/Database": PC + "Other/DiskImage": PC/ISO + "Other/Document": Books/Comics + "Other/Image": Other/Misc + "Other/Program": PC/0day + "Other/Sourcecode": PC + "Other/Source Code": PC + "Other/Video": TV + Softwares: PC/0day + "Softwares/Windows": PC/0day + TV: TV + Unknown: Other + XXX: XXX + + modes: + search: [q] + tv-search: [q, season, ep] + movie-search: [q] + music-search: [q] + book-search: [q] + limitsDefault: 50 + limitsMax: 50 + +settings: + - name: sort + type: select + label: Sort requested from site + default: date + options: + date: created + seeders: seeders + size: size + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + +search: + pageSize: 50 + firstPageNumber: 1 + + paths: + # https://bitsearch.to/search?q=&sort=date&order=desc + - path: search + inputs: + q: "{{ .Keywords }}" + sort: "{{ .Config.sort }}" + order: "{{ .Config.type }}" + limit: "{{ .Query.Limit }}" + page: "{{ .Query.Page }}" + + keywordsfilters: + - name: re_replace + args: ["\\.", " "] + + rows: + selector: div.search-result:has(a.dl-torrent), li.search-result:has(a.dl-torrent) + + fields: + category: + selector: a.category + title: + selector: h5 a + details: + selector: h5 a + attribute: href + download: + selector: a.dl-torrent + attribute: href + infohash: + selector: a[href^="magnet:?xt"] + attribute: href + filters: + - name: regexp + args: ([A-F|a-f|0-9]{40}) + grabs: + selector: div.stats div:has(img[alt="Download"]) + filters: + - name: replace + args: [".", ""] + - name: replace + args: ["K", "00"] + - name: replace + args: ["M", "00000"] + size: + selector: div.stats div:has(img[alt="Size"]) + seeders: + selector: div.stats div:has(img[alt="Seeder"]) + filters: + - name: replace + args: [".", ""] + - name: replace + args: ["K", "00"] + - name: replace + args: ["M", "00000"] + leechers: + selector: div.stats div:has(img[alt="Leecher"]) + filters: + - name: replace + args: [".", ""] + - name: replace + args: ["K", "00"] + - name: replace + args: ["M", "00000"] + date: + selector: div.stats div:has(img[alt="Date"]) + filters: + - name: dateparse + args: "MMM d, yyyy" + downloadvolumefactor: + text: 0 + uploadvolumefactor: + text: 1 +# engine n/a diff --git a/definitions/v10/digitalcore.yml b/definitions/v10/digitalcore.yml new file mode 100644 index 000000000..ddc5784b3 --- /dev/null +++ b/definitions/v10/digitalcore.yml @@ -0,0 +1,230 @@ +--- +id: digitalcore +name: DigitalCore +description: "DigitalCore is a Private Torrent Tracker for MOVIES / TV / GENERAL" +language: en-US +type: private +encoding: UTF-8 +links: + - https://digitalcore.club/ + +caps: + categorymappings: + - {id: 2, cat: Movies/SD, desc: Movies/SD} + - {id: 1, cat: Movies/DVD, desc: Movies/DVDR} + - {id: 5, cat: Movies/HD, desc: Movies/720p} + - {id: 6, cat: Movies/HD, desc: Movies/1080p} + - {id: 4, cat: Movies/UHD, desc: Movies/2160p} + - {id: 3, cat: Movies/BluRay, desc: Movies/BluRay} + - {id: 38, cat: Movies/UHD, desc: Movies/Bluray/UHD} + - {id: 7, cat: Movies/HD, desc: Movies/PACKS} + - {id: 10, cat: TV/SD, desc: Tv/SD} + - {id: 11, cat: TV/SD, desc: Tv/DVDR} + - {id: 8, cat: TV/HD, desc: Tv/720p} + - {id: 9, cat: TV/HD, desc: Tv/1080p} + - {id: 13, cat: TV/UHD, desc: Tv/2160p} + - {id: 14, cat: TV/HD, desc: Tv/BluRay} + - {id: 12, cat: TV/HD, desc: Tv/PACKS} + - {id: 17, cat: Other, desc: Unknown} + - {id: 18, cat: PC/0day, desc: Apps/0DAY} + - {id: 20, cat: PC/ISO, desc: Apps/PC} + - {id: 21, cat: PC/Mac, desc: Apps/Mac} + - {id: 33, cat: PC, desc: Apps/Tutorials} + - {id: 22, cat: Audio/MP3, desc: Music/MP3} + - {id: 23, cat: Audio/Lossless, desc: Music/FLAC} + - {id: 24, cat: Audio/Video, desc: Music/MTV} + - {id: 29, cat: Audio, desc: Music/PACKS} + - {id: 39, cat: Audio/Video, desc: Music/DVD} + - {id: 40, cat: Audio/Video, desc: Music/Bluray} + - {id: 25, cat: PC/Games, desc: Games/PC} + - {id: 27, cat: PC/Mac, desc: Games/Mac} + - {id: 26, cat: Console, desc: Games/Consoles} + - {id: 43, cat: Console, desc: Games/ROMS} + - {id: 42, cat: XXX/Other, desc: Games/XXX} + - {id: 44, cat: Audio/Audiobook, desc: Audiobooks} + - {id: 28, cat: Books/EBook, desc: Ebooks} + - {id: 30, cat: XXX/SD, desc: XXX/SD} + - {id: 31, cat: XXX, desc: XXX/HD} + - {id: 32, cat: XXX/UHD, desc: XXX/4K} + - {id: 35, cat: XXX/SD, desc: XXX/Movies/SD} + - {id: 36, cat: XXX, desc: XXX/Movies/HD} + - {id: 37, cat: XXX/UHD, desc: XXX/Movies/4K} + - {id: 34, cat: XXX/ImageSet, desc: XXX/Imagesets} + - {id: 41, cat: XXX, desc: XXX/PACKS} + + modes: + search: [q] + tv-search: [q, season, ep, imdbid] + movie-search: [q, imdbid] + music-search: [q] + book-search: [q] + +settings: + - name: cookie + type: text + label: Cookie + - name: info + type: info + label: How to get the Cookie + default: "
  1. Login to this tracker with your browser
  2. Open the DevTools panel by pressing F12
  3. Select the Network tab
  4. Click on the Doc button (Chrome Browser) or HTML button (FireFox)
  5. Refresh the page by pressing F5
  6. Click on the first row entry
  7. Select the Headers tab on the Right panel
  8. Find 'cookie:' in the Request Headers section
  9. Select and Copy the whole cookie string (everything after 'cookie: ') and Paste here.
" + - name: freeleech + type: checkbox + label: Search freeleech only + default: false + - name: sort + type: select + label: Sort requested from site + default: d + options: + d: created + up: seeders + s: size + n: title + - name: type + type: select + label: Order requested from site + default: desc + options: + desc: desc + asc: asc + +login: + method: cookie + inputs: + cookie: "{{ .Config.cookie }}" + +search: + pageSize: 100 + + paths: + - path: api/v1/torrents + response: + type: json + noResultsMessage: "" + + inputs: + $raw: "{{ range .Categories }}categories[]={{.}}&{{end}}" + dead: true + extendedDead: true + extendedSearch: false + freeleech: "{{ if .Config.freeleech }}true{{ else }}false{{ end }}" + index: "{{ .Query.Offset }}" + limit: "{{ .Query.Limit }}" + order: "{{ .Config.type }}" + page: search + searchText: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }} {{ else }}{{ end }}{{ .Keywords }}" + section: all + sort: "{{ .Config.sort }}" + stereoscopic: false + watchview: false + + rows: + selector: $ + + fields: + category: + selector: category + title: + selector: name + _id: + selector: id + details: + text: "{{ .Config.sitelink }}torrent/{{ .Result._id }}/" + download: + text: "{{ .Config.sitelink }}api/v1/torrents/download/{{ .Result._id }}" + imdbid: + selector: imdbid2 + imdbid_full: + optional: true + selector: imdbid2 + poster_normal: + optional: true + selector: firstpic + poster_imdb: + optional: true + text: "{{ if .Result.imdbid }}{{ .Config.sitelink }}img/imdb/{{ .Result.imdbid_full }}.jpg{{ else }}{{ end }}" + poster: + text: "{{ if .Result.poster_imdb }}{{ .Result.poster_imdb }}{{ else }}{{ .Result.poster_normal }}{{ end }}" + date: + # 2021-10-27 12:07:22 + selector: added + filters: + - name: append + args: " +02:00" # EET + - name: dateparse + args: "yyyy-MM-dd HH:mm:ss zzz" + size: + selector: size + files: + selector: numfiles + grabs: + selector: times_completed + seeders: + selector: seeders + leechers: + selector: leechers + downloadvolumefactor: + # api returns 0=false, 1=true + selector: frileech + case: + 0: 1 # not free + 1: 0 # freeleech + uploadvolumefactor: + text: 1 + minimumratio: + text: 1.1 + minimumseedtime: + # 5 days (as seconds = 5 x 24 x 60 x 60) + text: 432000 + title_desc: + optional: true + selector: title + year: + optional: true + selector: year + genre: + selector: genres + _tagline_desc: + optional: true + selector: tagline + _cast_desc: + optional: true + selector: cast + _rating_desc: + optional: true + selector: rating + filters: + - name: re_replace + args: ["^0$", ""] + _section_desc: + optional: true + selector: section + _predate_desc: + selector: preDate + filters: + - name: re_replace + args: ["0000-00-00 00:00:00", ""] + _p2ptag: + selector: p2p + case: + 0: "" + 1: P2P + _packtag: + selector: pack + case: + 0: "" + 1: Pack + _reqidtag: + selector: reqid + case: + 0: "" + "*": Request + _tag_desc: + optional: true + text: "{{ if .Result._p2ptag }}{{ .Result._p2ptag }}, {{ else }}{{ end }}{{ if .Result._packtag }}{{ .Result._packtag }}, {{ else }}{{ end }}{{ if .Result._reqidtag }}{{ .Result._reqidtag }}{{ else }}{{ end }}" + filters: + - name: regexp + args: "(.+?), $" + description: + text: "{{ if .Result.title_desc }}Title: {{ .Result.title_desc }}
{{ else }}{{ end }}{{ if .Result.year }}Year: {{ .Result.year }}
{{ else }}{{ end }}{{ if .Result.genre }}Genres: {{ .Result.genre }}
{{ else }}{{ end }}{{ if .Result._tagline_desc }}Tagline: {{ .Result._tagline_desc }}
{{ else }}{{ end }}{{ if .Result._cast_desc }}Cast: {{ .Result._cast_desc }}
{{ else }}{{ end }}{{ if .Result._rating_desc }}Rating: {{ .Result._rating_desc }}
{{ else }}{{ end }}{{ if .Result._tag_desc }}Tags: {{ .Result._tag_desc }}
{{ else }}{{ end }}{{ if .Result._predate_desc }}PRE: {{ .Result._predate_desc }}
{{ else }}{{ end }}{{ if .Result._section_desc }}Section: {{ .Result._section_desc }}{{ else }}{{ end }}" +# json rartracker api v1 diff --git a/definitions/v10/movietorrent.yml b/definitions/v10/movietorrent.yml new file mode 100644 index 000000000..bb4a10bcb --- /dev/null +++ b/definitions/v10/movietorrent.yml @@ -0,0 +1,131 @@ +--- +id: movietorrent +name: MovieTorrent +description: "MovieTorrent is a Public site for Bollywood, Hollywood, Hindi Dubbed, Tamil , Punjabi, Pakistani MOVIES" +language: en-US +type: public +encoding: UTF-8 +requestDelay: 2 +links: + - https://movietorrent.co/ + +caps: + categorymappings: + - {id: 1, cat: Movies, desc: "Bollywood"} + - {id: 2, cat: Movies/HD, desc: "1080p"} + - {id: 3, cat: Movies/HD, desc: "2016"} + - {id: 4, cat: Movies/HD, desc: "2017"} + - {id: 5, cat: Movies/HD, desc: "2018"} + - {id: 6, cat: Movies/HD, desc: "2019"} + - {id: 7, cat: Movies/HD, desc: "720p"} + - {id: 8, cat: Movies/HD, desc: "480p"} + - {id: 9, cat: Movies/HD, desc: "Action"} + - {id: 10, cat: Movies, desc: "Adventure"} + - {id: 11, cat: Movies, desc: "Animation"} + - {id: 14, cat: Movies, desc: "Comedy"} + - {id: 15, cat: Movies, desc: "Crime"} + - {id: 18, cat: Movies, desc: "Drama"} + - {id: 19, cat: Movies, desc: "Dubbed"} + - {id: 23, cat: Movies, desc: "Hindi"} + - {id: 26, cat: Movies, desc: "Hollywood"} + - {id: 27, cat: Movies, desc: "Horror"} + - {id: 32, cat: Movies, desc: "Pakistani"} + - {id: 35, cat: Movies, desc: "Punjabi"} + - {id: 36, cat: Movies, desc: "Religious"} + - {id: 38, cat: Movies, desc: "Romance"} + - {id: 42, cat: Movies, desc: "Sport"} + - {id: 44, cat: Movies, desc: "Superhero"} + - {id: 47, cat: Movies, desc: "Tamil Telugu"} + - {id: 48, cat: Movies, desc: "Thriller"} + - {id: 49, cat: Movies, desc: "Trending"} + - {id: 53, cat: Movies/WEB-DL, desc: "Web Series"} + - {id: 59, cat: Movies, desc: "2019"} + - {id: 5143, cat: Movies, desc: "2012"} + - {id: 5247, cat: Movies, desc: "2015"} + - {id: 8758, cat: Movies, desc: "2020"} + - {id: 8808, cat: Movies, desc: "2013"} + - {id: 8809, cat: Movies, desc: "2014"} + - {id: 9938, cat: Movies, desc: "Turkish Dramas"} + - {id: 10293, cat: Movies, desc: "2021"} + - {id: 8569, cat: Movies, desc: "2021"} + - {id: 8610, cat: Movies, desc: "2022"} + + modes: + search: [q] + tv-search: [q, season, ep] + movie-search: [q] + limitsDefault: 36 + limitsMax: 36 + +settings: [] + +download: + infohash: + hash: + selector: a[href^="magnet:"] + attribute: href + filters: + - name: regexp + args: ([A-F|a-f|0-9]{40}) + title: + selector: th[colspan="5"] + filters: + - name: replace + args: [" – movietorrent", ""] + - name: trim + - name: validfilename + +search: + pageSize: 12 + + paths: + - path: "?s={{ .Keywords }}" + - path: "/page/2/?s={{ .Keywords }}" + - path: "/page/3/?s={{ .Keywords }}" + + rows: + selector: article:has(h2) + filters: + - name: andmatch + + fields: + category: + selector: span.term-badge + attribute: class + filters: + - name: regexp + args: (\d+) + title: + selector: h2 + filters: + - name: replace + args: ["Full Movie ", ""] + - name: replace + args: ["Torrent Magnet ", ""] + - name: replace + args: ["Download", ""] + - name: replace + args: ["…", ""] + details: + selector: h2 > a + attribute: href + download: + selector: h2 > a + attribute: href + poster: + selector: a[data-src] + attribute: data-src + date: + selector: time + attribute: datetime + size: + text: "5 GB" + seeders: + text: 1 + leechers: + text: 1 + downloadvolumefactor: + text: 0 + uploadvolumefactor: + text: 1 +# engine wordpress 5.8 diff --git a/definitions/v10/schema.json b/definitions/v10/schema.json index e5c1ac610..1b88266c5 100644 --- a/definitions/v10/schema.json +++ b/definitions/v10/schema.json @@ -93,6 +93,14 @@ "type": "object", "additionalProperties": false, "properties": { + "limitsDefault": { + "type": "integer", + "minimum": 1 + }, + "limitsMax": { + "type": "integer", + "minimum": 1 + }, "categories": { "type": "object", "additionalProperties": false, @@ -482,6 +490,24 @@ "type": "object", "additionalProperties": false, "properties": { + "pageSize": { + "type": "integer", + "minimum": 1 + }, + "pageable": { + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "string" + } + ] + }, + "firstPageNumber": { + "type": "integer", + "minimum": 0 + }, "path": { "type": "string" },