Compare commits

...

56 Commits

Author SHA1 Message Date
Garfield69
e64d7ea947 katcrs: domain change. 2018-10-03 11:43:20 +13:00
Garfield69
8eb0415aaf gktorrent: domain changed. fix #3888 2018-10-03 06:51:04 +13:00
HDVinnie
ef20198a4f (Update) racing4everyone.yml (#3883)
- add Global Double Upload
- add translations
- all credit to @garfield69
2018-09-30 06:47:33 +13:00
HDVinnie
6c6d379002 (Update) btxpress.yml (#3882)
- add Global Double Upload
- add translations
- all credit to @garfield69
2018-09-30 06:47:02 +13:00
HDVinnie
7c2a343629 (Update) redtopia.yml (#3881)
- add translations
- all credit to @garfield69
2018-09-30 06:46:35 +13:00
HDVinnie
ea2e88d6bb (Update) blutopia.yml (#3880)
* (Update) blutopia.yml

- add translations
- all credit to @garfield69

* (Fix) Typo
2018-09-30 06:45:43 +13:00
HDVinnie
abaf909ef1 (Update) blutopia.yml (#3879)
- add Global Double Upload
2018-09-30 06:44:30 +13:00
Garfield69
74054523c5 torrentheaven: domain change. resolves #3870 #3867 2018-09-29 21:22:37 +12:00
Garfield69
37daacf9fa hd4free: translations for date field. resolves #3878 2018-09-29 20:58:20 +12:00
eybox
b58dc51f8d Adding Audio/Music support to the tracker Zamunda.net (#3875)
* Adding Audio/Music support to the tracker

So far it has had only Movies and TV shows, but now I'm also adding Audio/Music support for this tracker

* Update zamundanet.yml
2018-09-27 22:27:58 +12:00
Garfield69
6c661a4974 rarbg: bump delay between http requests from 2.0 to 2.1
to satisfy the api 1req/2s limit.
2018-09-27 15:12:33 +12:00
xfouloux
7a49ddda3a Update yggtorrent.yml to ADD MULTI.ENGLISH (#3874)
* Update yggtorrent.yml to ADD MULTI.ENGLISH

Add the MULTI.ENGLISH option in rewrite MULTI

* fix

removed the comma
2018-09-27 13:24:03 +12:00
Garfield69
5e4cb3581d bt-scene: gone.
if it shows up again we can always add it back.
2018-09-26 20:08:47 +12:00
Garfield69
968c2ca3a6 Merge branch 'master' of https://github.com/Jackett/Jackett 2018-09-26 07:57:44 +12:00
Garfield69
af4fb5c6a0 katcrs: andmatch 2018-09-26 07:57:42 +12:00
Justin Kromlinger
fc7d5a0e35 Update definition for bittorrentfiles.me (#3864) 2018-09-26 07:25:21 +12:00
Garfield69
2a7c693917 possible solve for #3846 part2
make category selector more generic
2018-09-26 07:22:19 +12:00
Garfield69
838ad77d7f magico: possible solve for #3846 2018-09-25 18:27:13 +12:00
Garfield69
3978ba6c04 zooqle: add a missing category 2018-09-25 16:42:29 +12:00
Garfield69
60554c25d9 Merge branch 'master' of https://github.com/Jackett/Jackett 2018-09-25 14:09:31 +12:00
Garfield69
bd03c903d0 horriblesubs: fix #3841 generate a Guid. 2018-09-25 14:09:27 +12:00
halali
113e5d658c Update Trezzor (#3839) 2018-09-24 19:25:17 +10:00
flightlevel
f9b4b5a76c Attempt to handle not found System.Runtime.InteropServices.RuntimeInformation
https://github.com/Jackett/Jackett/issues/3816
2018-09-24 19:24:17 +10:00
Garfield69
2f378210d9 btstornet: added public bt-scene clone 2018-09-24 19:21:43 +12:00
Garfield69
e5de468899 Merge branch 'master' of https://github.com/Jackett/Jackett 2018-09-24 16:18:31 +12:00
Garfield69
204d96bcec speed-share: oops, left out an element. #3836 2018-09-24 16:18:28 +12:00
kaso17
9e37b1429a Myanonamouse: fix relogin 2018-09-23 10:55:42 +02:00
Garfield69
6b61e22f95 speed-share: possible solve for #3836 2018-09-23 10:03:24 +12:00
Garfield69
c3dffe42be rename tgx and skytclone for conformity 2018-09-22 20:05:57 +12:00
Garfield69
796947fd6f torrentcouch: added this public tv tracker. resolves #3797
this site sucks.
the search results contain just the title and details link, no files, seeders, date or other useful details.
and despite search results specifying 720p for example, the details page contains download links for any related quality of the show, its pot luck which is the first  link, it might be SD, 720p, .torrent or magnet, or antyhing else for that matter.
the site is not really suitable for jackett but ive added it for those that want to use it.
2018-09-22 12:40:52 +12:00
Garfield69
77b1da3089 skytorrentsclone: added this clone of the original SkyTorrents tracker. resolves #3103 2018-09-22 10:03:23 +12:00
Garfield69
f3c6acf634 katcrs: added public tracker KickAssTorrent clone. resolves #2828 2018-09-21 21:47:58 +12:00
Garfield69
ab810a20db torrentgalaxyorg: add this public tracker. resolves #3792 2018-09-21 17:36:40 +12:00
Garfield69
60f1be6f18 hd4free: correct cat7 2018-09-21 16:19:34 +12:00
Jonathan
ab6f7d5218 Update ethor.yml (#3834)
- Fix language vfq (French version with voice in Quebec) in sonarr. Sonarr tell episode is in english but episode is in french
- Fix some tv show have space between season number and episode number
2018-09-19 12:51:47 +12:00
Garfield69
67f50e88a3 IdopeClone: replacement clone of Idope which is gone. Resolves #3832 2018-09-19 12:34:03 +12:00
Garfield69
79a354c6d9 hdhome: standardise link and paths 2018-09-18 15:41:42 +12:00
Garfield69
ee20b141da hd4free: prevent updater blowing away new site indexer 2018-09-18 14:33:45 +12:00
HDVinnie
0c67c6322a (Add) hd4free.yml (#3830)
* (Add) hd4free.yml

* (Update) README
2018-09-18 14:31:32 +12:00
Garfield69
99ed3fbc2c horriblesubs: cosmetic change to description
the n-dash does not decoded
2018-09-18 06:52:50 +12:00
kaso17
ef92bf5342 torznab: add padding to imdb 2018-09-17 19:06:53 +02:00
kaso17
053d2be3f3 HorribleSubs: add legacy URL 2018-09-17 18:48:37 +02:00
kaso17
c155bf8c8c Myanonamouse: reset cookies on login 2018-09-17 17:59:21 +02:00
kaso17
e1232800c6 Merge branch 'master' of https://github.com/Jackett/Jackett 2018-09-17 16:43:24 +02:00
kaso17
7a2c0bf260 HTTPWebClient: improve mono relative redirect bug workaround 2018-09-17 16:43:09 +02:00
kevinpawsey
203b5d1e37 AudioBookBay: add indexer (#3820)
* Create audiobookbay.yml

Basics of scraping AudioBookBay.

Will only scrape the first page at the moment, but seems to work ok.

* Update README.md

Added AudioBookBay in Supported Public Trackers

* Update README.md
2018-09-17 16:29:57 +02:00
kaso17
1325fc6391 TorrentDay: update default URL 2018-09-17 15:50:30 +02:00
kaso17
1c3bc3cbf4 UI: fix imdb link generation 2018-09-17 15:39:42 +02:00
Garfield69
8509276972 arabafenice: they are forcing https 2018-09-17 09:17:34 +12:00
Garfield69
e7710489ca nyaa.si: incomplete CA chain from lets encrypt CA provider. #3730 2018-09-16 08:46:03 +12:00
Garfield69
f6a669ea46 yggtorrent: switch to using id for form 2018-09-16 08:20:24 +12:00
Garfield69
68ad01e346 cpabien: new domain www -> ww1 2018-09-16 07:59:21 +12:00
Garfield69
ffda2c8269 gktorrent: they are forcing https 2018-09-16 07:56:12 +12:00
Garfield69
896b2ab954 Merge branch 'master' of https://github.com/Jackett/Jackett 2018-09-15 21:56:01 +12:00
Garfield69
bbcec8103d HorribleSubs: provide missing data
for apps that use Jackett as a proxy, and rely ion the existence of category, size, etc, I've populated the returned results with the missing anime category, and default values for seeders, leechers, size, downloadvolumefactor, and uploadvolumefactor.
2018-09-15 21:55:54 +12:00
Lucas
8f0ba9cefe Update YGGtorrent url (#3803)
* Update YGGtorrent url

* Update yggtorrent.yml
2018-09-15 21:19:13 +12:00
44 changed files with 996 additions and 248 deletions

View File

@@ -24,9 +24,10 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Anidex
* Anime Tosho
* AniRena
* AudioBookBay
* BTstor.net
* btbit
* BTDB
* BT-Scene
* cpasbien
* ETTV
* ExtraTorrent.ag
@@ -35,10 +36,11 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Frozen Layer
* GkTorrent
* Horrible Subs
* Idope
* IdopeClone
* Il Corsaro Nero <!-- maintained by bonny1992 -->
* Il Corsaro Blu
* Isohunt2
* KATcrs
* KickAssTorrent
* KickAssTorrent (thekat.se clone)
* LimeTorrents
@@ -51,13 +53,16 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* RARBG
* RuTor
* ShowRSS
* SkyTorrentsClone
* sukebei.Nyaa.si
* sukebei-Pantsu
* The Pirate Bay
* TNTVillage <!-- maintained by bonny1992 -->
* Tokyo Toshokan
* Torlock
* TorrentCouch
* Torrent Downloads
* TorrentGalaxy.org
* Torrent9
* Torrentz2
* World Wide Torrents
@@ -170,6 +175,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Greek Team
* HacheDe
* Hardbay
* HD4Free (HD4)
* HD-Forever
* HD-Only
* HD-Space

View File

@@ -731,7 +731,7 @@ function updateReleasesRow(row)
labels.empty();
if (IMDBId) {
labels.append('\n<a href="http://www.imdb.com/title/tt' + IMDBId + '/" class="label label-imdb" alt="IMDB" title="IMDB">IMDB</a>');
labels.append('\n<a href="http://www.imdb.com/title/tt' + ("000000" + IMDBId).slice(-7) + '/" class="label label-imdb" alt="IMDB" title="IMDB">IMDB</a>');
}
if (!isNaN(DownloadVolumeFactor)) {

View File

@@ -663,6 +663,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=20180710"></script>
<script type="text/javascript" src="../custom.js?changed=20180711"></script>
</body>
</html>

View File

@@ -135,22 +135,22 @@
selector: a[href^="/download.php"]
attribute: href
files:
selector: td:nth-child(7)
selector: td:nth-child(5)
grabs:
selector: td:nth-child(6)
selector: td:nth-child(4)
size:
selector: td:nth-child(8)
selector: td:nth-child(6)
filters:
- name: replace
args: [".", ""]
- name: replace
args: [",", "."]
seeders:
selector: td:nth-child(3) > a
selector: td:nth-child(2) > a
leechers:
selector: td:nth-child(4)
selector: td:nth-child(3)
date:
selector: td:nth-child(9)
selector: td:nth-child(10)
filters:
- name: split
args: ["by", 0]

View File

@@ -6,6 +6,8 @@
type: private
encoding: UTF-8
links:
- https://www.arabafenice.me/
legacylinks:
- http://www.arabafenice.me/
caps:

View File

@@ -0,0 +1,106 @@
---
site: audiobookbay
name: AudioBookBay
description: "AudioBook Bay (ABB) is a semi-private Torrent Tracker for AUDIOBOOKS"
language: en-us
type: semi-private
encoding: UTF-8
links:
- http://audiobookbay.nl/
- https://audiobookbay.la/
caps:
categorymappings:
- {id: Children, cat: Audio/Audiobook, desc: "Children"}
- {id: Teen & Young Adult, cat: Audio/Audiobook, desc: "Teen & Young Adult"}
- {id: Adults, cat: Audio/Audiobook, desc: "Adults"}
- {id: The Undead, cat: Audio/Audiobook, desc: "The Undead"}
- {id: Action, cat: Audio/Audiobook, desc: "Action"}
- {id: Adventure, cat: Audio/Audiobook, desc: "Adventure"}
- {id: Art, cat: Audio/Audiobook, desc: "Art"}
- {id: Autobiography & Biographies, cat: Audio/Audiobook, desc: "Autobiography & Biographies"}
- {id: Business, cat: Audio/Audiobook, desc: "Business"}
- {id: Computer, cat: Audio/Audiobook, desc: "Computer"}
- {id: Contemporary, cat: Audio/Audiobook, desc: "Contemporary"}
- {id: Crime, cat: Audio/Audiobook, desc: "Crime"}
- {id: Detective, cat: Audio/Audiobook, desc: "Detective"}
- {id: Doctor Who, cat: Audio/Audiobook, desc: "Doctor Who"}
- {id: Education, cat: Audio/Audiobook, desc: "Education"}
- {id: Fantasy, cat: Audio/Audiobook, desc: "Fantasy"}
- {id: General Fiction, cat: Audio/Audiobook, desc: "General Fiction"}
- {id: Historical Fiction, cat: Audio/Audiobook, desc: "Historical Fiction"}
- {id: History, cat: Audio/Audiobook, desc: "History"}
- {id: Horror, cat: Audio/Audiobook, desc: "Horror"}
- {id: Humor, cat: Audio/Audiobook, desc: "Humor"}
- {id: Lecture, cat: Audio/Audiobook, desc: "Lecture"}
- {id: LGBT, cat: Audio/Audiobook, desc: "LGBT"}
- {id: Literature, cat: Audio/Audiobook, desc: "Literature"}
- {id: LitRPG, cat: Audio/Audiobook, desc: "LitRPG"}
- {id: Misc. Non-fiction, cat: Audio/Audiobook, desc: "Misc. Non-fiction"}
- {id: Mystery, cat: Audio/Audiobook, desc: "Mystery"}
- {id: Myth Hunting, cat: Audio/Audiobook, desc: "Myth Hunting"}
- {id: Paranormal, cat: Audio/Audiobook, desc: "Paranormal"}
- {id: Plays & Theater, cat: Audio/Audiobook, desc: "Plays & Theater"}
- {id: Poetry, cat: Audio/Audiobook, desc: "Poetry"}
- {id: Political, cat: Audio/Audiobook, desc: "Political"}
- {id: Postapocalyptic, cat: Audio/Audiobook, desc: "Postapocalyptic"}
- {id: Radio Productions, cat: Audio/Audiobook, desc: "Radio Productions"}
- {id: Romance, cat: Audio/Audiobook, desc: "Romance"}
- {id: Sci-Fi, cat: Audio/Audiobook, desc: "Sci-Fi"}
- {id: Science, cat: Audio/Audiobook, desc: "Science"}
- {id: Self-help, cat: Audio/Audiobook, desc: "Self-help"}
- {id: SHTF, cat: Audio/Audiobook, desc: "SHTF"}
- {id: Spiritual & Religious, cat: Audio/Audiobook, desc: "Spiritual & Religious"}
- {id: Sports, cat: Audio/Audiobook, desc: "Sports"}
- {id: Suspense, cat: Audio/Audiobook, desc: "Suspense"}
- {id: Thriller, cat: Audio/Audiobook, desc: "Thriller"}
- {id: True Crime, cat: Audio/Audiobook, desc: "True Crime"}
- {id: Tutorial, cat: Audio/Audiobook, desc: "Tutorial"}
- {id: Westerns, cat: Audio/Audiobook, desc: "Westerns"}
- {id: Anthology, cat: Audio/Audiobook, desc: "Anthology"}
- {id: Bestsellers, cat: Audio/Audiobook, desc: "Bestsellers"}
- {id: Classic, cat: Audio/Audiobook, desc: "Classic"}
- {id: Documentary, cat: Audio/Audiobook, desc: "Documentary"}
- {id: Full Cast, cat: Audio/Audiobook, desc: "Full Cast"}
- {id: Libertarian, cat: Audio/Audiobook, desc: "Libertarian"}
- {id: Military, cat: Audio/Audiobook, desc: "Military"}
- {id: Novel, cat: Audio/Audiobook, desc: "Novel"}
- {id: Short Story, cat: Audio/Audiobook, desc: "Short Story"}
modes:
search: [s]
login:
path: https://audiobookbay.nl/member/login.php
form: form[action="https://audiobookbay.nl/member/login.php"]
method: post
form: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
login: "Login"
error:
- selector: td.embedded:has(h2:contains("Invalid"))
test:
path: /member/users/
download:
selector: a[href^="/download?"]
attribute: href
search:
paths:
# show members page if no search parameters
- path: /
inputs:
"s": "{{ .Keywords }}"
rows:
selector: div.post
fields:
title:
selector: div.postTitle
details:
selector: div.postTitle
download:
selector: a[href^="/audio-books/"]
attribute: href

View File

@@ -74,12 +74,37 @@
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:
"i[data-original-title=\"100% Free\"]": "0"
"i[data-original-title=\"Global FreeLeech\"]": "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"
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"*": "1"

View File

@@ -1,94 +0,0 @@
---
site: bt-scene
name: BT-Scene
description: "BT-Scene (BTS) is a Public site for MOVIES / TV / GENERAL"
language: us-en
type: public
encoding: UTF-8
links:
- https://bt-scene.cc/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "Series"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: PC/Games, desc: "Games"}
- {id: 5, cat: PC/0day, desc: "Software"}
- {id: 6, cat: TV/Anime, desc: "Anime"}
- {id: 7, cat: Books, desc: "Ebooks"}
- {id: 8, cat: Other, desc: "Misc"}
- {id: 9, cat: XXX, desc: "Porn"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: category
type: select
label: Category
default: "0"
options:
"0" : "All"
"1": "Movies"
"2": "Series"
"3": "Music"
"4": "Games"
"5": "Software"
"6": "Anime"
"7": "Ebooks"
"8": "Misc"
"9": "Porn"
search:
# https://bt-scene.cc/cat/id/1/
# https://bt-scene.cc/results_.php?q=midnight+texas+s01e10&advcat=2
keywordsfilters:
# replace space between keywords with +
- name: re_replace
args: [" ", "+"]
paths:
- path: "{{ if .Keywords }}results_.php?q={{ .Keywords }}&advcat={{ .Config.category }}{{else}}indexfull/{{end}}"
rows:
selector: table.tor > tbody > tr[id^="_"]
filters:
- name: andmatch
fields:
title:
selector: td[class^="tname"] > a
details:
selector: td[class^="tname"] > a
attribute: href
category:
selector: td[class^="tname"] > div.subinfo > a[href^="/cat/id"]
optional: true
attribute: href
filters:
- name: re_replace
args: ["[^\\d+]", ""]
download:
# build "/torrentget.php?id=5730447" from "_5730447"
selector: tr
attribute: id
filters:
- name: replace
args: ["_", ""]
- name: prepend
args: "/torrentget.php?id="
size:
selector: td[class^="tsize"]
seeders:
selector: td[class^="tseeds"]
leechers:
selector: td[class^="tpeers"]
date:
selector: td[class^="ttime"]
filters:
- name: append
args: " ago"
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -0,0 +1,78 @@
---
site: btstornet
name: BTstor.net
description: "BTstor.net is a Public BT-Scene clone for MOVIES / TV / GENERAL"
language: us-en
type: public
encoding: UTF-8
links:
- https://btstor.net/
caps:
categories:
"anime": TV/Anime
"books": Books
"games": PC/Games
"movies": Movies
"music": Audio
"other": Other
"shows": TV
"software": PC
"video": Movies
"xxx": XXX
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
download:
selector: "#dlt_"
search:
# https://btstor.net/
# https://btstor.net/q/midnight+texas+s01e10/date/
keywordsfilters:
# replace space between keywords with +
- name: re_replace
args: [" ", "+"]
paths:
- path: "{{ if .Keywords }}q/{{ .Keywords }}/date/{{else}}/{{end}}"
rows:
selector: table.tor > tbody > tr[class$="_tr"]
filters:
- name: andmatch
fields:
title:
selector: td.tname_index > a
details:
selector: td.tname_index > a
attribute: href
category:
# src="https://btstor.net/templates/btscene/images/shows.png"
selector: td.tname_index > img
attribute: src
filters:
- name: replace
args: [".png", ""]
- name: split
args: ["/", 6]
download:
selector: td.tname_index > a
attribute: href
size:
selector: td.tsize_index
seeders:
selector: td.tseeds_index
leechers:
selector: td.tpeers_index
date:
selector: td.tupd_index
filters:
- name: timeago
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -73,12 +73,37 @@
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:
"i[data-original-title=\"100% Free\"]": "0"
"i[data-original-title=\"Global FreeLeech\"]": "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"
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"*": "1"

View File

@@ -6,7 +6,7 @@
type: public
encoding: UTF-8
links:
- http://www.cpabien.io/
- https://ww1.cpabien.io/
legacylinks:
- http://www.cpasbiens.cc/
- http://www.cpabien.cm/
@@ -21,6 +21,7 @@
- http://cpabien.co/
- http://cpabien.la/
- http://cpabien.club/
- http://www.cpabien.io/
caps:
categorymappings:

View File

@@ -1,4 +1,4 @@
---
---
site: ethor
name: Ethor.net (Thor's Land)
description: "A French gerneral tracker"
@@ -83,6 +83,15 @@
args: ["/details.php", "/download.php"]
title:
selector: a[href^="/details.php"]:has(b)
filters:
- name: replace
args: ["VFQ", "FRENCH"]
- name: replace
args: ["vfq", "FRENCH"]
- name: re_replace
args: ["S(\\d{2}) E(\\d{2})", "S$1E$2"]
- name: re_replace
args: ["S(\\d{1}) E(\\d{2})", "S0$1E$2"]
category:
selector: a[href^="/browse.php?cat="]
attribute: href

View File

@@ -6,13 +6,15 @@
type: public
encoding: UTF-8
links:
- http://ww2.gktorrent.com/
- https://ww3.gktorrent.com/
legacylinks:
- https://www.gktorrent.org/
- http://www.gktorrent.net/
- https://www.gktorrent.com/ # they're forcing http
- http://www.gktorrent.com/
- http://ww1.gktorrent.com/
- http://ww2.gktorrent.com/ # they're forcing https
- https://ww2.gktorrent.com/
caps:
categorymappings:

View File

@@ -0,0 +1,115 @@
---
site: hd4free
name: hd4free
description: "General Tracker Movies/TV/Apps/Games/Music/Books"
language: en-us
type: private
encoding: UTF-8
links:
- https://hd4.xyz/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: Books, desc: "Books"}
- {id: 5, cat: PC/Mac, desc: "Apps"}
- {id: 6, cat: Other, desc: "Other"}
- {id: 7, cat: PC/Games, desc: "Games"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
login:
path: /login
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: table.main:contains("Login Failed!")
test:
path: /torrents
search:
paths:
- path: /filterTorrents
inputs:
$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:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/.*?\\.(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
grabs:
selector: td:nth-child(6)
filters:
- 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:
"i[data-original-title=\"100% Free\"]": "0"
"i[data-original-title=\"Global FreeLeech\"]": "0"
"*": "1"
uploadvolumefactor:
case:
"i[data-original-title=\"Double upload\"]": "2"
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"*": "1"

View File

@@ -6,7 +6,7 @@
type: private
encoding: UTF-8
links:
- https://hdhome.org
- https://hdhome.org/
caps:
categorymappings:
@@ -77,11 +77,11 @@
- selector: td.embedded:has(h2:contains("姿势不正确"))
- selector: td.embedded:has(h2:contains("失败"))
test:
path: /torrents.php
path: torrents.php
search:
paths:
- path: /torrents.php
- path: torrents.php
inputs:
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"

View File

@@ -1,20 +1,18 @@
---
site: idope
name: Idope
description: "iDope is a Public torrent search engine presenting direct magnet links"
site: idopeclone
name: IdopeClone
description: "This Clone of iDope is a Public torrent search engine"
language: en-us
type: public
encoding: UTF-8
links:
- https://idope.cc/
legacylinks:
- https://idope.se/
- https://idope.top/
caps:
categorymappings:
- {id: 0, cat: Other, desc: "Others"}
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: Other, desc: "Video"}
- {id: 2, cat: Other, desc: "Videos"}
- {id: 3, cat: TV, desc: "TV"}
- {id: 4, cat: TV/Anime, desc: "Anime"}
- {id: 5, cat: XXX, desc: "XXX"}
@@ -39,33 +37,36 @@
search:
paths:
# present trending results if there are no search parms supplied
# sort torrent-list by age in descending order
- path: "{{if .Keywords}}torrent-list/{{ .Keywords}}?&o=-3&c={{range .Categories }}{{.}}{{end}}{{else}}browse.html{{end}}"
- path: "{{if .Keywords}}search/{{ .Keywords}}/{{else}}recent-torrents/{{end}}"
rows:
selector: div[class="resultdiv"]
filters:
- name: andmatch
fields:
title:
selector: div[class="resultdivtop"] a div[class="resultdivtopname"]
selector: div[class="resultdivtop"] div[class="resultdivtopname"]
details:
selector: div[class="resultdivbotton"] div[class="magneticdiv"] a
attribute: href
category:
optional: true
selector: div[class="resultdivbotton"] div[class="resultdivbottoncategory"]
selector: div[class="resultdivbotton"] div[class="resultdivbottoncategory"]
case:
":contains(\"Others\")": 0
":contains(\"Other\")": 0
":contains(\"Movies\")": 1
":contains(\"Video\")": 2
":contains(\"TV\")": 3
":contains(\"Anime\")": 4
":contains(\"xxx\")": 5
":contains(\"XXX\")": 5
":contains(\"Adult\")": 5
":contains(\"Music\")": 6
":contains(\"Games\")": 7
":contains(\"Apps\")": 8
":contains(\"Software\")": 8
":contains(\"Books\")": 9
details:
selector: div[class="resultdivtop"] a
attribute: href
download-itorrents:
selector: div[class="resultdivbotton"] div[id^="hideinfohash"]
selector: div[class="resultdivbotton"] div[class="resultseed"] div[class="resultdivbottonseed"]
filters:
- name: toupper
- name: prepend
@@ -80,7 +81,7 @@
- name: validfilename
- name: urlencode
magnet:
selector: div[class="resultdivbotton"] div[id^="hideinfohash"]
selector: div[class="resultdivbotton"] div[class="resultseed"] div[class="resultdivbottonseed"]
filters:
- name: prepend
args: "magnet:?xt=urn:btih:"
@@ -95,9 +96,9 @@
size:
selector: div[class="resultdivbotton"] div[class="resultlength"] div[class="resultdivbottonlength"]
seeders:
selector: div[class="resultdivbotton"] div[class="resultseed"] div[class="resultdivbottonseed"]
files:
selector: div[class="resultdivbotton"] div[class="resultfile"] div[class="resultdivbottonfiles"]
text: "999"
leechers:
text: "999"
downloadvolumefactor:
text: "0"
uploadvolumefactor:

View File

@@ -0,0 +1,74 @@
---
site: katcrs
name: KATcrs
description: "KATcrs is a Public KickAssTorrent clone for TV / MOVIES / GENERAL"
language: en-us
type: public
encoding: UTF-8
links:
- https://kickasskatcr.stream/
legacylinks:
- https://kickasskatcr.website/
caps:
categories:
movies: Movies
TV: TV
Video: TV/WEB-DL
Anime: TV/Anime
Music: Audio
Books: Books
Documentary: TV/Documentary
Games: Console
Apps: PC
Applications: PC
Other: Other
Othero: XXX
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
search:
paths:
- path: "{{ if .Keywords }}search/{{ .Keywords }}/{{else}}new/{{end}}"
rows:
selector: table.data tr.odd
filters:
- name: andmatch
fields:
category:
selector: span.uploader_block strong a
attribute: href
filters:
- name: trim
args: /
title:
selector: td:nth-child(1) div a.cellMainLink
attribute: title
details:
selector: td:nth-child(1) div a.cellMainLink
attribute: href
download:
selector: td:nth-child(1) div div a[data-download=""]
attribute: href
magnet:
selector: td:nth-child(1) div div a[data-nop=""]
attribute: href
size:
selector: td:nth-child(2)
date:
selector: td:nth-child(3)
filters:
- name: timeago
seeders:
selector: td:nth-child(4)
leechers:
selector: td:nth-child(5)
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -11,89 +11,91 @@
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 84, cat: Movies, desc: "N ees (2016, 2017)"}
- {id: 14, cat: Movies/SD, desc: "DVDRip-BDRip-BRRip (e?? 2015) FREE"}
- {id: 16, cat: Movies/SD, desc: "In Avouri (CAM) FREE"}
- {id: 17, cat: Movies/BluRay, desc: "B LU-RAY"}
- {id: 44, cat: Movies, desc: "E English Movies"}
- {id: 76, cat: Movies, desc: "N tokimanter"}
- {id: 82, cat: Movies, desc: "I EATP"}
- {id: 84, cat: Movies, desc: "Movies New (2017, 2018)"}
- {id: 14, cat: Movies/SD, desc: "Movies DVDRip-BDRip-BRRip (up to 2016) FREE"}
- {id: 16, cat: Movies/SD, desc: "Movies (CAM) FREE"}
- {id: 17, cat: Movies/BluRay, desc: "Movies BLU-RAY"}
- {id: 44, cat: Movies, desc: "Movies Greek"}
- {id: 76, cat: Movies, desc: "Movies Documentaries"}
- {id: 82, cat: Movies, desc: "Movies Theater"}
- {id: 52, cat: TV, desc: "series"}
- {id: 53, cat: TV/SD, desc: ", O Enes"}
- {id: 70, cat: TV/HD, desc: "O Enes (720p)"}
- {id: 54, cat: TV, desc: "E English"}
- {id: 86, cat: TV, desc: "O Enes Complete Seasons"}
- {id: 92, cat: TV, desc: "O Enes Complete Seasons (720p)"}
- {id: 87, cat: TV, desc: "E English Complete Seasons"}
- {id: 63, cat: TV, desc: "Y ychagogikes Emissions"}
- {id: 52, cat: TV, desc: "TV Series"}
- {id: 53, cat: TV/SD, desc: "TV Series Foreign"}
- {id: 70, cat: TV/HD, desc: "TV Series Foreign (720p)"}
- {id: 54, cat: TV, desc: "TV Series Greek"}
- {id: 86, cat: TV, desc: "TV Series Foreign Complete Seasons"}
- {id: 92, cat: TV, desc: "TV Series Foreign Complete Seasons (720p)"}
- {id: 87, cat: TV, desc: "TV Series Greek Complete Seasons"}
- {id: 63, cat: TV, desc: "TV Series Recreational"}
- {id: 83, cat: TV/Sport, desc: "TV Sports"}
- {id: 55, cat: Movies, desc: "Children"}
- {id: 38, cat: Movies, desc: "M etaglotismena (Movies)"}
- {id: 39, cat: Movies, desc: "M e Subtitled (Movies)"}
- {id: 93, cat: Movies, desc: "M etaglotismena (Series)"}
- {id: 94, cat: Movies, desc: "M e Subtitled (Series)"}
- {id: 45, cat: Movies, desc: "I absent Anime"}
- {id: 98, cat: Movies, desc: "M etaglotismena 3D"}
- {id: 64, cat: Movies, desc: "M music for Children"}
- {id: 38, cat: Movies, desc: "Children (Movies)"}
- {id: 39, cat: Movies, desc: "Children Subtitled (Movies)"}
- {id: 93, cat: Movies, desc: "Children (TV Series)"}
- {id: 94, cat: Movies, desc: "Children Subtitled (TV Series)"}
- {id: 45, cat: Movies, desc: "Children Anime"}
- {id: 98, cat: Movies, desc: "Children 3D"}
- {id: 64, cat: Movies, desc: "Children Music"}
- {id: 7, cat: Audio, desc: "Foreign music"}
- {id: 21, cat: Audio, desc: "N ees Releases"}
- {id: 46, cat: Audio, desc: "P. Alai Releases"}
- {id: 32, cat: Audio, desc: "D. iskografies"}
- {id: 20, cat: Audio, desc: "In ylloges"}
- {id: 102, cat: Audio, desc: "M AGICO Radio"}
- {id: 81, cat: Audio, desc: "K araoke"}
- {id: 95, cat: Audio, desc: "Soundtrack"}
- {id: 7, cat: Audio, desc: "Music Foreign"}
- {id: 21, cat: Audio, desc: "Music Foreign New Releases"}
- {id: 46, cat: Audio, desc: "Music Foreign Old Releases"}
- {id: 32, cat: Audio, desc: "Music Foreign Discographies"}
- {id: 20, cat: Audio, desc: "Music Foreign Collections"}
- {id: 102, cat: Audio, desc: "Music Foreign MAGICO Radio"}
- {id: 81, cat: Audio, desc: "Music Foreign Karaoke"}
- {id: 95, cat: Audio, desc: "Music Foreign Soundtrack"}
- {id: 47, cat: Audio, desc: "Greek music"}
- {id: 48, cat: Audio, desc: "N ees Releases"}
- {id: 49, cat: Audio, desc: "P. Alai Releases"}
- {id: 51, cat: Audio, desc: "D. iskografies"}
- {id: 50, cat: Audio, desc: "In ylloges"}
- {id: 101, cat: Audio, desc: "M AGICO Radio"}
- {id: 97, cat: Audio, desc: "Live Cd 's"}
- {id: 57, cat: Audio, desc: "P empetika"}
- {id: 58, cat: Audio, desc: "D. imotika"}
- {id: 59, cat: Audio, desc: "K exception of preservatives"}
- {id: 60, cat: Audio, desc: "N isiotika"}
- {id: 62, cat: Audio, desc: "P. ontiaka"}
- {id: 80, cat: Audio, desc: "K araoke"}
- {id: 96, cat: Audio, desc: "Soundtracks"}
- {id: 47, cat: Audio, desc: "Music Greek"}
- {id: 48, cat: Audio, desc: "Music Greek New Releases"}
- {id: 49, cat: Audio, desc: "Music Greek Old Releases"}
- {id: 51, cat: Audio, desc: "Music Greek Discographies"}
- {id: 50, cat: Audio, desc: "Music Greek Collections"}
- {id: 101, cat: Audio, desc: "Music Greek MAGICO Radio"}
- {id: 97, cat: Audio, desc: "Music Greek Live Cd's"}
- {id: 57, cat: Audio, desc: "Music Greek Rebetika"}
- {id: 58, cat: Audio, desc: "Music Greek Primary"}
- {id: 59, cat: Audio, desc: "Music Greek Cretan"}
- {id: 60, cat: Audio, desc: "Music Greek Island"}
- {id: 62, cat: Audio, desc: "Music Greek Pontian"}
- {id: 80, cat: Audio, desc: "Music Greek Karaoke"}
- {id: 96, cat: Audio, desc: "Music Greek Soundtracks"}
- {id: 73, cat: Audio, desc: "seasonal Music"}
- {id: 74, cat: Audio, desc: "X ristougenna"}
- {id: 79, cat: Audio, desc: "P. ascha"}
- {id: 75, cat: Audio, desc: "A pokriatika"}
- {id: 78, cat: Audio, desc: "A Tariff Valentine"}
- {id: 73, cat: Audio, desc: "Music Seasonal"}
- {id: 74, cat: Audio, desc: "Music Seasonal Xmas"}
- {id: 79, cat: Audio, desc: "Music Seasonal Easter"}
- {id: 75, cat: Audio, desc: "Music Seasonal Halloween"}
- {id: 78, cat: Audio, desc: "Music Seasonal Valentines"}
- {id: 33, cat: Books, desc: "Books"}
- {id: 41, cat: Books, desc: "E nglis"}
- {id: 65, cat: Books, desc: "K omix"}
- {id: 43, cat: Books, desc: "P. periods"}
- {id: 72, cat: Books, desc: "P. aidika"}
- {id: 66, cat: Books, desc: "L. exika - Educational"}
- {id: 42, cat: Books, desc: "O enoglossa"}
- {id: 67, cat: Books, desc: "E. Konya-Photos"}
- {id: 41, cat: Books, desc: "Books Greek"}
- {id: 65, cat: Books, desc: "Books Comics"}
- {id: 43, cat: Books, desc: "Books Periodicals"}
- {id: 105, cat: Books, desc: "Books Audio"}
- {id: 72, cat: Books, desc: "Books Children"}
- {id: 66, cat: Books, desc: "Books Educational"}
- {id: 42, cat: Books, desc: "Books Foreign"}
- {id: 67, cat: Books, desc: "Books Photos"}
- {id: 6, cat: PC, desc: "programs"}
- {id: 18, cat: PC/0day, desc: "PC"}
- {id: 40, cat: PC/Phone-Android, desc: "Android"}
- {id: 19, cat: PC/Mac, desc: "Mac"}
- {id: 6, cat: PC, desc: "Programs"}
- {id: 18, cat: PC/0day, desc: "Programs PC"}
- {id: 40, cat: PC/Phone-Android, desc: "Programs Android"}
- {id: 19, cat: PC/Mac, desc: "Programs Mac"}
- {id: 2, cat: PC/Games, desc: "Games"}
- {id: 27, cat: PC/Games, desc: "PC"}
- {id: 68, cat: PC/Phone-Android, desc: "Android"}
- {id: 27, cat: PC/Games, desc: "Games PC"}
- {id: 68, cat: PC/Phone-Android, desc: "Games Android"}
- {id: 88, cat: Other, desc: "Design / Tutorials / Accessories"}
- {id: 89, cat: Other, desc: "Photoshop Tutorials"}
- {id: 91, cat: Other, desc: "Illustrator Tutorials"}
- {id: 90, cat: Other, desc: "After Effects Tutorials"}
- {id: 88, cat: Other, desc: "Tutorials / Design / Accessories"}
- {id: 89, cat: Other, desc: "Tutorials Photoshop"}
- {id: 91, cat: Other, desc: "Tutorials Illustrator"}
- {id: 90, cat: Other, desc: "Tutorials After Effects"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
login:
path: /?p=home&pid=1
@@ -135,7 +137,7 @@
error:
- selector: div#show_error font
rows:
selector: div#content > div.torrent-box[id^="torrent_"]
selector: div#content > div.torrent-box[id^="torrent_"], tr:has(a[href*="?p=torrents&pid=10&action=details"])
filters:
- name: andmatch
fields:
@@ -145,7 +147,7 @@
- name: replace
args: ["Grey's Anatomy", "Greys Anatomy"]
category:
selector: div.categoryImage > a
selector: a[href*="?p=torrents&pid=10&cid="]
attribute: href
filters:
- name: querystring
@@ -157,6 +159,7 @@
selector: a[href*="?p=torrents&pid=10&action=download"]
attribute: href
imdb:
optional: true
selector: a[href^="http://www.imdb.com/title/tt"]
attribute: href
size:
@@ -172,6 +175,7 @@
selector: a[rel="fancybox"]
attribute: href
description:
optional: true
selector: div.torrentDetails > div:has(span.floatright)
downloadvolumefactor:
case:
@@ -217,5 +221,17 @@
args: ["Κυριακή", "Sunday"]
- name: dateparse
args: "02-01-2006 15:04"
date:
# <br /> Uploaded Saturday at 21:09 by
optional: true
selector: td.torrent_name
remove: div, a, span
filters:
- name: replace
args: ["Uploaded ", ""]
- name: replace
args: [" by", ""]
- name: replace
args: ["at ", ""]
- name: dateparse
args: "02-01-2006 15:04"

View File

@@ -7,6 +7,8 @@
encoding: UTF-8
links:
- https://nyaa.si
certificates:
- 3801e330482d4f9baef71ca4e33ba23ede74f59c # incomplete CA chain
settings:
- name: filter-id

View File

@@ -84,12 +84,37 @@
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:
"i[data-original-title=\"100% Free\"]": "0"
"i[data-original-title=\"Global FreeLeech\"]": "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"
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"*": "1"

View File

@@ -77,6 +77,30 @@
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:
"i[data-original-title=\"100% Free\"]": "0"

View File

@@ -0,0 +1,77 @@
---
site: skytorrentsclone
name: SkyTorrentsClone
description: "SkyTorrents.lol is a Public SkyTorrents clone for TV / MOVIES / GENERAL"
language: en-us
type: public
encoding: UTF-8
links:
- https://www.skytorrents.lol/
caps:
categories:
# category=
"album": Audio
"ebook": Books
"movie": Movies
"show": TV
# type=
"audio": Audio
"doc": Books
"games": PC/Games
"software": PC
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
search:
# https://www.skytorrents.lol/?query=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}}"
rows:
selector: tr.result
fields:
title:
selector: td a
category:
# try category=
optional: true
selector: a.label[href*="category="]
category:
# try type=
optional: true
selector: a.label[href*="type="]
details:
selector: td a
attribute: href
download:
selector: a[href^="//itorrents"]
attribute: href
magnet:
selector: a[href^="magnet:?"]
attribute: href
size:
selector: td:nth-child(2)
files:
selector: td:nth-child(3)
date:
# 20 Minutes ago
selector: td:nth-child(4)
filters:
- name: timeago
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -302,13 +302,24 @@
- name: dateparse
args: "02/01/2006 15:04:05"
size:
selector: td:nth-child(5)
# seems size might be floating as the 4th or 5th td so lets try matching the size-unit
optional: true
selector: td.ttable_col2:contains(" GB")
size:
optional: true
selector: td.ttable_col2:contains(" MB")
size:
optional: true
selector: td.ttable_col2:contains(" kB")
size:
optional: true
selector: td.ttable_col2:contains(" B")
grabs:
selector: font[color^=orange]
selector: td.ttable_col1 > font[color^=orange]
seeders:
selector: font[color^=green]
selector: td.ttable_col1 > b > font[color^=green]
leechers:
selector: td.ttable_col1 > font[color^=red]
selector: td.ttable_col2 > font[color^=red]
downloadvolumefactor:
case:
img[src="images/free.gif"]: "0"

View File

@@ -0,0 +1,56 @@
---
site: torrentcouch
name: TorrentCouch
description: "TorrentCounch is a Public TV tracker"
language: en-us
type: public
encoding: UTF-8
links:
- https://torrentcouch.com/
caps:
categorymappings:
- {id: 1, cat: TV, desc: "TV"}
modes:
search: [q]
tv-search: [q, season, ep]
settings: []
download:
selector: tr td a[href*="/files/download/"]
search:
# https://torrentcouch.com/?s=expanse
paths:
- path: /
inputs:
s: "{{.Keywords}}"
rows:
selector: article
fields:
title:
selector: h2 a
category:
text: "1"
details:
selector: h2 a
attribute: href
description:
selector: p
download:
selector: h2 a
attribute: href
size:
text: "500 MB"
seeders:
text: "999"
leechers:
text: "999"
date:
text: now
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -0,0 +1,108 @@
---
site: torrentgalaxyorg
name: TorrentGalaxy.org
description: "TorrentGalaxy.org (TGx) is a Public site for TV / MOVIES / GENERAL"
language: en-us
type: public
encoding: UTF-8
links:
- https://torrentgalaxy.org/
caps:
categorymappings:
- {id: 28, cat: TV/Anime, desc: "Anime - All"}
- {id: 20, cat: PC/Phone-Other, desc: "Apps - Mobile"}
- {id: 19, cat: PC/Mac, desc: "Apps - OS"}
- {id: 21, cat: PC, desc: "Apps - Other"}
- {id: 18, cat: PC/0day, desc: "Apps - Windows"}
- {id: 13, cat: Audio/Audiobook, desc: "Books - Audiobooks"}
- {id: 12, cat: Books/Ebook, desc: "Books - Ebooks"}
- {id: 14, cat: Books/Technical, desc: "Books - Education"}
- {id: 15, cat: Books/Magazines, desc: "Books - Magazine"}
- {id: 9, cat: TV/Documentary, desc: "Documentaries - All"}
- {id: 11, cat: Console, desc: "Games - Console"}
- {id: 43, cat: PC/Phone-Other, desc: "Games - Mobile"}
- {id: 17, cat: Console/Other, desc: "Games - Other"}
- {id: 10, cat: PC/Games , desc: "Games - Windows"}
- {id: 3, cat: Movies/UHD, desc: "Movies - 2K/4K UHD"}
- {id: 46, cat: Movies/Foreign, desc: "Movies - Bollywood"}
- {id: 45, cat: Movies/Other, desc: "Movies - CAM/TS"}
- {id: 42, cat: Movies/HD, desc: "Movies - HD"}
- {id: 4, cat: Movies, desc: "Movies - Packs"}
- {id: 1, cat: Movies/SD, desc: "Movies - SD"}
- {id: 22, cat: Audio, desc: "Music - Albums"}
- {id: 26, cat: Audio, desc: "Music - Discography"}
- {id: 23, cat: Audio/Lossless, desc: "Music - Lossless"}
- {id: 25, cat: Audio/Video, desc: "Music - Musicvideo"}
- {id: 24, cat: Audio, desc: "Music - Singles"}
- {id: 40, cat: Audio/Other, desc: "Other - Other"}
- {id: 37, cat: Other, desc: "Other - Pictures"}
- {id: 33, cat: Other, desc: "Other - Training"}
- {id: 41, cat: TV/HD, desc: "TV - Episodes HD"}
- {id: 5, cat: TV/SD, desc: "TV - Episodes SD"}
- {id: 6, cat: TV/OTHER, desc: "TV - Packs"}
- {id: 7, cat: TV/Sport, desc: "TV - Sports"}
- {id: 35, cat: XXX, desc: "XXX - HD"}
- {id: 47, cat: XXX, desc: "XXX - Misc"}
- {id: 34, cat: XXX, desc: "XXX - SD"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
search:
# https://torrentgalaxy.org/torrents.php?c41=1&search=mercedes+s02e04&lang=0&sort=id&order=desc
path: torrents.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{.Keywords}}"
lang: "0"
sort: "id"
order: "desc"
rows:
selector: div[class="tgxtablerow clickable-row click"]
fields:
title:
selector: div.tgxtablecell:nth-child(3) div a
attribute: title
category:
selector: div.tgxtablecell a
attribute: href
filters:
- name: querystring
args: cat
details:
selector: div.tgxtablecell:nth-child(3) div a
attribute: href
download:
selector: div.tgxtablecell:nth-child(4) a
attribute: href
magnet:
selector: div.tgxtablecell:nth-child(4) a:nth-child(2)
attribute: href
size:
selector: div.tgxtablecell:nth-child(7) span
seeders:
selector: div.tgxtablecell:nth-child(10) span font b
leechers:
selector: div.tgxtablecell:nth-child(10) span font:nth-child(2) b
date:
# 20Mins ago
optional: true
selector: div.tgxtablecell:nth-child(11) small:contains("ago")
filters:
- name: timeago
date:
# 24/12/18 13:55
optional: true
selector: div.tgxtablecell:nth-child(11) small:contains(":")
filters:
- name: dateparse
args: "02/01/06 15:04"
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -62,6 +62,9 @@
search:
paths:
- path: torrents.php
keywordsfilters:
- name: re_replace
args: ["S(\\d{2})E(\\d{2})", "$1 $2"]
inputs:
search: "{{ .Keywords }}"
category: "0"

View File

@@ -6,11 +6,12 @@
type: semi-private
encoding: UTF-8
links:
- https://www.yggtorrent.is/
- https://yggtorrent.to/
legacylinks:
- https://yggtorrent.is/
- https://yggtorrent.com/
- https://ww1.yggtorrent.com/
- https://www.yggtorrent.is/
- https://ww1.yggtorrent.is/
- https://ww2.yggtorrent.is/
- https://ww3.yggtorrent.is/
@@ -113,10 +114,11 @@
FRENCH : "FRENCH"
MULTI.FRENCH: "MULTI.FRENCH"
ENGLISH: "ENGLISH"
MULTI.ENGLISH: "MULTI.ENGLISH"
login:
method: form
path: /
form: form[action$="/user/login"]
form: "#user-login"
inputs:
id: "{{ .Config.username }}"
pass: "{{ .Config.password }}"

View File

@@ -20,6 +20,11 @@
20: Movies/DVD
9: XXX
49: XXX/Other
6: Audio
30: Audio/Other
29: Audio/Other
51: Audio/Other
34: Audio/Lossless
modes:
search: [q]

View File

@@ -13,10 +13,11 @@
"anime": TV/Anime
"app": PC
"book": Books
"files": Other/Misc
"game": PC/Games
"movies": Movies
"music": Audio
"other": Other/Misc
"other": Other
"tv": TV
modes:

View File

@@ -10,7 +10,6 @@ using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
@@ -177,10 +176,9 @@ namespace Jackett.Common.Indexers
//TODO: Remove this section once users have moved off DPAPI
private bool MigratedFromDPAPI(JToken jsonConfig)
{
bool runningOnDotNetCore = RuntimeInformation.FrameworkDescription.IndexOf("core", StringComparison.OrdinalIgnoreCase) >= 0;
bool isWindows = Environment.OSVersion.Platform == PlatformID.Win32NT;
if (!isWindows && runningOnDotNetCore)
if (!isWindows && DotNetCoreUtil.IsRunningOnDotNetCore)
{
// User isn't running Windows, but is running on .NET Core framework, no access to the DPAPI, so don't bother trying to migrate
return false;

View File

@@ -21,11 +21,15 @@ namespace Jackett.Common.Indexers
{
private string ApiEndpoint { get { return SiteLink + "api.php"; } }
public override string[] LegacySiteLinks { get; protected set; } = new string[] {
"http://horriblesubs.info/"
};
public HorribleSubs(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "Horrible Subs",
description: "HorribleSubs &#8211; So bad yet so good",
description: "HorribleSubs - So bad yet so good",
link: "https://horriblesubs.info/",
caps: new TorznabCapabilities(),
caps: new TorznabCapabilities(TorznabCatType.TVAnime),
configService: configService,
client: wc,
logger: l,
@@ -152,9 +156,17 @@ namespace Jackett.Common.Indexers
var release = new ReleaseInfo();
release.Title = string.Format("{0} [480p]", title);
release.PublishDate = releasedate;
release.Link = new Uri(p480.QuerySelector(".hs-torrent-link > a").GetAttribute("href"));
var torrentlink = new Uri(p480.QuerySelector(".hs-torrent-link > a").GetAttribute("href"));
release.Link = torrentlink;
release.Guid = torrentlink;
release.MagnetUri = new Uri(p480.QuerySelector(".hs-magnet-link > a").GetAttribute("href"));
release.Files = 1;
release.Category = new List<int> { TorznabCatType.TVAnime.ID };
release.Size = 524288000;
release.Seeders = 999;
release.Peers = 1998;
release.DownloadVolumeFactor = 0;
release.UploadVolumeFactor = 1;
releases.Add(release);
}
@@ -165,9 +177,17 @@ namespace Jackett.Common.Indexers
var release = new ReleaseInfo();
release.Title = string.Format("{0} [720p]", title);
release.PublishDate = releasedate;
release.Link = new Uri(p720.QuerySelector(".hs-torrent-link > a").GetAttribute("href"));
var torrentlink = new Uri(p720.QuerySelector(".hs-torrent-link > a").GetAttribute("href"));
release.Link = torrentlink;
release.Guid = torrentlink;
release.MagnetUri = new Uri(p720.QuerySelector(".hs-magnet-link > a").GetAttribute("href"));
release.Files = 1;
release.Category = new List<int> { TorznabCatType.TVAnime.ID };
release.Size = 524288000;
release.Seeders = 999;
release.Peers = 1998;
release.DownloadVolumeFactor = 0;
release.UploadVolumeFactor = 1;
releases.Add(release);
}
@@ -178,9 +198,17 @@ namespace Jackett.Common.Indexers
var release = new ReleaseInfo();
release.Title = string.Format("{0} [1080p]", title);
release.PublishDate = releasedate;
release.Link = new Uri(p1080.QuerySelector(".hs-torrent-link > a").GetAttribute("href"));
var torrentlink = new Uri(p1080.QuerySelector(".hs-torrent-link > a").GetAttribute("href"));
release.Link = torrentlink;
release.Guid = torrentlink;
release.MagnetUri = new Uri(p1080.QuerySelector(".hs-magnet-link > a").GetAttribute("href"));
release.Files = 1;
release.Category = new List<int> { TorznabCatType.TVAnime.ID };
release.Size = 524288000;
release.Seeders = 999;
release.Peers = 1998;
release.DownloadVolumeFactor = 0;
release.UploadVolumeFactor = 1;
releases.Add(release);
}

View File

@@ -133,7 +133,9 @@ namespace Jackett.Common.Indexers
{ "returnto", "/" }
};
var preRequest = await RequestStringWithCookiesAndRetry(LoginUrl, string.Empty);
configData.CookieHeader.Cookie = ""; // cookie reset needed in order to relogin
var preRequest = await RequestStringWithCookiesAndRetry(LoginUrl);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, preRequest.Cookies, true, SearchUrl, SiteLink);
await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("Search Results"), () =>
@@ -180,7 +182,7 @@ namespace Jackett.Common.Indexers
}
var response = await RequestStringWithCookiesAndRetry(urlSearch);
if (response.Status == System.Net.HttpStatusCode.Forbidden || CookieHeader.Contains("pass=deleted"))
if (response.Status == System.Net.HttpStatusCode.Forbidden || CookieHeader.Contains("pass=deleted") || response.Content.Contains("Access limits exceeded."))
{
// re-login
await ApplyConfiguration(null);

View File

@@ -59,7 +59,7 @@ namespace Jackett.Common.Indexers
TorznabCaps.SupportsImdbSearch = true;
webclient.requestDelay = 2.0; // 0.5 requests per second (2 causes problems)
webclient.requestDelay = 2.1; // The api has a 1req/2s limit.
AddCategoryMapping(4, TorznabCatType.XXX, "XXX (18+)");
AddCategoryMapping(14, TorznabCatType.MoviesSD, "Movies/XVID");

View File

@@ -52,7 +52,7 @@ namespace Jackett.Common.Indexers
public TorrentDay(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "TorrentDay",
description: "TorrentDay (TD) is a Private site for TV / MOVIES / GENERAL",
link: "https://www.torrentday.it/",
link: "https://td.getcrazy.me/",
caps: TorznabUtil.CreateDefaultTorznabTVCaps(),
configService: configService,
client: wc,

View File

@@ -19,9 +19,15 @@ namespace Jackett.Common.Indexers
{
public class TorrentHeaven : BaseWebIndexer
{
public override string[] LegacySiteLinks { get; protected set; } = new string[] {
"https://torrentheaven.myfqdn.info/",
};
private string IndexUrl { get { return SiteLink + "index.php"; } }
private string LoginCompleteUrl { get { return SiteLink + "index.php?strWebValue=account&strWebAction=login_complete&ancestry=verify"; } }
private static readonly string certificateHash = "6F5CE30D578C2A7AECFB919D0D013976D395055F";
private static readonly string[] certificateHashs = new string[] {
"6F5CE30D578C2A7AECFB919D0D013976D395055F",
"66096DB5FD0107E4FFBAF5EC8378EB235CADA909",
};
private new ConfigurationDataCaptchaLogin configData
{
@@ -32,7 +38,7 @@ namespace Jackett.Common.Indexers
public TorrentHeaven(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "TorrentHeaven",
description: "A German general tracker.",
link: "https://torrentheaven.myfqdn.info/",
link: "https://newheaven.nl/",
caps: TorznabUtil.CreateDefaultTorznabTVCaps(),
configService: configService,
client: wc,
@@ -92,7 +98,8 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(70, TorznabCatType.PC, "APPLICATIONS/Linux");
AddCategoryMapping(71, TorznabCatType.PCMac, "APPLICATIONS/Mac");
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, certificateHash);
foreach (var certificateHash in certificateHashs)
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, certificateHash);
}
public override async Task<ConfigurationData> GetConfigurationForSetup()

View File

@@ -81,7 +81,7 @@ namespace Jackett.Common.Models
getTorznabElement("magneturl", r.MagnetUri),
getTorznabElement("rageid", r.RageID),
getTorznabElement("thetvdb", r.TVDBId),
getTorznabElement("imdb", r.Imdb),
getTorznabElement("imdb", r.Imdb == null ? null : ((long)r.Imdb).ToString("D7")),
getTorznabElement("seeders", r.Seeders),
getTorznabElement("peers", r.Peers),
getTorznabElement("infohash", r.InfoHash),

View File

@@ -261,7 +261,10 @@ namespace Jackett.Common.Utils.Clients
// URL decoding apparently is needed to, without it e.g. Demonoid download is broken
// TODO: is it always needed (not just for relative redirects)?
var newRedirectingTo = WebUtilityHelpers.UrlDecode(result.RedirectingTo, webRequest.Encoding);
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host);
if (newRedirectingTo.StartsWith("file:////")) // Location without protocol but with host (only add scheme)
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + ":");
else
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host);
logger.Debug("[MONO relative redirect bug] Rewriting relative redirect URL from " + result.RedirectingTo + " to " + newRedirectingTo);
result.RedirectingTo = newRedirectingTo;
}

View File

@@ -281,7 +281,10 @@ namespace Jackett.Common.Utils.Clients
// URL decoding apparently is needed to, without it e.g. Demonoid download is broken
// TODO: is it always needed (not just for relative redirects)?
var newRedirectingTo = WebUtilityHelpers.UrlDecode(result.RedirectingTo, webRequest.Encoding);
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host);
if (newRedirectingTo.StartsWith("file:////")) // Location without protocol but with host (only add scheme)
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + ":");
else
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host);
logger.Debug("[MONO relative redirect bug] Rewriting relative redirect URL from " + result.RedirectingTo + " to " + newRedirectingTo);
result.RedirectingTo = newRedirectingTo;
}

View File

@@ -258,7 +258,10 @@ namespace Jackett.Common.Utils.Clients
// URL decoding apparently is needed to, without it e.g. Demonoid download is broken
// TODO: is it always needed (not just for relative redirects)?
var newRedirectingTo = WebUtilityHelpers.UrlDecode(result.RedirectingTo, webRequest.Encoding);
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host);
if (newRedirectingTo.StartsWith("file:////")) // Location without protocol but with host (only add scheme)
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + ":");
else
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host);
logger.Debug("[MONO relative redirect bug] Rewriting relative redirect URL from " + result.RedirectingTo + " to " + newRedirectingTo);
result.RedirectingTo = newRedirectingTo;
}

View File

@@ -0,0 +1,28 @@
using System;
using System.Runtime.InteropServices;
namespace Jackett.Common.Utils
{
public static class DotNetCoreUtil
{
public static bool IsRunningOnDotNetCore
{
get
{
bool runningOnDotNetCore = false;
try
{
runningOnDotNetCore = RuntimeInformation.FrameworkDescription.IndexOf("core", StringComparison.OrdinalIgnoreCase) >= 0;
}
catch
{
//Issue only appears to occur for small number of users on Mono
runningOnDotNetCore = false;
}
return runningOnDotNetCore;
}
}
}
}

View File

@@ -4,8 +4,6 @@ using Jackett.Common.Utils;
using Jackett.Server.Services;
using NLog;
using System;
using System.Linq;
using System.Runtime.InteropServices;
namespace Jackett.Server
{
@@ -113,8 +111,8 @@ namespace Jackett.Server
{
logger.Info("Overriding port to " + consoleOptions.Port);
serverConfig.Port = consoleOptions.Port;
bool isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
if (isWindows)
if (EnvironmentUtil.IsWindows)
{
if (ServerUtil.IsUserAdministrator())
{
@@ -137,7 +135,7 @@ namespace Jackett.Server
{
logger.Info("Overriding external access to " + consoleOptions.ListenPublic);
serverConfig.AllowExternal = consoleOptions.ListenPublic;
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
if (EnvironmentUtil.IsWindows)
{
if (ServerUtil.IsUserAdministrator())
{

View File

@@ -47,9 +47,7 @@ namespace Jackett.Server
{
if (string.IsNullOrEmpty(options.Client))
{
bool runningOnDotNetCore = RuntimeInformation.FrameworkDescription.IndexOf("Core", StringComparison.OrdinalIgnoreCase) >= 0;
if (runningOnDotNetCore)
if (DotNetCoreUtil.IsRunningOnDotNetCore)
{
options.Client = "httpclientnetcore";
}

View File

@@ -1,5 +1,6 @@
using Jackett.Common.Models.Config;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.WebUtilities;
using NLog;
@@ -121,10 +122,8 @@ namespace Jackett.Server.Services
logger.Error(e, "Error while reading the issue file");
}
bool runningOnDotNetCore = RuntimeInformation.FrameworkDescription.IndexOf("Core", StringComparison.OrdinalIgnoreCase) >= 0;
Type monotype = Type.GetType("Mono.Runtime");
if (monotype != null && !runningOnDotNetCore)
if (monotype != null && !DotNetCoreUtil.IsRunningOnDotNetCore)
{
MethodInfo displayName = monotype.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
var monoVersion = "unknown";

View File

@@ -247,7 +247,6 @@ namespace Jackett.Updater
"Definitions/ultrahdclub.yml",
"Definitions/infinityt.yml",
"Definitions/hachede-c.yml",
"Definitions/hd4Free.yml",
"Definitions/skytorrents.yml",
"Definitions/gormogon.yml",
"Definitions/czteam.yml",
@@ -275,6 +274,8 @@ namespace Jackett.Updater
"System.Web.Http.Tracing.dll",
"Definitions/torrentkim.yml",
"Definitions/horriblesubs.yml",
"Definitions/idope.yml",
"Definitions/bt-scene.yml",
};
foreach (var oldFile in oldFiles)