Compare commits

...

51 Commits

Author SHA1 Message Date
Garfield69
91b87ee7be 7tor: fix TEST mode for #4784
the getnew search does not appear to be working any longer, so in no keywords are supplied we will use  TEST instead. Not ideal but better than no-results = error.
2019-02-28 13:19:19 +13:00
Garfield69
ee8fc6a78f bigtorrent: fix TEST mode for #1219
and also return a login error message
2019-02-28 10:05:20 +13:00
Garfield69
18f48cb04b icetorrent: attempt to fix for #4783 2019-02-28 09:42:23 +13:00
Garfield69
dd64739af6 torrentbd: attempt to fix login. #1709 #4781 2019-02-28 08:20:13 +13:00
Garfield69
05c4d1e331 polishtracker: display email on login config. resolves #4780 2019-02-28 07:41:53 +13:00
Garfield69
f9ad475aa8 torrent9: add secondary domain 2019-02-27 17:41:54 +13:00
Garfield69
ad17897edd elitetorrent-biz: drop index.php from search path. 2019-02-27 16:10:28 +13:00
SpookyDex
2356ef3837 torrentsectorcrew: new domain .org (#4776) 2019-02-27 07:16:20 +13:00
Garfield69
b63e97fecd torrentscsv: add torznab elements guid and comments for sonarr/radarr. resolves #4774 2019-02-26 13:41:37 +13:00
Garfield69
c025a98cbf skytorrentsclone: update search keyword. resolves #4763 2019-02-26 12:40:40 +13:00
Garfield69
0c84507b51 tp2: add note about categories for Sonarr or Radarr. 2019-02-26 12:30:49 +13:00
Garfield69
875d7a005e EliteTracker: add CA bypass for #4769 2019-02-25 21:50:45 +13:00
Garfield69
b1c25d4c5b gdf76: prevent log errors 2019-02-25 19:04:42 +13:00
Garfield69
5ef6b8601a puntotorrent & unionfansub: handle size 1.018,29 MB 2019-02-25 18:54:31 +13:00
Garfield69
a512a1e6b5 alein: selector adjustments to prevent log errors. 2019-02-25 17:39:11 +13:00
Garfield69
5ba93dd9c2 add racingforme a Private tracker for racing. resolves #1351 2019-02-25 08:28:51 +13:00
snamds
5216b6ece7 Newpct: changed Download link format (#4758) resolves #4757 2019-02-24 11:52:31 +13:00
Garfield69
eb5c8f4dcd solidtorrents: fix cat database 2019-02-24 08:32:56 +13:00
Garfield69
8a6ba04688 TVstore: handle dashboard SnnEnn searching
and if no query supplied, then its a test so juest fetcch 20 entries to shorten response time to 30s (previously set to 100 would cause timeout failure on sonarr indexer test).
2019-02-23 22:01:49 +13:00
Garfield69
287ad3a995 nnm-club: new CA bypass 2019-02-23 19:51:54 +13:00
Garfield69
00494bdac1 add solidtorrents: a Public meta-search engine. resolves #4751 2019-02-23 16:06:42 +13:00
Garfield69
4189aeac0e TVstore: add cats tvhd and tvsd
to match the returned categories processed via the call of TvCategoryParser.ParseTvShowQuality
2019-02-23 08:14:53 +13:00
kaso17
5f66b1a297 RARBG: fix title decoding 2019-02-22 18:33:19 +01:00
kaso17
ad77068a7b RARBG: make torrent download link optional 2019-02-22 18:28:42 +01:00
kaso17
75d53b4026 improve certificate validation error handling 2019-02-22 17:42:42 +01:00
kaso17
a4cd5e0047 The Shinning: fix legacy urls 2019-02-22 17:10:47 +01:00
kaso17
eccafdf4af XSpeeds: update categories
fixes #4519
2019-02-22 17:02:30 +01:00
kaso17
a7fab04e42 add imdbid to tv-search 2019-02-22 16:03:29 +01:00
kaso17
95e17d1741 TorrentCCF: update URL 2019-02-22 15:53:30 +01:00
morpheus133
a6c821762a TVstore: Correct Sonar Test (#4745) 2019-02-22 21:06:27 +13:00
morpheus133
e66a839fb3 add TVstore a Hungarian Private tracker for TV #2590 (#4738)
* Initial version for TvStore.me (#2590)
Only freeleech and upload/download factor handling is needed.
2019-02-22 20:12:15 +13:00
Garfield69
1a8b48f4dc karagarga: update date parsing 2019-02-22 18:52:17 +13:00
Garfield69
e32baf18a4 spacetorrent: they have simplyfied categories and dropped seelders and leechers from main result page 2019-02-22 16:16:25 +13:00
Garfield69
486a5313e4 gktorrent: new domain .cx 2019-02-22 15:40:20 +13:00
Garfield69
79b262569f cpabien: new domain .bz 2019-02-22 15:38:40 +13:00
buckmelanoma
9a2a019ff5 torrents.csv: Fixed categories, updated tracker list (#4744) 2019-02-22 13:42:39 +13:00
Garfield69
2dc4582830 2fast4you: update categories, as per #4743 2019-02-22 07:39:03 +13:00
Garfield69
48d7ce271b 3evils: updates resolves #4737 2019-02-21 20:30:11 +13:00
Garfield69
11acfddd64 theshinning: update for unit3d server. resolves #4735 2019-02-21 15:40:10 +13:00
Garfield69
23f36bb0f8 nostalgic: drop debug logging 2019-02-21 08:02:57 +13:00
Garfield69
b2ff7b7091 add bitturk a Turkish Private site. resolves #1415
note: only supports the Classic theme and the English language.
Using the Modern theme will prevent results, and Turkish will prevent upload dates.
2019-02-20 20:30:05 +13:00
Garfield69
f73b55215c newpct: add comments to torznab results. resolves #4730 2019-02-20 12:06:53 +13:00
Garfield69
806eabde31 add torrentProject2 a clone of the original, but without categories. 2019-02-20 09:36:12 +13:00
Garfield69
9538adcc30 yggtorrent: fix category selector. resolves #4725 2019-02-20 06:47:25 +13:00
addisonbabcock
aef7b34ec3 Fixed typo, loose vs lose. (#4728) 2019-02-20 06:40:36 +13:00
Garfield69
13e1548d54 THC: enable imdbid searching for #3866 2019-02-19 20:01:08 +13:00
Garfield69
0c667322d9 Fixed date when language is set to english caused by turkish translation support code 2019-02-19 15:32:23 +13:00
xfouloux
fa9abf2fed Update yggtorrent.yml catid and add sonarr v3 support (#4721)
tidy up things for sonarrv3 season search to work ok !
also changed the catid selector as it is now in #hidden div
2019-02-19 15:28:07 +13:00
lavamuffin
5cd5b5277f Fixed published date on hd4free when language is set to english (#4719)
without the whitespaces days is replaced with dmonths because the turkish word for month is ay
2019-02-19 15:26:46 +13:00
Garfield69
3e97da4c1a hdchina: swith to cookie login method for #4715 2019-02-18 08:02:16 +13:00
Garfield69
610821a435 amigosshare: fix login and switch from http to https. resolves #4714 and #4697 2019-02-17 15:41:29 +13:00
53 changed files with 1376 additions and 425 deletions

View File

@@ -61,6 +61,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* shokweb
* ShowRSS
* SkyTorrentsClone
* SolidTorrents
* sukebei.Nyaa.si
* sukebei-Pantsu
* The Pirate Bay (TPB)
@@ -72,6 +73,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* TorrentFunk
* TorrentGalaxy.org (TGx)
* TorrentKitty
* TorrentProject2
* Torrents.csv
* Torrent9
* Torernt9 clone (torrents9.ch)
@@ -148,6 +150,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* BitsPiracy
* Bitspyder
* BitTorrentFiles [![(invite needed)][inviteneeded]](#)
* BitTurk
* BJ-Share (BJ)
* BlueBird
* Blutopia (BLU)
@@ -271,6 +274,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* PuntoTorrent
* PWTorrents (PWT)
* Racing4Everyone (R4E)
* RacingForMe (RFM)
* Redacted (PassTheHeadphones)
* Red Star Torrent (RST)
* Redtopia (RED)
@@ -334,6 +338,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* TurkTorrent (TT)
* TV Chaos UK (TVCUK)
* TV-Vault
* TVstore
* u-torrents (SceneFZ)
* UHDBits
* Ultimate Gamer Club (UGC)
@@ -359,7 +364,7 @@ It will query all configured indexers and return the combined results.
If your client supports multiple feeds it's recommended to add each indexer directly instead of using the all indexer.
Using the all indexer has no advantages (besides reduced management overhead), only disadvantages:
* you loose control over indexer specific settings (categories, search modes, etc.)
* you lose control over indexer specific settings (categories, search modes, etc.)
* mixing search modes (IMDB, query, etc.) might cause low quality results
* indexer specific categories (>= 100000) can't be used.
* slow indexers will slow down the overall result

View File

@@ -15,11 +15,9 @@
- {id: 10, cat: TV/Anime, desc: "Animation: HD720P"}
- {id: 11, cat: TV/Anime, desc: "Animation: HD1080P"}
- {id: 56, cat: TV/Anime, desc: "Animation: DVDRip"}
- {id: 13, cat: TV/Anime, desc: "Animation: DVD"}
- {id: 18, cat: PC/0day, desc: "Applications: PC"}
- {id: 16, cat: PC/Games, desc: "Applications: Jeux"}
- {id: 19, cat: PC/Phone-Android, desc: "Applications: Android"}
- {id: 38, cat: PC/Phone-IOS, desc: "Applications: Mobile Phone"}
- {id: 17, cat: PC/0day, desc: "Applications: Autres"}
- {id: 67, cat: TV, desc: "Autres: Emission TV"}
- {id: 68, cat: TV/Sport, desc: "Autres: Sport"}
@@ -34,6 +32,7 @@
- {id: 53, cat: Books, desc: "E-Books: Livre Anglais"}
- {id: 52, cat: Books, desc: "E-Books: Revue - Journaux"}
- {id: 51, cat: Books, desc: "E-Books: BD"}
- {id: 95, cat: Movies, desc: "Films: Film Divx XviD"}
- {id: 66, cat: Movies, desc: "Films: VOSTFR"}
- {id: 71, cat: Movies/WEBDL, desc: "Films: WEB-DL"}
- {id: 65, cat: Movies, desc: "Films: VO"}
@@ -49,19 +48,13 @@
- {id: 92, cat: Movies/HD, desc: "Films: 4K"}
- {id: 69, cat: Movies/3D, desc: "Films: Film 3D"}
- {id: 3, cat: Movies/DVD, desc: "Films: DVDRIP"}
- {id: 4, cat: Movies/DVD, desc: "Films: DVD5"}
- {id: 5, cat: Movies/DVD, desc: "Films: DVD9"}
- {id: 91, cat: Movies/HD, desc: "Films: RemuX"}
- {id: 89, cat: Movies/HD, desc: "Films: BD/BR Rip"}
- {id: 88, cat: Movies/BluRay, desc: "Films: Full BD/BR"}
- {id: 77, cat: Other, desc: "GPS: Cartes"}
- {id: 78, cat: Other, desc: "GPS: Radars"}
- {id: 97, cat: Movies, desc: "Films: Cours Métrage"}
- {id: 79, cat: TV/Anime, desc: "Mangas: HD"}
- {id: 80, cat: TV/Anime, desc: "Mangas: HD VO"}
- {id: 81, cat: TV/Anime, desc: "Mangas: HD VOSTFR"}
- {id: 82, cat: TV/Anime, desc: "Mangas: DVDRIP"}
- {id: 83, cat: TV/Anime, desc: "Mangas: DVDRIP VO"}
- {id: 84, cat: TV/Anime, desc: "Mangas: DVDRIP VOSTFR"}
- {id: 85, cat: TV/Anime, desc: "Mangas: Web-DL"}
- {id: 86, cat: TV/Anime, desc: "Mangas: TV-RIP"}
- {id: 75, cat: Audio, desc: "Musique: Concert TVRip"}
@@ -70,6 +63,7 @@
- {id: 22, cat: Audio/MP3, desc: "Musique: Album MP3"}
- {id: 23, cat: Audio/Lossless, desc: "Musique: Album Flac"}
- {id: 64, cat: Audio, desc: "Musique: Mégamix Maison"}
- {id: 96, cat: Audio/MP3, desc: "Musique: PlayList MP3"}
- {id: 94, cat: Audio, desc: "Musique: Podcast"}
- {id: 58, cat: Audio, desc: "Musique: Concert"}
- {id: 93, cat: TV, desc: "Serie TV: Saison VOSTFR"}
@@ -80,6 +74,7 @@
- {id: 73, cat: TV/WEB-DL, desc: "Serie TV: WEB-DL"}
- {id: 7, cat: TV, desc: "Serie TV: Episode FR"}
- {id: 6, cat: TV, desc: "Serie TV: Saison FR"}
- {id: 98, cat: TV/Anime, desc: "Serie TV: Manga VOSTFR"}
modes:
search: [q]

View File

@@ -10,12 +10,24 @@
caps:
categorymappings:
- {id: 2, cat: Console, desc: "Games"}
- {id: 3, cat: Movies, desc: "Movies"}
- {id: 4, cat: Audio, desc: "Music"}
- {id: 9, cat: TV/Anime, desc: " Anime"}
- {id: 17, cat: TV, desc: " TV"}
- {id: 18, cat: PC, desc: "Appz"}
- {id: 65, cat: Books, desc: "Books"}
- {id: 27, cat: Console/NDS, desc: "Games/Nintendo-DS"}
- {id: 28, cat: Console/Other, desc: "Games/Switch"}
- {id: 42, cat: PC/Phone-Android, desc: "Mobile/Android"}
- {id: 44, cat: Movies/UHD, desc: "Movies/4K"}
- {id: 13, cat: Movies/BluRay, desc: "Movies/Bluray"}
- {id: 12, cat: Movies/DVD, desc: "Movies/DVD-R"}
- {id: 14, cat: Movies, desc: "Movies/Packs"}
- {id: 67, cat: Movies/HD, desc: "Movies/x264"}
- {id: 55, cat: Movies/HD, desc: "Movies/X265"}
- {id: 45, cat: Movies, desc: "Movies/Remux"}
- {id: 62, cat: Audio, desc: "Music/Audio"}
- {id: 32, cat: Audio, desc: "Music/Packs"}
- {id: 6, cat: TV, desc: "TV/Packs"}
- {id: 3, cat: TV/HD, desc: "TV/x264"}
- {id: 4, cat: TV/HD, desc: "TV/x265"}
- {id: 8, cat: TV/SD, desc: "TV/Xvid"}
- {id: 63, cat: PC/0day, desc: "Windows/Applications"}
modes:
search: [q]
@@ -80,31 +92,35 @@
size:
selector: td:nth-last-child(6)
files:
selector: td:nth-last-child(9)
selector: a[href^="filelist.php?id="]
grabs:
selector: td:nth-last-child(5)
selector: a[href^="snatches.php?id="]
filters:
- name: replace
args: ["Times", ""]
- name: regexp
args: "(\\d+)"
# 2 flavours of dates
date:
# Today<br />10:20 AM
# Yesterday<br />08:03 PM
# Today<br /> 10:20 AM
# Yesterday<br /> 08:03 PM
optional: true
selector: td:nth-last-child(7):contains("day")
date:
# Feb 14 2019<br />10:20 AM
# Feb 14 2019<br /> 10:20 AM
optional: true
selector: td:nth-last-child(7):not(:contains("day"))
filters:
- name: regex # drop break in between date and time
args: ["(.+?)<[^>]*>(.+?)","$1 $2"]
- name: dateparse
args: "Jan 2 2006 03:04 pm"
seeders:
selector: td:nth-last-child(4)
text: "0"
seeders:
optional: true
selector: a[href$="#seeders"]
leechers:
selector: td:nth-last-child(3)
text: "0"
leechers:
optional: true
selector: a[href$="#leechers"]
downloadvolumefactor:
case:
"b:contains(\"[FREE]\")": "0"

View File

@@ -95,9 +95,9 @@
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech

View File

@@ -67,9 +67,6 @@
path: /
selector: :has(a[href="logout.php"])
download:
selector: a[href^="download.php?id="]
search:
paths:
# http://alein.org/index.php?page=torrents&category=1%3B15%3B41%3B14%3B48%3B39%3B20%3B16%3B5%3B21%3B22%3B11&search=venom&active=1
@@ -81,22 +78,35 @@
active: "1"
rows:
selector: tr.trclass
selector: tr.trclass:not(:has(td.lista-cat-rec))
fields:
title:
selector: td.lista-list a
selector: td a[href*="id="]
details:
selector: td.lista-list a
selector: td a[href*="id="]
attribute: href
category:
selector: td.lista-cat a
selector: td a[href*="category="]
attribute: href
filters:
- name: querystring
args: category
download:
selector: td.lista-list a
selector: td a[href*="id="]
attribute: href
filters:
- name: querystring
args: id
- name: prepend
args: "download.php?id="
- name: append
args: "&f={{.Result.title}}.torrent"
banner:
selector: td a[href*="id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) width="
size:
selector: td:nth-child(6)
seeders:

View File

@@ -6,6 +6,8 @@
type: private
encoding: UTF-8
links:
- https://amigos-share.club/
legacylinks:
- http://amigos-share.club/
caps:
@@ -116,8 +118,7 @@
login:
path: account-login.php
method: form
form: form.form-signin
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"

View File

@@ -95,9 +95,9 @@
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech

View File

@@ -49,7 +49,7 @@
sent: "yes"
returnto: "/"
error:
- selector: table:contains("Login failed!")
- selector: div.error
test:
path: index.php
@@ -61,7 +61,7 @@
- path: browse.php
inputs:
$raw: "{{range .Categories}}filter_cat[{{.}}]=1&{{end}}"
search: "{{ .Query.Keywords }}"
search: "{{if .Keywords}}{{ .Keywords }}{{else}} {{end}}"
rows:
selector: table#torrent_table > tbody > tr:has(a[href^="browse.php?cat="])
fields:

View File

@@ -0,0 +1,167 @@
---
site: bitturk
name: BitTurk
description: "BitTurk is a Turkish Private Torrent Tracker for HD MOVIES / TV / GENERAL. This Indexer is for English only."
language: en-us
type: private
encoding: UTF-8
links:
- http://www.bitturk.net/
caps:
categorymappings:
- {id: 69, cat: Movies, desc: "BiTTuRK Altın"}
- {id: 56, cat: Movies, desc: "BTRG"}
- {id: 57, cat: Movies, desc: "Yerli Dizi"}
- {id: 62, cat: Movies, desc: "Yab@ncı Dizi"}
- {id: 63, cat: Movies, desc: "Türkçe Film"}
- {id: 64, cat: Movies, desc: "Türk Filmi"}
- {id: 66, cat: Movies/HD, desc: "x265"}
- {id: 67, cat: XXX, desc: "XxX"}
- {id: 68, cat: Movies, desc: "Dual (TR-~)"}
- {id: 58, cat: Movies, desc: "Film"}
- {id: 60, cat: Movies/3D, desc: "3D"}
- {id: 45, cat: Movies, desc: "Eğitim / Prog "}
- {id: 1, cat: Movies, desc: "Filmler"}
- {id: 14, cat: Movies/3D, desc: "3D Film"}
- {id: 16, cat: Movies, desc: "Animasyon"}
- {id: 17, cat: TV/Anime, desc: "Anime"}
- {id: 31, cat: Movies, desc: "Belgesel"}
- {id: 32, cat: Movies/BluRay, desc: "Bluray"}
- {id: 33, cat: Movies/BluRay, desc: "BRRiP"}
- {id: 34, cat: Movies, desc: "Çizgi Film"}
- {id: 35, cat: Movies, desc: "D-Z0N3"}
- {id: 36, cat: Movies/DVD, desc: "DVD"}
- {id: 37, cat: Movies, desc: "MP4"}
- {id: 38, cat: Movies, desc: "Türk Filmi"}
- {id: 39, cat: Movies, desc: "Türkçe BoX"}
- {id: 40, cat: Movies, desc: "Türkçe Film"}
- {id: 41, cat: Movies, desc: "ViP"}
- {id: 42, cat: Movies/SD, desc: "XviD"}
- {id: 43, cat: Movies/SD, desc: "XviD BoX"}
- {id: 55, cat: Movies/WEBDL, desc: "WEB-DL"}
- {id: 7, cat: Audio, desc: "Müzik"}
- {id: 20, cat: Audio, desc: "Türkçe MüziK"}
- {id: 46, cat: Audio, desc: "Yab@ncı MüziK"}
- {id: 21, cat: Audio/Video, desc: "Video Klipler"}
- {id: 2, cat: Console, desc: "Oyun"}
- {id: 6, cat: PC, desc: "Program / Misc "}
- {id: 47, cat: Other, desc: "Resimler"}
- {id: 48, cat: TV, desc: "Televizyon"}
- {id: 49, cat: TV/HD, desc: "Tv HD"}
- {id: 50, cat: TV, desc: "Yab@ncı Dizi"}
- {id: 51, cat: TV, desc: "Yerli Dizi"}
- {id: 44, cat: Books, desc: "E-BooK"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: info
type: info
label: Layout
default: "<ol><li>Only the English Classic profile is supported.<li>Make sure to set the <b>Torrent Listing (Listeleme Biçimi)</b> option in your profile to <b>Classic (Klasik)</b><li>And set the <b>Language (Dil)</b> to <b>English</b><li>Using the <i>Modern</i> theme will prevent results, and using <i>Turkish</i> will prevent upload dates.</ol>"
login:
path: ?p=home&pid=1
method: form
form: form#loginbox_form
submitpath: ajax/login.php
inputs:
action: "login"
loginbox_membername: "{{ .Config.username }}"
loginbox_password: "{{ .Config.password }}"
loginbox_remember: 1
loginbox_remember: "true"
selectorinputs:
securitytoken:
selector: "script:contains(\"stKey: \")"
filters:
- name: regexp
args: "stKey: \"(.+?)\","
error:
- selector: ":contains(\"-ERROR-\")"
test:
path: ?p=home&pid=1
selector: a[href*="/?p=logout&"]
search:
paths:
- path: /
keywordsfilters:
- name: re_replace
args: ["[^a-zA-Z0-9]+", "%25"]
inputs:
p: "torrents"
pid: "32"
$raw: "{{range .Categories}}cid[]={{.}}&{{end}}"
keywords: "{{ .Keywords }}"
search_type: "name"
searchin: "title"
error:
- selector: div.error:not(:contains("Gösterilecek sonuç bulunamadı."))
rows:
selector: table#torrents_table_classic tr:has(td.torrent_name)
fields:
title:
selector: a[href*="?p=torrents&pid=10&action=details"]
category:
selector: div.category_image > a
attribute: href
filters:
- name: querystring
args: cid
details:
selector: a[href*="?p=torrents&pid=10&action=details"]
attribute: href
download:
selector: a[href*="?p=torrents&pid=10&action=download"]
attribute: href
date:
optional: true
# Uploaded 30-01-2019 15:02 by
selector: td.torrent_name:not(:contains(" at "))
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: dateparse
args: "02-01-2006 15:04"
date:
optional: true
# Uploaded Friday at 05:11 by
# Uploaded Today at 00:48 by
# Uploaded Yesterday at 23:57 by
selector: td.torrent_name:contains(" at ")
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: replace
args: [" at ", " "]
size:
selector: a[rel="torrent_size"]
seeders:
selector: a[rel="torrent_seeders"]
leechers:
selector: a[rel="torrent_leechers"]
grabs:
selector: a[rel="times_completed"]
banner:
selector: a[rel="fancybox"]
optional: true
attribute: href
downloadvolumefactor:
case:
"img[src$=\"/torrent_free.png\"]": "0.5"
"*": "1"
uploadvolumefactor:
case:
"img[src$=\"/torrent_multiple_upload.png\"]": "2"
"*": "1"

View File

@@ -95,9 +95,9 @@
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech

View File

@@ -94,9 +94,9 @@
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech

View File

@@ -7,7 +7,7 @@
encoding: UTF-8
followredirect: true
links:
- https://www.cpasbiens.cz/
- https://www.cpasbiens.bz/
legacylinks:
- http://www.cpasbiens.cc/
- http://www.cpabien.cm/
@@ -33,6 +33,7 @@
- http://www.cpasbien.io/
- https://www.cpabien.bz/
- https://www.cpabien.link/
- https://www.cpasbiens.cz/
caps:
categorymappings:

View File

@@ -101,9 +101,9 @@
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech

View File

@@ -27,9 +27,9 @@
search:
# site returns just 30 results, attempt to fetch upto 90
paths:
- path: index.php
- path: index.php/page/2/
- path: index.php/page/3/
- path: /
- path: /page/2/
- path: /page/3/
keywordsfilters:
# most ES/ITA TV torrents are in XXxYY format, so we search without S/E prefixes and filter later
- name: re_replace

View File

@@ -50,7 +50,7 @@
active: 0
rows:
selector: tr:has(a[href^="index.php?page=torrent-details"])
selector: tr > td > table > tbody tr:has(a[href^="index.php?page=torrent-details"])
fields:
title:
selector: td a[href^="index.php?page=torrent-details"]

View File

@@ -7,7 +7,7 @@
encoding: UTF-8
followredirect: true
links:
- https://www.gktorrent.tv/
- https://www.gktorrent.cx/
legacylinks:
- https://www.gktorrent.com/
- http://www.gktorrent.com/
@@ -24,6 +24,7 @@
- https://www.gktorrent.me/
- https://www.rantop.org/
- https://www.gktorrent.net/
- https://www.gktorrent.tv/
caps:
categorymappings:
- {id: movies, cat: Movies, desc: "Movies"}

View File

@@ -100,9 +100,9 @@
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0"

View File

@@ -44,19 +44,19 @@
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
method: cookie
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
error:
- selector: td.embedded:has(h2:contains("failed"))
cookie: "{{ .Config.cookie }}"
test:
path: torrents.php

View File

@@ -98,9 +98,9 @@
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech

View File

@@ -26,7 +26,7 @@
- {id: 26, cat: PC/Games, desc: "Games/PC"}
- {id: 38, cat: PC/Phone-Other, desc: "Mobile"}
- {id: 59, cat: Movies/3D, desc: "Movies/3D"}
- {id: 92, cat: Movies/HD, desc: "Movies/4K-UHD"}
- {id: 92, cat: Movies/UHD, desc: "Movies/4K-UHD"}
- {id: 32, cat: Movies/BluRay, desc: "Movies/Blu-Ray"}
- {id: 28, cat: Movies/DVD, desc: "Movies/DVD"}
- {id: 42, cat: Movies/HD, desc: "Movies/HD-x264"}
@@ -79,7 +79,7 @@
incldead: 1
search_by: "{{ if .Query.IMDBID }}imdb{{else}}name{{end}}"
rows:
selector: table.torrenttable > tbody > tr:has(a[title][href^="details.php?id="])
selector: table.table-striped > tbody > tr:has(a[title][href^="details.php?id="])
fields:
title:
selector: a[title][href^="details.php?id="]
@@ -93,13 +93,10 @@
filters:
- name: querystring
args: cat
imdb:
selector: a[title="IMDB"]
attribute: href
banner:
attribute: rel
imdb:
selector: a[href^="http://www.imdb.com/title/"]
selector: a[href*="https://www.imdb.com/title/"]
optional: true
attribute: href
download:
@@ -114,13 +111,10 @@
selector: td:has(a[href$="filelist=1#filelist"])
remove: a
date:
selector: td > span:has(i.fa-clock)
remove: b
selector: td > small:has(i.fa-clock)
filters:
- name: replace
args: ["\xA0", " "]
- name: replace
args: ["Added on ", ""]
- name: replace
args: ["st ", " "]
- name: replace
@@ -129,8 +123,8 @@
args: ["rd ", " "]
- name: replace
args: ["th ", " "]
- name: replace
args: [" by", ""]
- name: regexp
args: "(.+?) by"
- name: append
args: " +02:00"
- name: dateparse
@@ -145,6 +139,3 @@
uploadvolumefactor:
case:
"*": "1"
description:
selector: td:has(a[title][href^="details.php?id="])
remove: a[title][href^="details.php?id="], div, font:contains("Added on")

View File

@@ -142,7 +142,7 @@
- name: re_replace
args: ["([a-zA-Z]+)\\s+(\\d{1,2})\\s+'(\\d{2})", "$2 $1 $3"]
- name: dateparse
args: "02 Jan 06"
args: "2 Jan 06"
downloadvolumefactor:
case:
"*": 1

View File

@@ -11,6 +11,7 @@
- https://nnm-club.name/
certificates:
- 7877113458e90f3643dd28424657a29469f5dc55
- 0edfdcc8cf9f69dbe5473878145cae92504275b0
settings:
- name: username

View File

@@ -76,8 +76,6 @@
autocomplete_toggle: 1
rows:
selector: table#torrent_table tr:not(:first-child)
# filters:
# - name: andmatch
fields:
title:
selector: a[href^="/torrents.php?id="]
@@ -85,10 +83,8 @@
selector: td.cats_col div a
attribute: href
filters:
- name: strdump
- name: regexp
args: "(\\d+)]=1"
- name: strdump
details:
selector: a[href^="/torrents.php?id="]
attribute: href

View File

@@ -132,8 +132,13 @@
selector: td:nth-child(3) a
attribute: href
size:
# 1,36 GB
# 296,98 MB
# 1.018,29 MB
selector: td:nth-child(6)
filters:
- name: replace
args: [".", ""]
- name: replace
args: [",", "."]
seeders:

View File

@@ -105,9 +105,9 @@
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech

View File

@@ -0,0 +1,223 @@
---
site: racingforme
name: RacingForMe
description: "Racing For Me (RFM) is a Private Torrent Tracker for RACING"
language: en-us
type: private
encoding: UTF-8
links:
- https://www.racingfor.me/
caps:
categorymappings:
- {id: 1000, cat: TV/Sport, desc: "Formula 1 - Full races"}
- {id: 1010, cat: TV/Sport, desc: "F1 Full Seasons"}
- {id: 1020, cat: TV/Sport, desc: "F1 Full Season 1950-1980"}
- {id: 1030, cat: TV/Sport, desc: "F1 Full Season 1981-1990"}
- {id: 1040, cat: TV/Sport, desc: "F1 Full Season 1991-2000"}
- {id: 1050, cat: TV/Sport, desc: "F1 Full Season 2001-2010"}
- {id: 1060, cat: TV/Sport, desc: "F1 Full Season 2011-2017"}
- {id: 1070, cat: TV/Sport, desc: "F1 Full Season 2011-2017 (HD)"}
- {id: 2000, cat: TV/Sport, desc: "Formula 1 - Highlights"}
- {id: 2010, cat: TV/Sport, desc: "F1 Highlights 1950-1980"}
- {id: 2020, cat: TV/Sport, desc: "F1 Highlights 1981-1990"}
- {id: 2030, cat: TV/Sport, desc: "F1 Highlights 1991-2000"}
- {id: 2040, cat: TV/Sport, desc: "F1 Highlights 2001-2010"}
- {id: 2050, cat: TV/Sport, desc: "F1 Highlights 2011-2017"}
- {id: 2060, cat: TV/Sport, desc: "F1 Highlights 2011-2017 (HD)"}
- {id: 3000, cat: TV/Sport, desc: "Formula 1 - FP and quali"}
- {id: 3010, cat: TV/Sport, desc: "F1 FP and quali 1950-1980"}
- {id: 3020, cat: TV/Sport, desc: "F1 FP and quali 1981-1990"}
- {id: 3030, cat: TV/Sport, desc: "F1 FP and quali 1991-2000"}
- {id: 3040, cat: TV/Sport, desc: "F1 FP and quali 2001-2010"}
- {id: 3050, cat: TV/Sport, desc: "F1 FP and quali 2011-2017"}
- {id: 3060, cat: TV/Sport, desc: "F1 FP and quali 2011-2017 (HD)"}
- {id: 4000, cat: TV/Sport, desc: "Formula 1 - Onboard"}
- {id: 4010, cat: TV/Sport, desc: "F1 Onboard 1950-1980"}
- {id: 4020, cat: TV/Sport, desc: "F1 Onboard 1981-1990"}
- {id: 4030, cat: TV/Sport, desc: "F1 Onboard 1991-2000"}
- {id: 4040, cat: TV/Sport, desc: "F1 Onboard 2001-2010"}
- {id: 4050, cat: TV/Sport, desc: "F1 Onboard 2011-2017"}
- {id: 5000, cat: TV/Sport, desc: "Formula 1 - Miscellaneous"}
- {id: 5010, cat: TV/Sport, desc: "F1 Misc Documentaries"}
- {id: 5020, cat: TV/Sport, desc: "F1 Misc Driver/team specials"}
- {id: 5030, cat: TV/Sport, desc: "F1 Misc Event specials"}
- {id: 5040, cat: TV/Sport, desc: "F1 Misc Other"}
- {id: 6000, cat: TV/Sport, desc: "Formula 1 - 2018"}
- {id: 6010, cat: TV/Sport, desc: "F1 2018 Free practices"}
- {id: 6020, cat: TV/Sport, desc: "F1 2018 Qualifications"}
- {id: 6030, cat: TV/Sport, desc: "F1 2018 Races"}
- {id: 6040, cat: TV/Sport, desc: "F1 2018 Highlights"}
- {id: 6050, cat: TV/Sport, desc: "F1 2018 Onboards"}
- {id: 6060, cat: TV/Sport, desc: "F1 2018 Other"}
- {id: 7000, cat: TV/Sport, desc: "Formula 1 - 2018 (HD)"}
- {id: 7010, cat: TV/Sport, desc: "F1 2018 (HD) Free practices"}
- {id: 7020, cat: TV/Sport, desc: "F1 2018 (HD) Qualifications"}
- {id: 7030, cat: TV/Sport, desc: "F1 2018 (HD) Races"}
- {id: 7040, cat: TV/Sport, desc: "F1 2018 (HD) Highlights"}
- {id: 7050, cat: TV/Sport, desc: "F1 2018 (HD) Other"}
- {id: 8000, cat: TV/Sport, desc: "Moto3 / Moto2 / MotoGP"}
- {id: 8010, cat: TV/Sport, desc: "Moto 125cc"}
- {id: 8020, cat: TV/Sport, desc: "Moto 250cc"}
- {id: 8030, cat: TV/Sport, desc: "Moto Moto3"}
- {id: 8040, cat: TV/Sport, desc: "Moto Moto2"}
- {id: 8050, cat: TV/Sport, desc: "Moto MotoGP"}
- {id: 9000, cat: TV/Sport, desc: "Motorbikes"}
- {id: 9010, cat: TV/Sport, desc: "Motorbikes AMA"}
- {id: 9020, cat: TV/Sport, desc: "Motorbikes World Supersport"}
- {id: 9030, cat: TV/Sport, desc: "Motorbikes World Superstock"}
- {id: 9040, cat: TV/Sport, desc: "Motorbikes WSBK"}
- {id: 9050, cat: TV/Sport, desc: "Motorbikes BSB"}
- {id: 9060, cat: TV/Sport, desc: "Motorbikes Other"}
- {id: 9070, cat: TV/Sport, desc: "Motorbikes MotoAmerica"}
- {id: 10000, cat: TV/Sport, desc: "Touring cars"}
- {id: 10010, cat: TV/Sport, desc: "Touring cars WTCC"}
- {id: 10020, cat: TV/Sport, desc: "Touring cars DTM"}
- {id: 10030, cat: TV/Sport, desc: "Touring cars V8 Supercars"}
- {id: 10040, cat: TV/Sport, desc: "Touring cars BTCC"}
- {id: 10050, cat: TV/Sport, desc: "Touring cars Porsche Supercup"}
- {id: 10060, cat: TV/Sport, desc: "Touring cars Other"}
- {id: 11000, cat: TV/Sport, desc: "Sports cars"}
- {id: 11010, cat: TV/Sport, desc: "Sports cars BSS"}
- {id: 11020, cat: TV/Sport, desc: "Sports cars Le Mans 24H"}
- {id: 11030, cat: TV/Sport, desc: "Sports cars WSC/WEC"}
- {id: 11040, cat: TV/Sport, desc: "Sports cars IMSA"}
- {id: 11050, cat: TV/Sport, desc: "Sports cars USC"}
- {id: 11070, cat: TV/Sport, desc: "Sports cars BES"}
- {id: 11080, cat: TV/Sport, desc: "Sports cars Super GT"}
- {id: 11090, cat: TV/Sport, desc: "Sports cars IMSA Pilot Challenge"}
- {id: 11060, cat: TV/Sport, desc: "Sports cars Other"}
- {id: 12000, cat: TV/Sport, desc: "American open-wheelers"}
- {id: 12010, cat: TV/Sport, desc: "American open-wheelers CCWS"}
- {id: 12020, cat: TV/Sport, desc: "American open-wheelers IRL"}
- {id: 12030, cat: TV/Sport, desc: "American open-wheelers CART"}
- {id: 12040, cat: TV/Sport, desc: "American open-wheelers Indycar Series"}
- {id: 12050, cat: TV/Sport, desc: "American open-wheelers Indy Lights"}
- {id: 12060, cat: TV/Sport, desc: "American open-wheelers Other"}
- {id: 13000, cat: TV/Sport, desc: "Rally"}
- {id: 13010, cat: TV/Sport, desc: "Rally WRC"}
- {id: 13020, cat: TV/Sport, desc: "Rally ERC"}
- {id: 13030, cat: TV/Sport, desc: "Rally BRC"}
- {id: 13040, cat: TV/Sport, desc: "Rally National series"}
- {id: 13050, cat: TV/Sport, desc: "Rally Enduro-rally"}
- {id: 13060, cat: TV/Sport, desc: "Rally Rally cross"}
- {id: 13070, cat: TV/Sport, desc: "Rally Other"}
- {id: 14000, cat: TV/Sport, desc: "NASCAR / Stockcars"}
- {id: 14010, cat: TV/Sport, desc: "NASCAR Sprint Cup"}
- {id: 14020, cat: TV/Sport, desc: "NASCAR XFINITY Series"}
- {id: 14030, cat: TV/Sport, desc: "NASCAR CW Trucks"}
- {id: 14040, cat: TV/Sport, desc: "NASCAR ARCA"}
- {id: 14050, cat: TV/Sport, desc: "NASCAR Other"}
- {id: 15000, cat: TV/Sport, desc: "F3000 / GP2 / Formula 2"}
- {id: 15010, cat: TV/Sport, desc: "F2 1985-1990"}
- {id: 15020, cat: TV/Sport, desc: "F2 1991-2000"}
- {id: 15030, cat: TV/Sport, desc: "F2 2001-2011"}
- {id: 15040, cat: TV/Sport, desc: "F2 2012-2017"}
- {id: 15050, cat: TV/Sport, desc: "F2 GP2 Asia"}
- {id: 16000, cat: TV/Sport, desc: "Single seaters"}
- {id: 16010, cat: TV/Sport, desc: "Single seaters Formula 2"}
- {id: 16020, cat: TV/Sport, desc: "Single seaters FIA F3"}
- {id: 16030, cat: TV/Sport, desc: "Single seaters GP3"}
- {id: 16040, cat: TV/Sport, desc: "Single seaters WSBR 2.0"}
- {id: 16050, cat: TV/Sport, desc: "Single seaters WSBR 3.5"}
- {id: 16060, cat: TV/Sport, desc: "Single seaters British F3"}
- {id: 16070, cat: TV/Sport, desc: "Single seaters Formula E"}
- {id: 16080, cat: TV/Sport, desc: "Single seaters Other"}
- {id: 17000, cat: TV/Sport, desc: "Other Photographs"}
- {id: 17010, cat: TV/Sport, desc: "Other Formula 1"}
- {id: 17020, cat: TV/Sport, desc: "Other Motorbikes"}
- {id: 17030, cat: TV/Sport, desc: "Other Touring cars"}
- {id: 17040, cat: TV/Sport, desc: "Other Rally"}
- {id: 17050, cat: TV/Sport, desc: "Other Sports cars"}
- {id: 17060, cat: TV/Sport, desc: "Other"}
- {id: 18000, cat: TV/Sport, desc: "Miscellaneous"}
- {id: 18010, cat: TV/Sport, desc: "Documentaries"}
- {id: 18020, cat: TV/Sport, desc: "TV shows"}
- {id: 18030, cat: TV/Sport, desc: "DVD covers"}
- {id: 18040, cat: TV/Sport, desc: "E-books"}
- {id: 18050, cat: TV/Sport, desc: "Other"}
- {id: 19000, cat: TV/Sport, desc: "Other"}
- {id: 19010, cat: TV/Sport, desc: "Drag racing"}
- {id: 19020, cat: TV/Sport, desc: "Truck racing"}
- {id: 19030, cat: TV/Sport, desc: "Off-road"}
- {id: 19040, cat: TV/Sport, desc: "Drifting"}
- {id: 19050, cat: TV/Sport, desc: "Other"}
modes:
search: [q]
login:
path: login
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
rememberme: 1
error:
- selector: div#Error
test:
path: /
selector: a[href="/logout"]
search:
paths:
# only 20 results per page so attempt to fetch 5 pages
# https://www.racingfor.me/search/australia%20f1%202018?c=7000&ob=&offset=20#results
- path: "search/{{if .Keywords}}{{.Keywords}}{{else}}*{{end}}"
- path: "search/{{if .Keywords}}{{.Keywords}}&offset=20{{else}}*?offset=20{{end}}"
- path: "search/{{if .Keywords}}{{.Keywords}}&offset=40{{else}}*?offset=40{{end}}"
- path: "search/{{if .Keywords}}{{.Keywords}}&offset=60{{else}}*?offset=60{{end}}"
- path: "search/{{if .Keywords}}{{.Keywords}}&offset=80{{else}}*?offset=80{{end}}"
rows:
selector: div#torrentBorder
fields:
category:
selector: span.catIcon a
attribute: href
filters:
- name: querystring
args: c
title:
selector: span.browseTitle a
download:
selector: span.browseTitle a
attribute: href
filters:
- name: replace
args: ["/details/", "/download/"]
details:
selector: span.browseTitle a
attribute: href
size:
selector: span.torrentData span.torrentFiles
filters:
- name: regexp
args: "(.+?) in"
files:
selector: span.torrentData span.torrentFiles
filters:
- name: replace
args: [" in > 100", " in 100 file"]
- name: regexp
args: " in (\\d+) file"
seeders:
selector: span.torrentData span.torrentPeers
filters:
- name: regexp
args: "(\\d+) seeder"
leechers:
selector: span.torrentData span.torrentPeers
filters:
- name: regexp
args: "and (\\d+) leecher"
grabs:
selector: span.torrentData span.torrentSnatched
filters:
- name: regexp
args: "(\\d+)"
date:
text: now
downloadvolumefactor:
text: "1"
uploadvolumefactor:
text: "1"

View File

@@ -98,9 +98,9 @@
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0"

View File

@@ -39,13 +39,13 @@
default: Without the itorrents option only magnet links will be provided.
search:
# https://www.skytorrents.lol/?query=mr+mercedes+s02e05&sort=created
# https://www.skytorrents.lol/?search=mr+mercedes+s02e05&sort=created
# https://www.skytorrents.lol/top100
paths:
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created{{else}}top100{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created&page=2{{else}}{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created&page=3{{else}}{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created&page=4{{else}}{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created{{else}}top100{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created&page=2{{else}}{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created&page=3{{else}}{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created&page=4{{else}}{{end}}"
rows:
selector: tr.result
fields:

View File

@@ -0,0 +1,74 @@
---
site: solidtorrents
name: SolidTorrents
description: "SolidTorrents is a Public torrent meta-search engine"
language: en-us
type: public
encoding: UTF-8
links:
- https://solidtorrents.net/
caps:
categories:
"Audio": Audio
"Video": Movies
"Image": Other/Misc
"Document": Books/Comics
"eBook": Books/Ebook
"Program": PC/0day
"Android": PC/Phone-Android
"Archive": Other
"Diskimage": PC/ISO
"Sourcecode": Movies/Other
"Database": Movies/DVD
"Unknown": Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
search:
paths:
# https://solidtorrents.net/search?q=gotham%20s05e02&sort=date&category=all
- path: "search?q={{.Keywords}}&sort=date&category=all"
rows:
selector: div[role="listitem"]:has(a[href^="magnet:?xt="])
fields:
title:
selector: div[class$="__title"] h3
details:
selector: div[class$="__title"] a
attribute: href
download:
selector: a[href^="magnet:?xt="]
attribute: href
category:
selector: div.v-list__tile__content div:nth-of-type(2)
filters:
- name: regexp
args: "(.+?) \\|"
date:
selector: div.v-list__tile__content div:nth-of-type(2)
filters:
- name: replace
args: ["a few", "1"]
- name: replace
args: ["an ", "1 "]
- name: replace
args: ["a ", "1 "]
- name: regexp
args: "(\\d+ \\w+ \\w+)"
seeders:
selector: div.v-list__tile__content div:nth-of-type(3) span:nth-child(1)
leechers:
selector: div.v-list__tile__content div:nth-of-type(3) span:nth-child(2)
size:
selector: div.v-list__tile__content div:nth-of-type(3)
remove: span
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -10,67 +10,13 @@
caps:
categorymappings:
- {id: 41, cat: PC/Phone-Android, desc: "Applications / Android"}
- {id: 42, cat: PC/Phone-IOS, desc: "Applications / iOS"}
- {id: 57, cat: Books/Comics, desc: "Ebooks / Bandes dessinées"}
- {id: 58, cat: XXX, desc: "Ebooks / Bandes dessinées X"}
- {id: 31, cat: Books/Magazines, desc: "Ebooks / Journaux"}
- {id: 32, cat: Books/Ebook, desc: "Ebooks / Livres"}
- {id: 59, cat: Books/Comics, desc: "Ebooks / Manga"}
- {id: 77, cat: Movies/UHD, desc: "Films / 4K rip"}
- {id: 23, cat: Movies, desc: "Films / Animés"}
- {id: 49, cat: Movies/BluRay, desc: "Films / BDrip"}
- {id: 51, cat: Movies/BluRay, desc: "Films / BluRay 1080"}
- {id: 52, cat: Movies/BluRay, desc: "Films / BluRay 4K"}
- {id: 50, cat: Movies/BluRay, desc: "Films / BluRay 720"}
- {id: 19, cat: Movies/BluRay, desc: "Films / BRrip"}
- {id: 74, cat: TV/Documentary, desc: "Films / Documentaires"}
- {id: 20, cat: Movies/DVD, desc: "Films / DVD-R 5"}
- {id: 48, cat: Movies/DVD, desc: "Films / DVD-R 9"}
- {id: 53, cat: Movies/DVD, desc: "Films / DVDrip"}
- {id: 64, cat: Movies/HD, desc: "Films / HDLight 1080"}
- {id: 63, cat: Movies/HD, desc: "Films / HDLight 720"}
- {id: 55, cat: Movies/HD, desc: "Films / HDrip 1080"}
- {id: 54, cat: Movies/HD, desc: "Films / HDrip 720"}
- {id: 60, cat: Movies/HD, desc: "Films / HDTV"}
- {id: 62, cat: Movies/HD, desc: "Films / HDTV 1080"}
- {id: 61, cat: Movies/HD, desc: "Films / HDTV 720"}
- {id: 75, cat: Movies/SD, desc: "Films / VHSrip"}
- {id: 65, cat: Movies/WEBDL, desc: "Films / Web-DL"}
- {id: 67, cat: Movies/WEBDL, desc: "Films / Web-DL 1080"}
- {id: 68, cat: Movies/WEBDL, desc: "Films / Web-DL 4K"}
- {id: 69, cat: Movies/WEBDL, desc: "Films / Web-DL 4K"}
- {id: 66, cat: Movies/WEBDL, desc: "Films / Web-DL 720"}
- {id: 70, cat: Movies/WEBDL, desc: "Films / WEBrip"}
- {id: 72, cat: Movies/WEBDL, desc: "Films / WEBrip 1080"}
- {id: 73, cat: Movies/WEBDL, desc: "Films / WEBrip 4K"}
- {id: 71, cat: Movies/WEBDL, desc: "Films / WEBrip 720"}
- {id: 9, cat: XXX, desc: "Films X"}
- {id: 76, cat: Console/3DS, desc: "Jeux / 3DS"}
- {id: 29, cat: PC/Phone-Android, desc: "Jeux / Android"}
- {id: 12, cat: Console, desc: "Jeux / GameBoy"}
- {id: 45, cat: Console, desc: "Jeux / GameBoy Advance"}
- {id: 30, cat: PC/Phone-IOS, desc: "Jeux / iOS"}
- {id: 46, cat: PC/Mac, desc: "Jeux / Mac"}
- {id: 4, cat: PC/Games, desc: "Jeux / PC "}
- {id: 36, cat: Console/PSP, desc: "Jeux / PS1"}
- {id: 37, cat: Console/PSP, desc: "Jeux / PS2"}
- {id: 33, cat: Console/PS3, desc: "Jeux / PS3"}
- {id: 34, cat: Console/PS4, desc: "Jeux / PS4"}
- {id: 78, cat: Console/Wii, desc: "Jeux / Wii"}
- {id: 38, cat: Console/Xbox, desc: "Jeux / Xbox"}
- {id: 40, cat: Console/Xbox, desc: "Jeux / Xbox One"}
- {id: 39, cat: Console/Xbox 360, desc: "Jeux / Xbox360"}
- {id: 28, cat: PC/Mac, desc: "Logiciels / Apple"}
- {id: 26, cat: PC, desc: "Logiciels / Linux"}
- {id: 27, cat: PC/0day, desc: "Logiciels / Windows"}
- {id: 56, cat: Audio/Lossless, desc: "Musiques / FLAC"}
- {id: 6, cat: Audio/MP3, desc: "Musiques / MP3"}
- {id: 7, cat: TV, desc: "Séries"}
- {id: 44, cat: XXX, desc: "Séries X"}
- {id: 47, cat: TV, desc: "Séries animées"}
- {id: 43, cat: TV/HD, desc: "Séries HD"}
- {id: 0, cat: Other, desc: "Other"}
- {id: 1, cat: Audio, desc: "Musique"}
- {id: 2, cat: Movies, desc: "Film"}
- {id: 3, cat: TV, desc: "Série"}
- {id: 4, cat: Console, desc: "Jeux"}
- {id: 5, cat: Books, desc: "Ebook"}
- {id: 6, cat: PC, desc: "Logiciels"}
- {id: 7, cat: XXX, desc: "Contenu Adulte"}
modes:
search: [q]
@@ -144,8 +90,14 @@
size:
selector: td:nth-child(5)
seeders:
text: "0"
seeders:
optional: true
selector: td:nth-child(6)
leechers:
text: "0"
leechers:
optional: true
selector: td:nth-child(7)
downloadvolumefactor:
case:

View File

@@ -15,7 +15,8 @@
modes:
search: [q]
tv-search: [q, season, ep]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
@@ -55,14 +56,12 @@
paths:
- path: browse.php
inputs:
#$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Query.Keywords }}"
search: "{{if .Query.IMDBID}}{{ .Query.IMDBIDShort }}{{else}}{{ .Keywords }}{{end}}"
incldead: 1
cat: 0
rows:
selector: p + table > tbody > tr:has(a[href^="download.php"]), p + table > tbody > tr:has(a[href^="download.php"]) + tr[id^="kdescr"] # sometimes an unexpected tr[id^="kdescr"] row shows up (for unpublished torrents?)
filters:
- name: andmatch
after: 1
fields:
title:

View File

@@ -1,161 +1,130 @@
---
---
site: theshinning
name: The Shinning
description: "The Shinning (TsH) is a GERMAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: de-de
type: private
encoding: windows-1252
encoding: UTF-8
links:
- https://theshinning.me/
legacylinks:
- https://theshinning.org
- https://theshinning.org/
caps:
categorymappings:
# Filme
- {id: 28, cat: Movies/SD, desc: "HORROR"}
- {id: 25, cat: Movies/DVD, desc: "SD|DVD"}
- {id: 99, cat: Movies/SD, desc: "SD|SPORT"}
- {id: 24, cat: Movies/SD, desc: "SD|x264"}
- {id: 22, cat: Movies/SD, desc: "SD|XVID"}
- {id: 26, cat: XXX, desc: "SD|XxX"}
# High Definition
- {id: 29, cat: Movies/BluRay, desc: "BLURAY"}
- {id: 19, cat: Movies/HD, desc: "HD|1080p"}
- {id: 21, cat: Movies/3D, desc: "HD|3D"}
- {id: 107, cat: Movies/HD, desc: "HD|4K"}
- {id: 20, cat: Movies/HD, desc: "HD|720p"}
- {id: 101, cat: Movies/HD, desc: "HD|REMUX"}
- {id: 100, cat: Movies/HD, desc: "HD|SPORT"}
- {id: 27, cat: XXX, desc: "HD|XxX"}
- {id: 102, cat: Movies/HD, desc: "SMALL|HD"}
# Musik
- {id: 13, cat: Audio, desc: "CHARTS"}
- {id: 31, cat: Audio/Lossless, desc: "FLAC"}
- {id: 97, cat: Audio/Audiobook, desc: "HOERSPIELE"}
- {id: 30, cat: Audio/MP3, desc: "MP3"}
- {id: 106, cat: Audio, desc: "SAMPLER"}
# Releaser
- {id: 18, cat: Movies, desc: "CR3WHD"}
- {id: 16, cat: Movies, desc: "ONKEL JENS"}
- {id: 17, cat: Movies, desc: "xTM|XviD"}
# Serie
- {id: 11, cat: TV/SD, desc: "DVD|SERIEN"}
- {id: 9, cat: TV/HD, desc: "HD|SERIEN"}
- {id: 32, cat: TV, desc: "MIXED|SERIEN"}
- {id: 10, cat: TV, desc: "PACK|SERIEN"}
- {id: 8, cat: TV/SD, desc: "SD|SERIEN"}
- {id: 105, cat: TV, desc: "SMALL|SERIE"}
- {id: 12, cat: TV, desc: "US|SERIEN"}
# Sonstige
- {id: 98, cat: PC, desc: "APPS"}
- {id: 90, cat: TV/Documentary, desc: "DOKUS"}
- {id: 91, cat: Books, desc: "EBOOKS"}
- {id: 14, cat: Movies, desc: "KINOHITS"}
- {id: 15, cat: Other, desc: "REQUEST"}
- {id: 23, cat: Other , desc: "SONSTIGES"}
- {id: 104, cat: XXX/Imageset, desc: "XXX|IMAGE"}
# Spiele
- {id: 96, cat: Console/NDS, desc: "GAMES|NDS"}
- {id: 92, cat: PC/Games, desc: "GAMES|PC"}
- {id: 94, cat: Console/PS4, desc: "GAMES|PS"}
- {id: 95, cat: Console/Wii, desc: "GAMES|WII"}
- {id: 93, cat: Console/Xbox, desc: "GAMES|XBOX"}
# Wrestling
- {id: 3, cat: TV/Sport, desc: "HD|RAW"}
- {id: 1, cat: TV/Sport, desc: "HD|SMACKD"}
- {id: 6, cat: TV/Sport, desc: "NXT"}
- {id: 7, cat: TV/Sport, desc: "PPV"}
- {id: 4, cat: TV/Sport, desc: "SD|RAW"}
- {id: 2, cat: TV/Sport, desc: "SD|SMACKD"}
- {id: 5, cat: TV/Sport, desc: "TNA"}
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: Console, desc: "Games"}
- {id: 5, cat: PC, desc: "Apps"}
- {id: 6, cat: Other, desc: "Misc"}
- {id: 7, cat: XXX, desc: "XXX"}
modes:
search: [q]
tv-search: [q, season, ep]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
login:
path: login.php
path: login
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
selectorinputs:
_token:
selector: meta[name="csrf-token"]
attribute: content
error:
- selector: div.stderr_info_wrap
- selector: form[action$="/login"] .text-red
test:
path: browse.php
selector: img[title="Ratio"] + i
path: /
selector: a[href$="/logout"]
ratio:
path: browse.php
selector: img[title="Ratio"] + i
path: /
selector: span:has(i.fa-sync-alt)
filters:
- name: regexp
args: "Ratio : (\\d+)"
search:
paths:
- path: browse.php
- path: filterTorrents
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Query.Keywords }}"
showsearch: "1"
incldead: "1"
orderby: "added"
sort: "desc"
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
tmdb: ""
mal: ""
sorting: created_at
direction: desc
qty: 100
rows:
# correct selector depends on the "Empfohlene Torrents in der Liste anzeigen" profile option
selector: table.main > tbody > tr:contains("Alle Torrents") + tr > td > table.tableinborder > tbody > tr, div.bro_torr_wrap:not(:contains("Alle Torrents")) > table.tableinborder > tbody > tr
filters:
- name: andmatch
selector: table > tbody > tr
fields:
download:
selector: a[href^="download-ssl.php?torrent="]
attribute: href
title:
selector: div.title_wrap
attribute: title
filters:
- name: replace
args: ["[TsH]", ""]
category:
selector: a[href^="browse.php?cat="]
selector: a[href*="/categories/"]
attribute: href
filters:
- name: querystring
args: cat
- name: regexp
args: "/categories/.*?\\.(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: div.title_wrap > a
selector: a.view-torrent
attribute: href
size:
selector: div.bro_right_ad > b
filters:
- name: replace
args: [".", ""]
- name: replace
args: [",", "."]
grabs:
selector: div.bro_right_ae > b
selector: td:nth-child(5)
seeders:
selector: div.bro_box1_aa > b
selector: td:nth-child(7)
leechers:
selector: div.bro_box_aaa > b
date:
selector: div.bro_box_date > span
selector: td:nth-child(8)
grabs:
selector: td:nth-child(6)
filters:
- name: replace
args: ["\u00a0", " "]
- name: dateparse
args: "02.01.2006 15:04:05"
- name: regexp
args: ([\d\.]+)
date:
selector: time
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portoguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch
- name: re_replace
args: ["(önce|tagasi|geleden|fa|temu|siden|atrás|nazpět|назад|acum|hace|il y a|vor|преди)", "ago"]
- name: re_replace
args: ["(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut)", "minute"]
- name: re_replace
args: ["(dakika|minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
- name: re_replace
args: ["(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur)", "hour"]
- name: re_replace
args: ["(saat|tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
- name: re_replace
args: ["(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден)", "day"]
- name: re_replace
args: ["(gün|päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
- name: re_replace
args: ["(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица)", "week"]
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
span[title="OnlyUp"]: "0"
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
"i[data-original-title=\"Global freeleech\"]": "0" # Global Freeleech
"*": "1"
uploadvolumefactor:
case:
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"*": "1"

View File

@@ -8,6 +8,7 @@
followredirect: true
links:
- https://wvw.torrent9.uno/
- https://wvw.t9.pe/
legacylinks:
- http://www.torrent9.ec/
- http://www.torrent9.red/

View File

@@ -84,8 +84,7 @@
login:
path: torrent/account-login.php
method: form
form: form[action="account-login.php"]
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
@@ -93,7 +92,7 @@
- selector: div.row p.red-text
test:
path: torrent/torrents-search.php
selector: a[href*="logout"]
selector: div.myB-content:contains("Ratio:")
ratio:
path: torrent/torrents-search.php

View File

@@ -6,9 +6,9 @@
type: private
encoding: UTF-8
links:
- https://et8.org/
legacylinks:
- http://et8.org/
legacylinks:
- https://et8.org/
caps:
categorymappings:

View File

@@ -0,0 +1,90 @@
---
site: torrentproject2
name: TorrentProject2
description: "TorrentProject2 is a Public torrent meta-search engine"
language: en-us
type: public
encoding: UTF-8
links:
- https://torrentproject2.se/
caps:
categories:
"video tv": TV
"video dvd": Movies/SD
"Video Dvdrip": Movies/SD
"video hdrip": Movies/HD
"Video Lq": Movies/Foreign
"audio mp3": Audio/MP3
"audio lossless": Audio/Lossless
"video": Movies
"ebooks": Books/Ebook
"Ebooks Comics": Books/Comics
"Ebooks Magazines": Other
"Ebooks Audiobook": Audio/Audiobook
"Ebooks Tutorials": Books/Ebook
"Games PC": PC/Games
"Games Nintendo": Console
"Games PlayStation": Console
"Games XBox": Console/XBox
"Mobile": PC/Phone-Other
"Applications": PC
"Images": Other
"Other": Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: filter-verified
type: checkbox
label: "Only include verifed content in results"
default: false
- name: info
type: info
label: A note about TP2
default: TP2 does not display categories in its search results page. To add to Sonarr or Radarr replace all categories with 7000.
download:
selector: "#download > div:nth-child(2) > div:nth-child(1) > a"
attribute: href
filters:
- name: replace
args: ["https://mylink.me.uk/?url=" ,""]
- name: urldecode
search:
paths:
- path: "?t={{if .Keywords}}{{.Keywords}}{{else}}test{{end}}&orderby=latest{{if .Config.filter-verified }}&safe=on{{else}}{{end}}"
followredirect: true
rows:
selector: "#similarfiles div:has(a[href^=\"/t3-\"])"
fields:
title:
selector: span > a
details:
selector: span > a
attribute: href
download:
selector: span > a
attribute: href
category:
text: "Other"
category:
optional: true
selector: div > span:nth-child(1) > span
date:
selector: div > span:nth-child(4)
size:
selector: div > span:nth-child(5)
seeders:
selector: div > span:nth-child(2)
leechers:
selector: div > span:nth-child(3)
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -6,6 +6,8 @@
type: private
encoding: windows-1252
links:
- https://tsctracker.org/
legacylinks:
- https://tsctracker.net/
caps:
@@ -175,4 +177,4 @@
"*": "1"
uploadvolumefactor:
case:
"*": "1"
"*": "1"

View File

@@ -78,8 +78,13 @@
files:
selector: td:nth-last-child(8)
size:
# 1,36 GB
# 296,98 MB
# 1.018,29 MB
selector: td:nth-last-child(5)
filters:
- name: replace
args: [".", ""]
- name: replace
args: [",", "."]
grabs:

View File

@@ -25,9 +25,6 @@
- https://ygg.to/
- https://www.ygg.to/
- https://ww3.yggtorrent.gg/
caps:
categorymappings:
- {id: 2145, cat: TV, desc: "Film/Vidéo"}
@@ -157,10 +154,15 @@
search:
followredirect: true
keywordsfilters:
# Full season seach hack: Sonarrv3 send 'Series Name SXX' but it won't match 'Series Name - Saison 01' for example so we remove the 'SXX' ==> 'Series Name'
- name: re_replace
args: ["(.*)[sS](\\d{1,4})$", "$1"]
- name: replace
args: ["\"", ""]
paths:
- path: "https://{{ .Config.searchanddlurl }}/engine/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ re_replace .Keywords \"\\s\" \"\"\"\" }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date"
- path: "https://{{ .Config.searchanddlurl }}/engine/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ re_replace .Keywords \"\\s\" \"\"\"\" }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date&page=50"
rows:
selector: "table.table > tbody > tr"
fields:
@@ -177,6 +179,14 @@
filters:
- name: re_replace
args: ["(?i)^(?:(.+?)((?:[\\.\\-\\s_\\[]+(?:imax|(?:dvd|bd|tv)(?:rip|scr)|bluray(?:\\-?rip)?|720\\s*p?|1080\\s*p?|vof?|vost(?:fr)?|multi|vf(?:f|q)?[1-3]?|(?:true)?french|eng?)[\\.\\-\\s_\\]]*)*)([\\(\\[]?(?:20|1[7-9])\\d{2}[\\)\\]]?)(.*)$|(.*))$", "$1 $3 $2 $4 $5"]
# Replace Saison/saison by 'S' to match for Full season search Sonarrv3 and tidy up
- name: re_replace
args: ["([Ss]aison|[Ss]aison )(\\d{1,4})", "S$2"]
- name: re_replace
args: ["S(\\d+)E(\\d+)(\\D+)", "S$1E$2 $3"]
- name: re_replace
args: ["([Mm][Uu][Ll][Tt][Ii])", "MULTi"]
# End tidy up for sonarrv3 season search
- name: replace
args: [".", " "]
- name: trim
@@ -205,62 +215,9 @@
selector: ":nth-child(2) > a"
attribute: href
category:
selector: ":nth-child(2) > a"
case:
"a[href*=\"/filmvidéo/animation/\"]" : 2178
"a[href*=\"/film-video/animation/\"]" : 2178
"a[href*=\"/filmvidéo/animation-série/\"]" : 2179
"a[href*=\"/film-video/animation-serie/\"]" : 2179
"a[href*=\"/filmvidéo/concert/\"]" : 2180
"a[href*=\"/film-video/concert/\"]" : 2180
"a[href*=\"/filmvidéo/documentaire/\"]" : 2181
"a[href*=\"/film-video/documentaire/\"]" : 2181
"a[href*=\"/filmvidéo/emission-tv/\"]" : 2182
"a[href*=\"/film-video/emission-tv/\"]" : 2182
"a[href*=\"/filmvidéo/film/\"]" : 2183
"a[href*=\"/film-video/film/\"]" : 2183
"a[href*=\"/filmvidéo/série-tv/\"]" : 2184
"a[href*=\"/film-video/serie-tv/\"]" : 2184
"a[href*=\"/filmvidéo/spectacle/\"]" : 2185
"a[href*=\"/film-video/spectacle/\"]" : 2185
"a[href*=\"/filmvidéo/sport/\"]" : 2186
"a[href*=\"/film-video/sport/\"]" : 2186
"a[href*=\"/filmvidéo/vidéo-clips/\"]" : 2187
"a[href*=\"/film-video/video-clips/\"]" : 2187
"a[href*=\"/audio/karaoké/\"]" : 2147
"a[href*=\"/audio/musique/\"]" : 2148
"a[href*=\"/audio/podcast-radio/\"]" : 2150
"a[href*=\"/audio/samples/\"]" : 2149
"a[href*=\"/application/autre/\"]" : 2177
"a[href*=\"/application/formation/\"]" : 2176
"a[href*=\"/application/linux/\"]" : 2171
"a[href*=\"/application/macos/\"]" : 2172
"a[href*=\"/application/smartphone/\"]" : 2174
"a[href*=\"/application/tablette/\"]" : 2175
"a[href*=\"/application/windows/\"]" : 2173
"a[href*=\"/jeu-vidéo/autre/\"]" : 2167
"a[href*=\"/jeu-vidéo/linux/\"]" : 2159
"a[href*=\"/jeu-vidéo/macos/\"]" : 2160
"a[href*=\"/jeu-vidéo/microsoft/\"]" : 2162
"a[href*=\"/jeu-vidéo/nintendo/\"]" : 2163
"a[href*=\"/jeu-vidéo/smartphone/\"]" : 2165
"a[href*=\"/jeu-vidéo/sony/\"]" : 2164
"a[href*=\"/jeu-vidéo/tablette/\"]" : 2166
"a[href*=\"/jeu-vidéo/windows/\"]" : 2161
"a[href*=\"/ebook/audio/\"]" : 2151
"a[href*=\"/ebook/bds/\"]" : 2152
"a[href*=\"/ebook/comics/\"]" : 2153
"a[href*=\"/ebook/livres/\"]" : 2154
"a[href*=\"/ebook/mangas/\"]" : 2155
"a[href*=\"/ebook/presse/\"]" : 2156
"a[href*=\"/emulation/emulateurs/\"]" : 2157
"a[href*=\"/emulation/roms/\"]" : 2158
"a[href*=\"/gps/applications/\"]" : 2168
"a[href*=\"/gps/cartes/\"]" : 2169
"a[href*=\"/gps/divers/\"]" : 2170
"a[href*=\"/xxx/films/\"]" : 2189
"a[href*=\"/xxx/hentai/\"]" : 2190
"a[href*=\"/xxx/images/\"]" : 2191
# changed the catid into and hidden div as of last tracker problem
selector: ":nth-child(1) > div.hidden"
comments:
optional: true
selector: "td:nth-child(1) > a[href$=\"#comments\"]"

View File

@@ -1617,23 +1617,22 @@ namespace Jackett.Common.Indexers
queryCollection.Add("t", "0");
queryCollection.Add("submit", "Search");
queryCollection.Add("sr", "topics");
//queryCollection.Add("sr", "posts");
//queryCollection.Add("ch", "99999");
// if the search string is empty use the getnew view
if (string.IsNullOrWhiteSpace(searchString))
{
queryCollection.Add("search_id", "newposts");
//queryCollection.Add("search_id", "newposts");
searchString = "test";
}
else // use the normal search
{
//else // use the normal search
//{
searchString = searchString.Replace("-", " ");
queryCollection.Add("terms", "all");
queryCollection.Add("keywords", searchString);
queryCollection.Add("author", "");
queryCollection.Add("sc", "1");
queryCollection.Add("sf", "titleonly");
}
//}
var searchUrl = SearchUrl + "?" + queryCollection.GetQueryString();
results = await RequestStringWithCookies(searchUrl);

View File

@@ -25,6 +25,10 @@ namespace Jackett.Common.Indexers
{ get { return SiteLink + "browse.php"; } }
private bool TorrentHTTPSMode => configData.TorrentHTTPSMode.Value;
private static readonly string[] certificateHashs = new string[] {
"4482711D19A95CDE01D7958E5F1295E05BCA335D", // Let's Encrypt Authority X3
};
private new ConfigurationDataEliteTracker configData
{
get { return (ConfigurationDataEliteTracker)base.configData; }
@@ -124,6 +128,10 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(65, TorznabCatType.TVSport, "UFC");
AddCategoryMapping(37, TorznabCatType.XXX, "XXX");
foreach (var certificateHash in certificateHashs)
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, certificateHash);
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)

View File

@@ -62,9 +62,9 @@ namespace Jackett.Common.Indexers
private static Uri[] ExtraSiteLinkUris = new Uri[]
{
new Uri("http://torrentrapid.com/"),
new Uri("http://torrentlocura.com/"),
new Uri("http://tumejortorrent.com/"),
new Uri("http://pctnew.com/"),
new Uri("http://torrentlocura.com/"),
};
private static Uri[] LegacySiteLinkUris = new Uri[]
@@ -157,7 +157,7 @@ namespace Jackett.Common.Indexers
links.Add(linkParam.AbsoluteUri);
IEnumerable<Uri> knownUris = (new Uri[] { DefaultSiteLinkUri }).
Concat(ExtraSiteLinkUris).Concat(LegacySiteLinkUris);
Concat(ExtraSiteLinkUris);
foreach (Uri extraSiteUri in knownUris)
{
@@ -178,9 +178,15 @@ namespace Jackett.Common.Indexers
await FollowIfRedirect(results);
var content = results.Content;
Match match = _downloadMatchRegex.Match(content);
if (match.Success)
result = await base.Download(new Uri(match.Groups[0].Value));
if (content != null)
{
Match match = _downloadMatchRegex.Match(content);
if (match.Success)
{
Uri uriLink = new Uri(new Uri(link), match.Groups[0].Value);
result = await base.Download(uriLink);
}
}
}
catch
{
@@ -669,6 +675,7 @@ namespace Jackett.Common.Indexers
result.Size = size;
result.Link = new Uri(detailsUrl);
result.Guid = result.Link;
result.Comments = result.Link;
result.PublishDate = publishDate;
result.Seeders = 1;
result.Peers = 1;

View File

@@ -23,9 +23,9 @@ namespace Jackett.Common.Indexers
"https://polishtracker.net/",
};
private new ConfigurationDataBasicLoginWithRSSAndDisplay configData
private new ConfigurationDataBasicLoginWithEmail configData
{
get { return (ConfigurationDataBasicLoginWithRSSAndDisplay)base.configData; }
get { return (ConfigurationDataBasicLoginWithEmail)base.configData; }
set { base.configData = value; }
}
@@ -38,7 +38,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
configData: new ConfigurationDataBasicLoginWithEmail())
{
Encoding = Encoding.UTF8;
Language = "pl-pl";
@@ -64,7 +64,7 @@ Encoding = Encoding.UTF8;
var pairs = new Dictionary<string, string>
{
{ "email", configData.Username.Value },
{ "email", configData.Email.Value },
{ "pass", configData.Password.Value }
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, SiteLink);
@@ -72,6 +72,8 @@ Encoding = Encoding.UTF8;
await ConfigureIfOK(result.Cookies, result.Cookies != null && result.Cookies.Contains("id="), () =>
{
var errorMessage = result.Content;
if (errorMessage.Contains("Error!"))
errorMessage = "E-mail or password is incorrect";
throw new ExceptionWithConfigData(errorMessage, configData);
});
return IndexerConfigurationStatus.RequiresTesting;

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.Specialized;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Jackett.Common.Models;
@@ -37,12 +38,13 @@ namespace Jackett.Common.Indexers
private DateTime lastTokenFetch;
private string token;
private string app_id;
private bool provideTorrentLink = false;
private readonly TimeSpan TOKEN_DURATION = TimeSpan.FromMinutes(10);
private bool HasValidToken { get { return !string.IsNullOrEmpty(token) && lastTokenFetch > DateTime.Now - TOKEN_DURATION; } }
public Rarbg(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Rarbg(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
: base(name: "RARBG",
description: "RARBG is a Public torrent site for MOVIES / TV / GENERAL",
link: "https://rarbg.to/",
@@ -57,6 +59,10 @@ namespace Jackett.Common.Indexers
Language = "en-us";
Type = "public";
var provideTorrentLinkItem = new ConfigurationData.BoolItem { Value = false };
provideTorrentLinkItem.Name = "Generate torrent download link additionally to magnet (not recommended due to DDoS protection).";
configData.AddDynamic("providetorrentlink", provideTorrentLinkItem);
TorznabCaps.SupportsImdbSearch = true;
webclient.requestDelay = 2.1; // The api has a 1req/2s limit.
@@ -89,6 +95,17 @@ namespace Jackett.Common.Indexers
app_id = "jackett_v" + EnvironmentUtil.JackettVersion;
}
public override void LoadValuesFromJson(JToken jsonConfig, bool useProtectionService = false)
{
base.LoadValuesFromJson(jsonConfig, useProtectionService);
var provideTorrentLinkItem = (ConfigurationData.BoolItem)configData.GetDynamic("providetorrentlink");
if (provideTorrentLinkItem != null)
{
provideTorrentLink = provideTorrentLinkItem.Value;
}
}
private async Task CheckToken()
{
if (!HasValidToken)
@@ -109,7 +126,7 @@ namespace Jackett.Common.Indexers
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
configData.LoadValuesFromJson(configJson);
LoadValuesFromJson(configJson);
var releases = await PerformQuery(new TorznabQuery());
await ConfigureIfOK(string.Empty, releases.Count() > 0, () =>
@@ -210,14 +227,15 @@ namespace Jackett.Common.Indexers
foreach (var item in jsonContent.Value<JArray>("torrent_results"))
{
var release = new ReleaseInfo();
release.Title = item.Value<string>("title");
release.Title = WebUtility.HtmlDecode(item.Value<string>("title"));
release.Category = MapTrackerCatDescToNewznab(item.Value<string>("category"));
release.MagnetUri = new Uri(item.Value<string>("download"));
release.InfoHash = release.MagnetUri.ToString().Split(':')[3].Split('&')[0];
release.Comments = new Uri(item.Value<string>("info_page"));
release.Link = release.Comments; // in case of a torrent download we grab the link from the details page in Download()
if (provideTorrentLink)
release.Link = release.Comments; // in case of a torrent download we grab the link from the details page in Download()
release.Guid = release.MagnetUri;
var episode_info = item.Value<JToken>("episode_info");

View File

@@ -0,0 +1,318 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using CsQuery;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig.Bespoke;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
using Newtonsoft.Json.Linq;
using NLog;
namespace Jackett.Common.Indexers
{
public class TVstore : BaseWebIndexer
{
private string LoginUrl { get { return SiteLink + "takelogin.php"; } }
private string LoginPageUrl { get { return SiteLink + "login.php?returnto=%2F"; } }
private string SearchUrl { get { return SiteLink + "torrent/br_process.php"; } }
private string DownloadUrl { get { return SiteLink + "torrent/download.php"; } }
private string BrowseUrl { get { return SiteLink + "torrent/browse.php"; } }
private List<SeriesDetail> series = new List<SeriesDetail>();
private Regex _searchStringRegex = new Regex(@"(.+?)S0?(\d+)(E0?(\d+))?$", RegexOptions.IgnoreCase);
private new ConfigurationDataTVstore configData
{
get { return (ConfigurationDataTVstore)base.configData; }
set { base.configData = value; }
}
public TVstore(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "TVstore",
description: "TV Store is a HUNGARIAN Private Torrent Tracker for TV",
link: "https://tvstore.me/",
caps: new TorznabCapabilities(),
configService: configService,
client: wc,
logger: l,
p: ps,
configData: new ConfigurationDataTVstore())
{
Encoding = Encoding.UTF8;
Language = "hu-hu";
Type = "private";
AddCategoryMapping(1, TorznabCatType.TV);
AddCategoryMapping(2, TorznabCatType.TVHD);
AddCategoryMapping(3, TorznabCatType.TVSD);
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
var loginPage = await RequestStringWithCookies(LoginPageUrl, string.Empty);
var pairs = new Dictionary<string, string> {
{ "username", configData.Username.Value },
{ "password", configData.Password.Value },
{ "back", "%2F" },
{ "logout", "1"}
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, referer: SiteLink);
await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("Főoldal"), () =>
{
throw new ExceptionWithConfigData("Error while trying to login with: Username: " + configData.Username.Value +
" Password: " + configData.Password.Value, configData);
});
return IndexerConfigurationStatus.RequiresTesting;
}
/// <summary>
/// Parses the torrents from the content
/// </summary>
/// <returns>The parsed torrents.</returns>
/// <param name="results">The result of the query</param>
/// <param name="query">Query.</param>
/// <param name="already_found">Number of the already found torrents.(used for limit)</param>
/// <param name="limit">The limit to the number of torrents to download </param>
async Task<List<ReleaseInfo>> ParseTorrents(WebClientStringResult results, TorznabQuery query, int already_found, int limit)
{
var releases = new List<ReleaseInfo>();
try
{
String content = results.Content;
/* Content Looks like this
* 2\15\2\1\1727\207244\1x08 \[WebDL-720p - Eng - AJP69]\gb\2018-03-09 08:11:53\akció, kaland, sci-fi \0\0\1\191170047\1\0\Anonymous\50\0\0\\0\4\0\174\0\
* 1\ 0\0\1\1727\207243\1x08 \[WebDL-1080p - Eng - AJP69]\gb\2018-03-09 08:11:49\akció, kaland, sci-fi \0\0\1\305729738\1\0\Anonymous\50\0\0\\0\8\0\102\0\0\0\0\1\\\
*/
var splits = content.Split('\\');
int i = 0;
ReleaseInfo release = new ReleaseInfo();
/* Split the releases by '\' and go through them.
* 26 element belongs to one torrent
*/
foreach (var s in splits)
{
switch (i)
{
case 4:
//ID of the series
//Get IMDB id form site series database
SeriesDetail seriesinfo = series.Find(x => x.id.Contains(s));
if (seriesinfo != null && !s.Equals(""))
release.Imdb = long.Parse(seriesinfo.imdbid);
goto default;
case 5:
//ID of the torrent
Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
string fileinfoURL = SearchUrl + "?func=getToggle&id=" + s + "&w=F&pg=0&now=" + unixTimestamp;
string fileinfo = (await RequestStringWithCookiesAndRetry(fileinfoURL)).Content;
release.Link = new Uri(DownloadUrl + "?id=" + s);
release.Guid = release.Link;
release.Comments = release.Link;
string[] fileinf = fileinfo.Split(new string[] { "\\\\" }, StringSplitOptions.None);
if (fileinf.Length > 1)
release.Title = fileinf[1];
goto default;
/*case 6:
Console.WriteLine("Series season/ep =" + s); --> 9x10
goto default;*/
/*case 7:
Console.WriteLine("Releaseinfo =" + s); --->Releaseinfo =[HDTV - Rip - Eng - SVA]
goto default;*/
case 9:
release.PublishDate = DateTime.Parse(s, CultureInfo.InvariantCulture);
goto default;
case 13:
release.Files = int.Parse(s);
goto default;
case 14:
release.Size = long.Parse(s);
goto default;
case 23:
release.Seeders = int.Parse(s);
goto default;
case 24:
release.Peers = (int.Parse(s) + release.Seeders);
goto default;
case 25:
release.Grabs = int.Parse(s);
goto default;
case 26:
/* This is the last element for the torrent. So add it to releases and start parsing to new torrent */
i = 0;
release.Category = new List<int> { TvCategoryParser.ParseTvShowQuality(release.Title) };
//todo Added some basic configuration need to improve it
release.MinimumRatio = 1;
release.MinimumSeedTime = 172800;
release.DownloadVolumeFactor = 1;
release.UploadVolumeFactor = 1;
if ((already_found + releases.Count) < limit)
{
releases.Add(release);
}
else
{
return releases;
}
release = new ReleaseInfo();
break;
default:
i++;
break;
}
}
}
catch (Exception ex)
{
OnParseError(results.Content, ex);
}
return releases;
}
/* Search is possible only based by Series ID.
* All known series ID is on main page, with their attributes. (ID, EngName, HunName, imdbid)
*/
/// <summary>
/// Get all series info known by site
/// These are:
/// - Series ID
/// - Hungarian name
/// - English name
/// - IMDB ID
/// </summary>
/// <returns>The series info.</returns>
protected async Task<Boolean> GetSeriesInfo()
{
var result = (await RequestStringWithCookiesAndRetry(BrowseUrl)).Content;
CQ dom = result;
var scripts = dom["script"];
foreach (var script in scripts)
{
if (script.TextContent.Contains("catsh=Array"))
{
string[] seriesknowbysite = Regex.Split(script.TextContent, "catl");
for (int i = 1; i < seriesknowbysite.Length; i++)
{
try
{
var id = seriesknowbysite[i];
string[] serieselement = id.Split(';');
SeriesDetail sd = new SeriesDetail();
sd.HunName = serieselement[1].Split('=')[1].Trim('\'').ToLower();
sd.EngName = serieselement[2].Split('=')[1].Trim('\'').ToLower();
sd.id = serieselement[0].Split('=')[1].Trim('\'');
sd.imdbid = serieselement[7].Split('=')[1].Trim('\'');
series.Add(sd);
}
catch (IndexOutOfRangeException e)
{ }
}
}
}
return true;
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
/* If series from sites are indexed than we dont need to reindex them. */
if (series == null || series.IsEmpty())
{
await GetSeriesInfo();
}
Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
WebClientStringResult results;
string searchString = "";
var limit = query.Limit;
if (limit == 0)
limit = 100;
/* SearchString format is the following: Seriesname 1X09 */
if (query.SearchTerm != null && !query.SearchTerm.Equals(""))
{
searchString += query.SanitizedSearchTerm;
// convert SnnEnn to nnxnn for dashboard searches
if (query.Season == 0 && (query.Episode == null || query.Episode.Equals("")))
{
Match searchMatch = _searchStringRegex.Match(searchString);
if (searchMatch.Success)
{
query.Season = int.Parse(searchMatch.Groups[2].Value);
query.Episode = searchMatch.Groups[4].Success ? string.Format("{0:00}", (int?)int.Parse(searchMatch.Groups[4].Value)) : null;
searchString = searchMatch.Groups[1].Value; // strip SnnEnn
}
}
if (query.Season != 0)
searchString += " " + query.Season.ToString();
if (query.Episode != null && !query.Episode.Equals(""))
searchString += string.Format("x{0:00}", int.Parse(query.Episode));
} else
{
// if searchquery is empty this is a test, so shorten the response time
limit = 20;
}
/* Search string must be converted to Base64 */
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(searchString);
var base64coded = System.Convert.ToBase64String(plainTextBytes);
/*Start search*/
int page = 1;
string exactSearchURL = SearchUrl + "?gyors=" + base64coded +"&p="+ page +"&now=" + unixTimestamp.ToString();
results = await RequestStringWithCookiesAndRetry(exactSearchURL);
/* Parse page Information from result */
string content = results.Content;
var splits = content.Split('\\');
int maxfounded = int.Parse(splits[0]);
int perpage = int.Parse(splits[1]);
//int incurrentpage = int.Parse(splits[2]);
double pages = Math.Ceiling((double)maxfounded / (double)perpage);
/* First page content is already ready */
releases.AddRange(await ParseTorrents(results, query, releases.Count, limit));
for (page =2;(page<=pages && releases.Count<limit);page++)
{
exactSearchURL = SearchUrl + "?gyors=" + base64coded + "&p=" + page + "&now=" + unixTimestamp.ToString();
results = await RequestStringWithCookiesAndRetry(exactSearchURL);
releases.AddRange(await ParseTorrents(results, query, releases.Count, limit));
}
return releases;
}
}
public class SeriesDetail
{
public string id;
public string HunName;
public string EngName;
public string imdbid;
}
}

View File

@@ -37,19 +37,19 @@ namespace Jackett.Common.Indexers {
Language = "en-us";
Type = "public";
// Dummy mappings for sonarr, radarr, etc
AddCategoryMapping (1, TorznabCatType.TV);
AddCategoryMapping (2, TorznabCatType.Movies);
AddCategoryMapping (3, TorznabCatType.Console);
AddCategoryMapping (4, TorznabCatType.Audio);
AddCategoryMapping (5, TorznabCatType.PC);
AddCategoryMapping (6, TorznabCatType.XXX);
AddCategoryMapping (7, TorznabCatType.Other);
AddCategoryMapping (8, TorznabCatType.Books);
// dummy mappings for sonarr, radarr, etc since torrents.csv doesnt return categories
AddCategoryMapping (1000, TorznabCatType.Console);
AddCategoryMapping (2000, TorznabCatType.Movies);
AddCategoryMapping (3000, TorznabCatType.Audio);
AddCategoryMapping (4000, TorznabCatType.PC);
AddCategoryMapping (5000, TorznabCatType.TV);
AddCategoryMapping (6000, TorznabCatType.XXX);
AddCategoryMapping (7000, TorznabCatType.Other);
AddCategoryMapping (8000, TorznabCatType.Books);
TorznabCaps.SupportsImdbSearch = false;
webclient.requestDelay = 1;
webclient.requestDelay = 0;
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration (JToken configJson) {
@@ -94,31 +94,50 @@ namespace Jackett.Common.Indexers {
// construct magnet link from infohash with all public trackers known to man
string magnet_uri = "magnet:?xt=urn:btih:" + torrent.Value<JToken> ("infohash") +
"&tr=udp://tracker.opentrackr.org:1337/announce" +
"&tr=udp://tracker.leechers-paradise.org:6969" +
"&tr=udp://tracker.coppersurfer.tk:6969/announce" +
"&tr=udp://tracker1.itzmx.com:8080/announce" +
"&tr=udp://explodie.org:6969/announce" +
"&tr=udp://tracker.leechers-paradise.org:6969/announce" +
"&tr=udp://tracker.internetwarriors.net:1337/announce" +
"&tr=udp://tracker.opentrackr.org:1337/announce" +
"&tr=udp://9.rarbg.to:2710/announce" +
"&tr=udp://exodus.desync.com:6969/announce" +
"&tr=udp://tracker.openbittorrent.com:80" +
"&tr=udp://torrent.gresille.org:80/announce" +
"&tr=udp://glotorrents.pw:6969/announce" +
"&tr=http://tracker3.itzmx.com:6961/announce" +
"&tr=udp://tracker.internetwarriors.net:1337/announce" +
"&tr=udp://open.demonii.com:1337/announce" +
"&tr=udp://p4p.arenabg.com:1337";
"&tr=udp://explodie.org:6969/announce" +
"&tr=udp://tracker2.itzmx.com:6961/announce" +
"&tr=udp://tracker1.itzmx.com:8080/announce" +
"&tr=udp://tracker.torrent.eu.org:451/announce" +
"&tr=udp://tracker.tiny-vps.com:6969/announce" +
"&tr=udp://tracker.port443.xyz:6969/announce" +
"&tr=udp://thetracker.org:80/announce" +
"&tr=udp://open.stealth.si:80/announce" +
"&tr=udp://open.demonii.si:1337/announce" +
"&tr=udp://ipv4.tracker.harry.lu:80/announce" +
"&tr=udp://denis.stalker.upeer.me:6969/announce" +
"&tr=udp://tracker1.wasabii.com.tw:6969/announce" +
"&tr=udp://tracker.dler.org:6969/announce" +
"&tr=udp://tracker.cyberia.is:6969/announce" +
"&tr=udp://tracker4.itzmx.com:2710/announce" +
"&tr=udp://tracker.uw0.xyz:6969/announce" +
"&tr=udp://tracker.moeking.me:6969/announce" +
"&tr=udp://retracker.lanta-net.ru:2710/announce" +
"&tr=udp://tracker.nyaa.uk:6969/announce" +
"&tr=udp://tracker.novg.net:6969/announce" +
"&tr=udp://tracker.iamhansen.xyz:2000/announce" +
"&tr=udp://tracker.filepit.to:6969/announce" +
"&tr=udp://tracker.dyn.im:6969/announce" +
"&tr=udp://torrentclub.tech:6969/announce" +
"&tr=udp://tracker.tvunderground.org.ru:3218/announce" +
"&tr=udp://tracker.open-tracker.org:1337/announce" +
"&tr=udp://tracker.justseed.it:1337/announce";
release.MagnetUri = new Uri (magnet_uri);
release.Comments = release.MagnetUri;
release.Guid = release.MagnetUri;
release.InfoHash = torrent.Value<JToken> ("infohash").ToString ();
// convert unix timestamp to human readable date
double createdunix = torrent.Value<int> ("created_unix");
System.DateTime dateTime = new System.DateTime (1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds (createdunix);
release.PublishDate = dateTime;
release.Category = new List<int> { TorznabCatType.Other.ID };
release.Seeders = torrent.Value<int> ("seeders");
release.Peers = torrent.Value<int> ("leechers") + release.Seeders;
release.Size = torrent.Value<long> ("size_bytes");
@@ -128,13 +147,43 @@ namespace Jackett.Common.Indexers {
release.DownloadVolumeFactor = 0;
release.UploadVolumeFactor = 1;
// dummy mappings for sonarr, radarr, etc
string categories = string.Join (";", MapTorznabCapsToTrackers (query));
if (!string.IsNullOrEmpty (categories)) {
if (categories.Contains ("1000")) {
release.Category = new List<int> { TorznabCatType.Console.ID };
}
if (categories.Contains ("2000")) {
release.Category = new List<int> { TorznabCatType.Movies.ID };
}
if (categories.Contains ("3000")) {
release.Category = new List<int> { TorznabCatType.Audio.ID };
}
if (categories.Contains ("4000")) {
release.Category = new List<int> { TorznabCatType.PC.ID };
}
if (categories.Contains ("5000")) {
release.Category = new List<int> { TorznabCatType.TV.ID };
}
if (categories.Contains ("6000")) {
release.Category = new List<int> { TorznabCatType.XXX.ID };
}
if (categories.Contains ("7000")) {
release.Category = new List<int> { TorznabCatType.Other.ID };
}
if (categories.Contains ("8000")) {
release.Category = new List<int> { TorznabCatType.Books.ID };
}
}
// for null category
if (string.IsNullOrEmpty (categories)) {
release.Category = new List<int> { TorznabCatType.Other.ID };
}
releases.Add (release);
}
} catch (Exception ex) {
OnParseError (response.Content, ex);
}
return releases;
}
}

View File

@@ -53,43 +53,49 @@ namespace Jackett.Common.Indexers
configData.DisplayText.Value = "Expect an initial delay (often around 10 seconds) due to XSpeeds CloudFlare DDoS protection";
configData.DisplayText.Name = "Notice";
AddCategoryMapping(70, TorznabCatType.TVAnime); // Anime
AddCategoryMapping(4, TorznabCatType.PC); // Apps
AddCategoryMapping(82, TorznabCatType.PCMac); // Mac
AddCategoryMapping(80, TorznabCatType.AudioAudiobook); // Audiobooks
AddCategoryMapping(66, TorznabCatType.MoviesBluRay); // Blu-Ray
AddCategoryMapping(48, TorznabCatType.Books); // Books Magazines
AddCategoryMapping(68, TorznabCatType.MoviesOther); // Cams/TS
AddCategoryMapping(65, TorznabCatType.TVDocumentary); // Documentaries
AddCategoryMapping(10, TorznabCatType.MoviesDVD); // DVDR
AddCategoryMapping(72, TorznabCatType.MoviesForeign); // Foreign
AddCategoryMapping(74, TorznabCatType.TVOTHER); // Kids
AddCategoryMapping(44, TorznabCatType.TVSport); // MMA
AddCategoryMapping(11, TorznabCatType.Movies); // Movie Boxsets
AddCategoryMapping(12, TorznabCatType.Movies); // Movies
AddCategoryMapping(13, TorznabCatType.Audio); // Music
AddCategoryMapping(15, TorznabCatType.AudioVideo); // Music Videos
AddCategoryMapping(32, TorznabCatType.ConsoleNDS); // NDS Games
AddCategoryMapping(9, TorznabCatType.Other); // Other
AddCategoryMapping(6, TorznabCatType.PCGames); // PC Games
AddCategoryMapping(45, TorznabCatType.Other); // Pictures
AddCategoryMapping(31, TorznabCatType.ConsolePS4); // Playstation
AddCategoryMapping(71, TorznabCatType.TV); // PPV
AddCategoryMapping(54, TorznabCatType.TV); // Soaps
AddCategoryMapping(20, TorznabCatType.TVSport); // Sports
AddCategoryMapping(86, TorznabCatType.TVSport); // MotorSports
AddCategoryMapping(89, TorznabCatType.TVSport); // Olympics 2016
AddCategoryMapping(88, TorznabCatType.TVSport); // World Cup
AddCategoryMapping(83, TorznabCatType.Movies); // TOTM
AddCategoryMapping(21, TorznabCatType.TVSD); // TV Boxsets
AddCategoryMapping(76, TorznabCatType.TVHD); // HD Boxsets
AddCategoryMapping(47, TorznabCatType.TVHD); // TV-HD
AddCategoryMapping(16, TorznabCatType.TVSD); // TV-SD
AddCategoryMapping(7, TorznabCatType.ConsoleWii); // Wii Games
AddCategoryMapping(43, TorznabCatType.TVSport); // Wrestling
AddCategoryMapping(8, TorznabCatType.ConsoleXbox); // Xbox Games
AddCategoryMapping(92, TorznabCatType.MoviesUHD, "4K Movies");
AddCategoryMapping(91, TorznabCatType.TVUHD, "4K TV");
AddCategoryMapping(94, TorznabCatType.TVUHD, "4K TV Boxsets");
AddCategoryMapping(70, TorznabCatType.TVAnime, "Anime");
AddCategoryMapping(4, TorznabCatType.PC, "Apps");
AddCategoryMapping(82, TorznabCatType.PCMac, "Mac");
AddCategoryMapping(80, TorznabCatType.AudioAudiobook, "Audiobooks");
AddCategoryMapping(66, TorznabCatType.MoviesBluRay, "Blu-Ray");
AddCategoryMapping(48, TorznabCatType.Books, "Books Magazines");
AddCategoryMapping(68, TorznabCatType.MoviesOther, "Cams/TS");
AddCategoryMapping(65, TorznabCatType.TVDocumentary, "Documentaries");
AddCategoryMapping(10, TorznabCatType.MoviesDVD, "DVDR");
AddCategoryMapping(72, TorznabCatType.MoviesForeign, "Foreign");
AddCategoryMapping(74, TorznabCatType.TVOTHER, "Kids");
AddCategoryMapping(44, TorznabCatType.TVSport, "MMA");
AddCategoryMapping(11, TorznabCatType.Movies, "Movie Boxsets");
AddCategoryMapping(12, TorznabCatType.Movies, "Movies");
AddCategoryMapping(13, TorznabCatType.Audio, "Music");
AddCategoryMapping(15, TorznabCatType.AudioVideo, "Music Videos");
AddCategoryMapping(32, TorznabCatType.ConsoleNDS, "NDS Games");
AddCategoryMapping(9, TorznabCatType.Other, "Other");
AddCategoryMapping(6, TorznabCatType.PCGames, "PC Games");
AddCategoryMapping(45, TorznabCatType.Other, "Pictures");
AddCategoryMapping(31, TorznabCatType.ConsolePS4, "Playstation");
AddCategoryMapping(71, TorznabCatType.TV, "PPV");
AddCategoryMapping(54, TorznabCatType.TV, "Soaps");
AddCategoryMapping(20, TorznabCatType.TVSport, "Sports");
AddCategoryMapping(86, TorznabCatType.TVSport, "MotorSports");
AddCategoryMapping(89, TorznabCatType.TVSport, "Olympics 2016");
AddCategoryMapping(88, TorznabCatType.TVSport, "World Cup");
AddCategoryMapping(83, TorznabCatType.Movies, "TOTM");
AddCategoryMapping(21, TorznabCatType.TVSD, "TV Boxsets");
AddCategoryMapping(76, TorznabCatType.TVHD, "HD Boxsets");
AddCategoryMapping(47, TorznabCatType.TVHD, "TV-HD");
AddCategoryMapping(16, TorznabCatType.TVSD, "TV-SD");
AddCategoryMapping(7, TorznabCatType.ConsoleWii, "Wii Games");
AddCategoryMapping(43, TorznabCatType.TVSport, "Wrestling");
AddCategoryMapping(8, TorznabCatType.ConsoleXbox, "Xbox Games");
// RSS Textual categories
AddCategoryMapping("4K Movies", TorznabCatType.MoviesUHD);
AddCategoryMapping("4K TV", TorznabCatType.TVUHD);
AddCategoryMapping("4K TV Boxsets", TorznabCatType.TVUHD);
AddCategoryMapping("Anime", TorznabCatType.TVAnime);
AddCategoryMapping("Apps", TorznabCatType.PC);
AddCategoryMapping("Mac", TorznabCatType.PCMac);

View File

@@ -0,0 +1,46 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Jackett.Common.Models.IndexerConfig.Bespoke
{
public class ConfigurationDataTVstore : ConfigurationData
{
public StringItem Username { get; private set; }
public StringItem Password { get; private set; }
public ConfigurationDataTVstore()
{
Username = new StringItem { Name = "Username", Value = "" };
Password = new StringItem { Name = "Password", Value = "" };
}
public ConfigurationDataTVstore(JToken json)
{
ConfigurationDataTVstore configData = new ConfigurationDataTVstore();
dynamic configArray = JsonConvert.DeserializeObject(json.ToString());
foreach (var config in configArray)
{
string propertyName = UppercaseFirst((string)config.id);
switch (propertyName)
{
case "Username":
Username = new StringItem { Name = propertyName, Value = config.value };
break;
case "Password":
Password = new StringItem { Name = propertyName, Value = config.value };
break;
default:
break;
}
}
}
static string UppercaseFirst(string s)
{
if (string.IsNullOrEmpty(s))
return string.Empty;
return char.ToUpper(s[0]) + s.Substring(1);
}
}
}

View File

@@ -0,0 +1,18 @@
namespace Jackett.Common.Models.IndexerConfig
{
public class ConfigurationDataBasicLoginWithEmail : ConfigurationData
{
public StringItem Email { get; private set; }
public StringItem Password { get; private set; }
public DisplayItem Instructions { get; private set; }
public ConfigurationDataBasicLoginWithEmail(string instructionMessageOptional = null)
{
Email = new StringItem { Name = "Email" };
Password = new StringItem { Name = "Password" };
Instructions = new DisplayItem(instructionMessageOptional) { Name = "" };
}
}
}

View File

@@ -62,6 +62,8 @@ namespace Jackett.Common.Models
var parameters = new List<string>() { "q", "season", "ep" };
if (SupportsTVRageSearch)
parameters.Add("rid");
if (SupportsImdbSearch)
parameters.Add("imdbid");
return string.Join(",", parameters);
}
}

View File

@@ -116,6 +116,12 @@ namespace Jackett.Common.Utils.Clients
if (hosts.Contains(request.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
};
}

View File

@@ -150,6 +150,12 @@ namespace Jackett.Common.Utils.Clients
if (hosts.Contains(request.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
};
}

View File

@@ -149,6 +149,12 @@ namespace Jackett.Common.Utils.Clients
if (hosts.Contains(request.RequestUri.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
};