Compare commits

...

53 Commits

Author SHA1 Message Date
Garfield69
943ddba22b worldoftomorrow: fix cat 95 2020-03-20 20:23:02 +13:00
Garfield69
79fa4da2bf arabafenice: fix cats 47 and 40 2020-03-20 20:22:12 +13:00
Garfield69
da7589838f downloadville: update categories 2020-03-20 20:20:03 +13:00
Garfield69
2a4be14998 1337x: fix cats 54, 70, 76 2020-03-20 20:13:16 +13:00
Garfield69
c81a2163ce sktorrent: fix cat 43 2020-03-20 20:09:13 +13:00
Garfield69
d3ada91c3a hdreactor: fix cat 5006 2020-03-20 20:08:10 +13:00
Garfield69
653dcca2af worldoftomorrow: fix cat 89 2020-03-20 20:06:41 +13:00
Garfield69
c2a24cae22 hdme: fix cat 57 2020-03-20 20:05:32 +13:00
Garfield69
babd49c082 torrent-explosive: fix cat 258 2020-03-20 20:02:15 +13:00
Garfield69
1007366471 torrentsectorcrew: fix cat 121 and 124 2020-03-20 20:00:40 +13:00
Garfield69
e747d4e2fa hachede: fix cat 125 2020-03-20 19:58:00 +13:00
Garfield69
efab277714 generationfree: fix cat 1 and 130 2020-03-20 19:56:38 +13:00
Garfield69
7f8cfa7eca insanetracker: update categories
add config sort options
add includedead
fix grabs > 999
description is optional
add engine tag
2020-03-20 19:40:09 +13:00
Garfield69
6abc8adcd1 horrorsite: update engine tag 2020-03-20 16:54:52 +13:00
Garfield69
8e1d171937 girotorrent: update categories 2020-03-20 16:54:26 +13:00
Garfield69
9f433dd0de generationfree: update categories 2020-03-20 16:53:50 +13:00
Garfield69
65da3e83af add horrorsite a Hungarian private tracker. resolves #7736 2020-03-20 13:04:47 +13:00
Garfield69
21250c275f galeriens: 2020-03-20 12:38:21 +13:00
Garfield69
e612c111c6 bithorlo: add cookie alert 2020-03-20 12:38:02 +13:00
Garfield69
e24c95d4e2 Revert "baibako: switch to private."
This reverts commit 6e8726c197.
2020-03-20 07:09:41 +13:00
Garfield69
2920caf7c0 film-paleis: add imdbid search. #4859
also add banner
add freeleech DLVF
2020-03-19 21:01:50 +13:00
Garfield69
f73a047ed9 extremetorrents: update categories 2020-03-19 18:52:01 +13:00
Garfield69
313ade66f4 btnext: add imdbid search. #4859
also update categories
add info about uread mail
add imdb link in results
fix date parsing
2020-03-19 15:51:56 +13:00
Garfield69
392a0d7b7e cardigannindexer: add optional arg to strdump
when you are using multiple strdumps it is useful to tag them with an unique eyecatcher so you can tell them apart in the enhanced log.
2020-03-19 09:09:58 +13:00
Garfield69
324afbcd0f fanoin: add imdbid search. #4859
also add config sort options
add uhd category
add movie-search
fix date selectors
no engine tag
2020-03-19 06:39:08 +13:00
Garfield69
7f003427fd carpathians: add imdbid search. #4859
also add config sort options
add x4 ULVF
add engine tag
2020-03-19 05:55:36 +13:00
Cory
a89246c9a7 core: improve date parsing for today/yesterday/tomorrow. resolves #7701 (#7704) 2020-03-18 21:11:48 +13:00
ende124
69b01c34f8 norbits: Add fullsearch option (#7710) 2020-03-18 20:50:13 +13:00
Garfield69
a41bf6ebe4 polishsource: add imdbid search. #4859 2020-03-18 19:57:58 +13:00
Garfield69
5bf224d84d torrentview: new domain *6.net 2020-03-18 17:44:17 +13:00
Garfield69
03af2a6d1d torrent-turk: add info about unread PM 2020-03-18 17:43:51 +13:00
Garfield69
aee7bba3ce estone: update search terms 2020-03-17 20:15:30 +13:00
Garfield69
29b1304967 downloadville: 2020-03-17 18:25:16 +13:00
Garfield69
81029b3019 documentarytorrents: update modes. 2020-03-17 18:10:32 +13:00
Garfield69
62caeb3f4d divteam: update categories 2020-03-17 17:58:53 +13:00
Garfield69
fba3e1922f deildu: add imdbid search. #4859 2020-03-17 16:46:46 +13:00
Garfield69
0aacf6344d cztorrent: update categories 2020-03-17 16:24:59 +13:00
Garfield69
9d3d8ea18d crnaberza: fix title search. 2020-03-17 16:10:01 +13:00
Garfield69
4da3921e21 crazyspirit: update cats 2020-03-17 13:06:58 +13:00
Diego Heras
fed41d5b68 epublibre: add server overloaded message (#7697) 2020-03-16 21:48:14 +01:00
Garfield69
15841e26a8 cinemamovies: add imdb search. #4859 2020-03-17 09:03:18 +13:00
Garfield69
22a5f46276 totallykids: add imdb search. #4859 2020-03-16 17:58:39 +13:00
Garfield69
eb5642f293 ptfiles: add imdb search. #4859
add config sort options
add UHD cat
add engine tag
remove obsolete search terms
2020-03-16 17:36:21 +13:00
Garfield69
98297b2d85 torrentleech-pl: add imdb search. #4859 2020-03-16 17:10:25 +13:00
Diego Heras
d900ac065f webui: save search sorting and number of entries indefinitely. resolves #4558 (#7686) 2020-03-16 12:59:49 +13:00
Cory
469620d88b gimme-peers: fix parse error on zero results resolves #7678 (#7683) 2020-03-16 00:21:00 +01:00
Diego Heras
461594e336 elitetracker: fix parsing error. resolves #7675 (#7684) 2020-03-15 17:26:18 -05:00
Cory
63f1870319 bithdtv: implement category searching. resolves #7577 resolves #7596 (#7663)
* Implement category searching. Fixes #7577

* Check if no results Resolves #7596
2020-03-15 22:49:31 +01:00
Cory
ba9710cd7c hdspace: add imdb search support (#7665) 2020-03-15 22:38:54 +01:00
Garfield69
44c814417c ztracker: add imdb search. #4859
add silver DLVF
correct a couple cats
2020-03-16 09:15:32 +13:00
Diego Heras
d1290fc226 epublibre: add new spanish public tracker. resolves #6309 (#7669) 2020-03-15 18:42:14 +01:00
junglebus
fa88fa8af8 Readme: Full framework now no longer needed (#7667)
Since we are now running self contained .NET Core, no .NET is required on the host system
2020-03-16 06:24:36 +13:00
Diego Heras
318b3667ff core: add more binary formats in .gitattributes (#7670) 2020-03-16 06:23:28 +13:00
52 changed files with 962 additions and 366 deletions

15
.gitattributes vendored
View File

@@ -2,13 +2,12 @@
* text=auto
* text eol=lf
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
# Declare files that will always have LF line endings on checkout.
# Declare files that will always have CRLF line endings on checkout.
# Denote all files that are truly binary and should not be modified.
*.png binary
*.eot binary
*.ico binary
*.jpg binary
*.otf binary
*.png binary
*.ttf binary
*.woff binary
*.woff2 binary

View File

@@ -18,7 +18,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
#### Supported Systems
* Windows 7SP1 or greater using .NET 4.6.1 or above [Download here](https://dotnet.microsoft.com/download/dotnet-framework/net461)
* Windows 7SP1 or greater
* Linux [supported operating systems here](https://github.com/dotnet/core/blob/master/release-notes/2.1/2.1-supported-os.md#linux)
* macOS 10.13 or greater
@@ -152,6 +152,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* AlexFilm
* AniDUB
* ArenaBG
* BaibaKo
* BookTracker
* CasStudioTV
* Crazy's Corner
@@ -220,7 +221,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Audiobook Torrents (ABT)
* Avistaz (AsiaTorrents)
* Awesome-HD (AHD)
* BaibaKo
* BIGTorrent
* BIT-HDTV
* BJ-Share (BJ)
@@ -284,6 +284,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* EfectoDoppler
* Elite-Tracker
* Empornium (EMP)
* EpubLibre
* Ethor.net (Thor's Land)
* ExoticaZ (YourExotic)
* ExtremeTorrents
@@ -336,6 +337,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* HacheDe
* Hebits
* Hon3y HD
* Horror Site
* HuSh
* ICE Torrent
* IPTorrents (IPT)

View File

@@ -182,6 +182,7 @@ function displayConfiguredIndexersList(indexers) {
indexersTable.find("table").dataTable(
{
"stateSave": true,
"stateDuration": 0,
"pageLength": -1,
"lengthMenu": [[10, 20, 50, 100, 250, 500, -1], [10, 20, 50, 100, 250, 500, "All"]],
"order": [[0, "asc"]],
@@ -253,6 +254,7 @@ function displayUnconfiguredIndexersList() {
indexersTable.find("table").DataTable(
{
"stateSave": true,
"stateDuration": 0,
"fnStateSaveParams": function (oSettings, sValue) {
sValue.search.search = ""; // don't save the search filter content
return sValue;
@@ -955,6 +957,7 @@ function updateSearchResultTable(element, results) {
"dom": "lfr<\"dataTables_deadfilter\">tip",
"stateSave": true,
"stateDuration": 0,
"bAutoWidth": false,
"pageLength": 20,
"lengthMenu": [[10, 20, 50, 100, 250, 500, -1], [10, 20, 50, 100, 250, 500, "All"]],
@@ -1082,6 +1085,7 @@ function bindUIButtons() {
table.DataTable(
{
"stateSave": true,
"stateDuration": 0,
"bAutoWidth": false,
"pageLength": 20,
"lengthMenu": [[10, 20, 50, -1], [10, 20, 50, "All"]],

View File

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

View File

@@ -44,12 +44,12 @@
- {id: 3, cat: Movies, desc: "Movies/SVCD/VCD"}
- {id: 4, cat: Movies/Foreign, desc: "Movies/Dubs/Dual Audio"}
- {id: 42, cat: Movies/HD, desc: "Movies/HD"}
- {id: 54, cat: Movies, desc: "Movies/h.264/x264"}
- {id: 54, cat: Movies/HD, desc: "Movies/h.264/x264"}
- {id: 55, cat: Movies, desc: "Movies/Mp4"}
- {id: 66, cat: Movies/3D, desc: "Movies/3D"}
- {id: 70, cat: Movies, desc: "Movies/HEVC/x265"}
- {id: 70, cat: Movies/HD, desc: "Movies/HEVC/x265"}
- {id: 73, cat: Movies, desc: "Movies/Bollywood"}
- {id: 76, cat: Movies, desc: "Movies/UHD"}
- {id: 76, cat: Movies/UHD, desc: "Movies/UHD"}
#TV
- {id: 5, cat: TV, desc: "TV/DVD"}
@@ -138,7 +138,7 @@
"asc": "asc"
download:
# the .torrent url is on the on the details page
# the .torrent url is on the on the details page
selector: ul li a[href^="{{ .Config.downloadlink }}"]
attribute: href
@@ -148,7 +148,7 @@
- path: "{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}sort-search{{else}}cat/Movies{{end}}{{if or (.Query.Album) (.Query.Artist) }}/{{ or (.Query.Album) (.Query.Artist) }}{{else}}/{{ .Keywords }}{{end}}{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}/{{else}}{{end}}{{ .Config.sort }}/{{ .Config.type }}/1/"
- path: "{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}sort-search{{else}}cat/TV{{end}}{{if or (.Query.Album) (.Query.Artist) }}/{{ or (.Query.Album) (.Query.Artist) }}{{else}}/{{ .Keywords }}{{end}}{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}/{{else}}{{end}}{{ .Config.sort }}/{{ .Config.type }}/{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}2{{else}}1{{end}}/"
- path: "{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}sort-search{{else}}cat/Music{{end}}{{if or (.Query.Album) (.Query.Artist) }}/{{ or (.Query.Album) (.Query.Artist) }}{{else}}/{{ .Keywords }}{{end}}{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}/{{else}}{{end}}{{ .Config.sort }}/{{ .Config.type }}/{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}3{{else}}1{{end}}/"
keywordsfilters:
keywordsfilters:
- name: replace # use this as a workaround till #893 is implemented
args: ["Greys Anatomy", "Grey's Anatomy"]

View File

@@ -14,7 +14,7 @@
categorymappings:
# HRS
- {id: 34, cat: Movies/HD, desc: "1080p HRS x264"}
- {id: 47, cat: Movies/HD, desc: "2160p 4k UltraHD HRS"}
- {id: 47, cat: Movies/UHD, desc: "2160p 4k UltraHD HRS"}
- {id: 35, cat: TV, desc: "Serie TV HRS"}
- {id: 36, cat: Movies/SD, desc: "DVDRip HRS"}
- {id: 41, cat: Movies/SD, desc: "BDRip 576p HRS"}
@@ -38,7 +38,7 @@
- {id: 42, cat: TV, desc: "Serie Tv Sub Ita"}
- {id: 15, cat: TV/Documentary, desc: "documentaries"}
- {id: 33, cat: TV, desc: "mp4"}
- {id: 40, cat: TV/HD, desc: "2160p 4K UltraHD"}
- {id: 40, cat: TV/UHD, desc: "2160p 4K UltraHD"}
- {id: 38, cat: XXX, desc: "xXx"}
- {id: 43, cat: Other, desc: "Arabic for social"}

View File

@@ -1,9 +1,9 @@
---
site: baibako
name: BaibaKo
description: "BaibaKo is a RUSSIAN Private Torrent Tracker for TV"
description: "BaibaKo is a RUSSIAN Semi-Private Torrent Tracker for TV"
language: ru-ru
type: private
type: semi-private
encoding: windows-1251
links:
- http://baibako.tv/ # site does not support https NET::ERR_CERT_AUTHORITY_INVALID

View File

@@ -56,6 +56,10 @@
movie-search: [q]
settings:
- name: info_alert
type: info
label: Alert about Cookie
default: "If during your cookie save you get the following error:</br><b>The 'Value'='xzlogin,xzrecover,xzsignup' part of the cookie is invalid.</b></br>Then remove <b>acopendivids=xzlogin,xzrecover,xzsignup; </b> from the cookie string before proceeding to save."
- name: cookie
type: text
label: Cookie

View File

@@ -24,7 +24,10 @@
- {id: 16, cat: Movies/SD, desc: "Movies CAM"}
- {id: 74, cat: Movies/DVD, desc: "Movies DvD-R"}
- {id: 76, cat: Movies, desc: "Movies Packs"}
- {id: 91, cat: Movies/Other, desc: "Movies Kids"}
- {id: 115, cat: Movies/Other, desc: "Movies Kids"}
- {id: 91, cat: Movies/Other, desc: "Movies Kids Inglês"}
- {id: 113, cat: Movies/Other, desc: "Movies Kids PT-BR"}
- {id: 114, cat: Movies/Other, desc: "Movies Kids PT-PT"}
- {id: 77, cat: Movies/WEBDL, desc: "Movies WEB-DL"}
- {id: 85, cat: Movies/DVD, desc: "Movies Custom-DVDR"}
- {id: 14, cat: Movies/SD, desc: "Movies DVDRip/XViD"}
@@ -49,13 +52,14 @@
- {id: 7, cat: Audio, desc: "Music"}
- {id: 20, cat: Audio/Video, desc: "Music MVideo"}
- {id: 21, cat: Audio/MP3, desc: "Music MP3"}
- {id: 33, cat: Audio/Other, desc: "Music MP4"}
- {id: 33, cat: Audio/Video, desc: "Music MP4"}
- {id: 32, cat: Audio/Lossless, desc: "Music FLAC"}
- {id: 2, cat: Console, desc: "Games"}
- {id: 78, cat: PC/Games, desc: "Games Linux"}
- {id: 79, cat: PC/Mac, desc: "Games MacOSX"}
- {id: 28, cat: Console/NDS, desc: "Games Nintendo DS"}
- {id: 27, cat: PC/Games, desc: "Games PC/Windows"}
- {id: 111, cat: Console, desc: "Games Nintendo Sw"}
- {id: 80, cat: Console/PS3, desc: "Games PS2"}
- {id: 81, cat: Console/PS3, desc: "Games PS3"}
- {id: 82, cat: Console/PS4, desc: "Games PS4"}
@@ -70,10 +74,10 @@
- {id: 34, cat: PC/ISO, desc: "Applications Linux"}
- {id: 44, cat: Other, desc: "Miscellaneous"}
- {id: 54, cat: Audio/Audiobook, desc: "Books Audiobook"}
- {id: 57, cat: Books, desc: "Books E-Books"}
- {id: 57, cat: Books/Ebook, desc: "Books E-Books"}
- {id: 58, cat: Books/Comics, desc: "Books Comics"}
- {id: 59, cat: Books, desc: "Books Educational"}
- {id: 60, cat: Books, desc: "Books Magazines/Journals"}
- {id: 60, cat: Books/Magazines, desc: "Books Magazines/Journals"}
- {id: 61, cat: Other, desc: "Pics/Wallpapers"}
- {id: 62, cat: PC/Phone-Android, desc: "Android"}
- {id: 63, cat: PC/Phone-IOS, desc: "iOS"}
@@ -92,9 +96,9 @@
- {id: 69, cat: XXX/Imageset, desc: "XXX-Pics/Wallpapers"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
@@ -122,6 +126,10 @@
options:
"desc": "desc"
"asc": "asc"
- name: info_results
type: info
label: Search results
default: "If you get 0 results check the log for error: <b>An error has occured!You can't view this page unless you read all your unread messages</b>, then access the site with your browser and <b>mark as read</b> all PMs."
login:
path: ?p=home&pid=1
@@ -155,9 +163,9 @@
p: torrents
pid: 32
$raw: "{{ range .Categories }}cid[]={{.}}&{{end}}"
keywords: "{{ .Keywords }}"
search_type: name
searchin: title
keywords: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# name , description , both , uploader
search_type: "{{ if .Query.IMDBID }}description{{else}}name{{end}}"
"sortOptions[sortBy]": "{{ .Config.sort }}"
"sortOptions[sortOrder]": "{{ .Config.type }}"
error:
@@ -193,28 +201,62 @@
selector: a[rel="fancybox"]
optional: true
attribute: href
imdb:
# a href="http://tracker.btnext.com/data/torrents/imdb/tt0249677.jpg"
optional: true
selector: a[href*="/imdb/tt"]
attribute: href
filters:
- name: regexp
args: "imdb/(.+?).jpg"
- name: prepend
args: "https://www.imdb.com/title/"
downloadvolumefactor:
case:
"img[title=\"FREE!\"]": 0
"*": 1
uploadvolumefactor:
case:
"*": 1
text: 1
date:
selector: td.torrent_name > abbr.timeago
optional: true
attribute: data-time
date:
selector: td.torrent_name:not(:has(abbr.timeago))
selector: td.torrent_name:not(:has(abbr.timeago)):not(:contains("day")):not(:contains("Domingo")):not(:contains("Sábado")):not(:contains("Sexta")):not(:contains("Quinta")):not(:contains("Quarta")):not(:contains("Terça")):not(:contains("Segunda")):not(:contains("ontem")):not(:contains("Hoje"))
optional: true
remove: span, a, br
filters:
- name: replace
args: ["Enviado ", ""] # Uploaded
- name: replace
args: ["Uploaded ", ""]
- name: replace
args: [" por", ""] # by
- name: replace
args: [" by", ""]
- name: replace
args: ["às ", ""] # at
- name: replace
args: ["at ", ""]
- name: dateparse
args: "02-01-2006 15:04"
date:
selector: td.torrent_name:not(:has(abbr.timeago)):contains("day"), td.torrent_name:not(:has(abbr.timeago)):contains("Domingo"), td.torrent_name:not(:has(abbr.timeago)):contains("Sábado"), td.torrent_name:not(:has(abbr.timeago)):contains("Quinta"), td.torrent_name:not(:has(abbr.timeago)):contains("Sexta"), td.torrent_name:not(:has(abbr.timeago)):contains("Quarta"), td.torrent_name:not(:has(abbr.timeago)):contains("Terça"), td.torrent_name:not(:has(abbr.timeago)):contains("Segunda"), td.torrent_name:not(:has(abbr.timeago)):contains("ontem"), td.torrent_name:not(:has(abbr.timeago)):contains("Hoje")
optional: true
remove: span, a, br
filters:
- name: replace
args: ["Enviado ", ""] # Uploaded
- name: replace
args: ["Uploaded ", ""]
- name: replace
args: [" por", ""] # by
- name: replace
args: [" by", ""]
- name: replace
args: ["às ", ""] # at
- name: replace
args: ["at ", ""]
- name: replace
args: ["Hoje", "Today"]
- name: replace
@@ -233,6 +275,5 @@
args: ["Sábado", "Saturday"]
- name: replace
args: ["Domingo", "Sunday"]
- name: dateparse
args: "02-01-2006 15:04"
- name: fuzzytime
# TSUE 2.2

View File

@@ -38,9 +38,33 @@
- {id: 110, cat: XXX, desc: "XXX"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "5"
options:
"5": "created"
"8": "seeders"
"6": "size"
"2": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: takelogin.php
@@ -55,13 +79,18 @@
paths:
- path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}https://www.imdb.com/title/{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 both 1 only active 2 only dead
incldead: 0
onlyname: 1
onlyname2: true
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table[id!="torrent_ajanlo"] > tbody > tr[id]
fields:
download:
selector: a[href^="download.php/"]
@@ -84,7 +113,7 @@
selector: a[id][href^="details.php?"]
attribute: href
imdb:
selector: a[href*="https://www.imdb.com/title/"]
selector: a[href*="www.imdb.com/title/tt"]
optional: true
attribute: href
banner:
@@ -99,7 +128,7 @@
selector: td:nth-child(7)
filters:
- name: regexp
args: ([\d\.]+)
args: (\d+)
seeders:
selector: td:nth-child(8)
leechers:
@@ -123,9 +152,10 @@
args: ["hete", "week"]
- name: timeago
downloadvolumefactor:
case:
"*": "1"
text: 1
uploadvolumefactor:
case:
img[src="pic/double.png"]: "2"
"*": "1"
img[src="pic/double.png"]: 2
img[src="pic/doubledouble2.png"]: 4
"*": 1
# TBDev & XBTT

View File

@@ -59,6 +59,7 @@
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
login:
path: index.php?page=login
@@ -81,8 +82,9 @@
page: torrents
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{else}}0{{end}}"
# options: 0=title, 1=title&descr, 2=descr
options: "{{ if .Query.IMDBID }}1{{else}}0{{end}}"
# 0=title, 1=title&descr, 2=descr
options: "{{ if .Query.IMDBID }}2{{else}}0{{end}}"
# 0 all 1 activeonly 2 deadonly
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"

View File

@@ -31,9 +31,9 @@
- {id: 21, cat: Books, desc: "Book"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: cookie
@@ -67,17 +67,19 @@
test:
path: index.php
selector: a[href^="/logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 onlyactive 1 all 4 requests 5 onlydead 6 polish 8 free 10 doubleup 11 premier 13 VOD
incldead: 1
# 0 title 1 descr
blah: 0
blah: "{{ if .Query.IMDBID }}1{{else}}0{{end}}"
gatunek: 0
quality: none
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
@@ -98,13 +100,17 @@
attribute: href
download:
selector: a[href^="download.php/"]
attribute: href
attribute: href
banner:
selector: a[href^="details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) "
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
description:
optional: true
selector: img[src="pic/Poland.png"]

View File

@@ -12,20 +12,21 @@
categorymappings:
# Documentaire
- {id: 96, cat: TV/Documentary, desc: "Docus TV"}
- {id: 124, cat: TV/Documentary, desc: "Docus Formation Video"}
# Films
- {id: 49, cat: Movies/3D, desc: "Films 3D"}
- {id: 1, cat: XXX, desc: "3X"}
- {id: 48, cat: XXX, desc: "3X HD1080p"}
- {id: 47, cat: XXX, desc: "3X HD720p"}
- {id: 50, cat: Movies/UHD, desc: "Films 4K"}
- {id: 51, cat: Movies/UHD, desc: "Films 4K UHDTV"}
- {id: 51, cat: TV/UHD, desc: "Films 4K UHDTV"}
- {id: 57, cat: Movies/BluRay, desc: "Films BDRip"}
- {id: 56, cat: Movies/BluRay, desc: "Films Blu-Ray"}
- {id: 58, cat: Movies/BluRay, desc: "Films BRRip"}
- {id: 66, cat: Movies, desc: "Films CamTS"}
- {id: 59, cat: Movies/DVD, desc: "Films DVDR"}
- {id: 60, cat: Movies/DVD, desc: "Films DVDRip"}
- {id: 98, cat: Movies, desc: "Films Film Animées"}
- {id: 98, cat: TV/Anime, desc: "Films Film Animées"}
- {id: 65, cat: Movies, desc: "Films FSCR"}
- {id: 52, cat: Movies/HD, desc: "Films HD 720p"}
- {id: 53, cat: Movies/HD, desc: "Films HD1080p"}
@@ -124,7 +125,7 @@
options:
"desc": "desc"
"asc": "asc"
login:
method: cookie
inputs:
@@ -149,13 +150,17 @@
# http://crazyspirits.com/torrents-search.php?c101=1&c102=1&c103=1&c104=1&c105=1&c106=1&search=&cat=0&incldead=0&freeleech=0&lang=0
- path: torrents-search.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active 1 incldead 2 onlydead
incldead: 1
# 0 all 1 inclfree 2 onlyfree
freeleech: 0
# 0 all 1 french 2 english etc
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# imdb search not supported and imdb links not in results.
rows:
selector: table.border_table > tbody > tr.t-row
@@ -192,13 +197,13 @@
attribute: onmouseover
filters:
- name: regexp
args: "Taille : </b>(.*?)<br"
args: "Taille : </b>(.*?)<br"
date:
selector: a[onmouseover][href^="torrents-details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: " Le : </b>(.*?)<br"
args: " Le : </b>(.*?)<br"
- name: dateparse
args: "02-01-2006"
downloadvolumefactor:
@@ -206,6 +211,5 @@
img[src="images/Torrents/free.png"]: 0
"*": 1
uploadvolumefactor:
case:
"*": 1
text: 1
# TT3.0

View File

@@ -100,15 +100,17 @@
search:
paths:
# http://www.crnaberza.com/browse.php?c52=1&c20=1&c34=1&incldead=1&search=star+trek
- path: browse.php
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
searchin: title
# 0 title 1 descr 2 both
blah: 0
# 0 active 1 incldead 2 onlydead
incldead: 1
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
# does not support searching imdbid and does not return imdb links
rows:
selector: tr:has(td.trowtorrent)

View File

@@ -22,7 +22,7 @@
- {id: 38, cat: Movies/HD, desc: "HD-LQ"}
- {id: 3, cat: PC/Games, desc: "Hry"}
- {id: 2, cat: Audio, desc: "Hudba"}
- {id: 34, cat: Audio/Video, desc: "Hudba DVD/HD"}
- {id: 34, cat: Audio/Video, desc: "Hudební video"}
- {id: 6, cat: Books, desc: "Knihy"}
- {id: 13, cat: Console, desc: "Konzole"}
- {id: 32, cat: Audio, desc: "Mluvené slovo"}
@@ -30,7 +30,6 @@
- {id: 4, cat: Other, desc: "Ostatní"}
- {id: 25, cat: TV, desc: "Seriály"}
- {id: 29, cat: Audio, desc: "Soundtrack"}
- {id: 19, cat: Audio/Video, desc: "Videoklipy"}
- {id: 24, cat: XXX, desc: "xXx"}
modes:
@@ -74,12 +73,14 @@
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
s: "{{ .Keywords }}"
# 0 approved 1 all 2 not approved
t: 1
o: "{{ .Config.sort }}"
# does not support imdbid search and does not return imdb links
rows:
selector: tr.torr_hover
keywordsfilters:
- name: re_replace
args: ["S[0-9]{2}([^E]|$)", ""] # remove season tag without episode (search doesn't support it)
@@ -93,17 +94,17 @@
- name: diacritics
args: replace
- name: replace
args: ["1080i", "1080p"]
args: ["1080i", "1080p"]
- name: replace
args: ["720i", "720p"]
args: ["720i", "720p"]
- name: replace
args: ["pLQ", "p"]
args: ["pLQ", "p"]
- name: replace
args: ["pHD", "p"]
args: ["pHD", "p"]
- name: replace
args: ["serie", ""]
args: ["serie", ""]
- name: replace
args: ["Serie", ""]
args: ["Serie", ""]
- name: re_replace
args: ["(\\d{2})\\.", "S$1"]
- name: re_replace
@@ -152,7 +153,7 @@
args: [ "|", 2 ]
- name: append
args: " +02:00"
- name: dateparse
- name: dateparse
args: "2.1.2006 15:04 -07:00"
seeders:
selector: td:nth-child(7) span

View File

@@ -26,9 +26,9 @@
- {id: 8, cat: TV, desc: "TV shows"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
@@ -69,10 +69,14 @@
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# active 1 incldead 2 onlydead
incldead: 1
# 1 = look in description
Lysing: "{{ if .Query.IMDBID }}1{{else}}{{end}}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
# does not return imdb links
rows:
selector: table[class="torrentlist"] > tbody > tr:has(a[href*="details.php?id="])

View File

@@ -12,7 +12,7 @@
categorymappings:
- {id: 60, cat: Movies/HD, desc: "MicroHD 720p"}
- {id: 77, cat: Movies/HD, desc: "MicroHD 1080p"}
- {id: 78, cat: Movies/HD, desc: "MicroHD 4k"}
- {id: 78, cat: Movies/HD, desc: "MicroHD 4K"}
- {id: 64, cat: TV/HD, desc: "Pack Series"}
- {id: 65, cat: TV/HD, desc: "Pack Series VOSE"}
- {id: 80, cat: Movies/BluRay, desc: "BDRip X265 1080p"}
@@ -43,13 +43,13 @@
- {id: 48, cat: Movies/BluRay, desc: "BR-Rip/HD-Rip"}
- {id: 17, cat: Movies/BluRay, desc: "BD-Rip"}
- {id: 5, cat: TV/Anime, desc: "Anime"}
- {id: 34, cat: PC/Games, desc: "Juegos Pc"}
- {id: 7, cat: PC/0day, desc: "Software Pc"}
- {id: 34, cat: PC/Games, desc: "Juegos PC"}
- {id: 7, cat: PC/0day, desc: "Software PC"}
- {id: 35, cat: Console, desc: "Juegos Sony"}
- {id: 36, cat: PC/Games, desc: "Juegos Microsoft"}
- {id: 37, cat: Console/NDS, desc: "Juegos Nintendo"}
- {id: 45, cat: Audio/MP3, desc: "Music MP3"}
- {id: 44, cat: Audio/Lossless, desc: "Music flac"}
- {id: 44, cat: Audio/Lossless, desc: "Music FLAC"}
modes:
search: [q]
@@ -84,7 +84,7 @@
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
method: cookie
inputs:
@@ -99,11 +99,14 @@
inputs:
page: "torrents"
category: "{{ range .Categories }}{{.}};{{end}}"
search: "{{ if .Keywords }}{{ .Keywords }}{{else}}{{end}}"
search: "{{ .Keywords }}"
# 0 all 1 activeonly 2 deadonly
active: 0
# 0 title 1 title&desc 2 descr 3 uploaders 5 gold 6 silver 9 2x 10 3x 11 4x
options: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
# does not support imdbid search and does not supply imdb link in results.
rows:
selector: table.table.table-bordered > tbody > tr:has(a[href^="download.php?id="])

View File

@@ -74,7 +74,8 @@
modes:
search: [q]
tv-search: [q, season, ep]
tv-search: [q]
movie-search: [q]
settings:
- name: username
@@ -125,11 +126,15 @@
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
cat: 0
# 0 active 1 incldead 2 onlydead
incldead: 1
# 0 all 1 notfree 2 onlyfree
freeleech: 0
# 0 all 1 english 2 french etc
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# does not support imdbid search and does not return imdb link in results
rows:
selector: table.ttable_headinner tr.t-row

View File

@@ -14,70 +14,70 @@
categorymappings:
# Films
- {id: 1, cat: Movies, desc: "Films"}
- {id: 13, cat: Movies, desc: "Films BD-Rip / BRRip"}
- {id: 15, cat: Movies, desc: "Films DVD-Rip"}
- {id: 18, cat: Movies, desc: "Films HD 720p"}
- {id: 19, cat: Movies, desc: "Films WEB-DL / WEB-Rip"}
- {id: 20, cat: Movies, desc: "Films HD 1080p"}
- {id: 26, cat: Movies, desc: "Films mHD 720p"}
- {id: 27, cat: Movies, desc: "Films mHD 1080p"}
- {id: 28, cat: Movies, desc: "Films x265"}
- {id: 30, cat: Movies, desc: "Films Blu-Ray (complet)"}
- {id: 31, cat: Movies, desc: "Films 3D"}
- {id: 32, cat: Movies, desc: "Films 4K UHD"}
- {id: 33, cat: Movies, desc: "Films Québécois SD"}
- {id: 34, cat: Movies, desc: "Films Québécois HD"}
- {id: 35, cat: Movies, desc: "Films Québécois DVD-R"}
- {id: 37, cat: Movies, desc: "Films DVD-R"}
- {id: 38, cat: Movies, desc: "Films V.O.S.T. SD"}
- {id: 39, cat: Movies, desc: "Films V.O.S.T. HD"}
- {id: 40, cat: Movies, desc: "Films V.O. SD"}
- {id: 41, cat: Movies, desc: "Films V.O. HD"}
- {id: 13, cat: Movies/BluRay, desc: "Films BD-Rip / BRRip"}
- {id: 15, cat: Movies/DVD, desc: "Films DVD-Rip"}
- {id: 18, cat: Movies/HD, desc: "Films HD 720p"}
- {id: 19, cat: Movies/WEBDL, desc: "Films WEB-DL / WEB-Rip"}
- {id: 20, cat: Movies/HD, desc: "Films HD 1080p"}
- {id: 26, cat: Movies/HD, desc: "Films mHD 720p"}
- {id: 27, cat: Movie/HD, desc: "Films mHD 1080p"}
- {id: 28, cat: Movies/HD, desc: "Films x265"}
- {id: 30, cat: Movies/BluRay, desc: "Films Blu-Ray (complet)"}
- {id: 31, cat: Movies/3D, desc: "Films 3D"}
- {id: 32, cat: Movies/UHD, desc: "Films 4K UHD"}
- {id: 33, cat: Movies/SD, desc: "Films Québécois SD"}
- {id: 34, cat: Movies/HD, desc: "Films Québécois HD"}
- {id: 35, cat: Movies/DVD, desc: "Films Québécois DVD-R"}
- {id: 37, cat: Movies/DVD, desc: "Films DVD-R"}
- {id: 38, cat: Movies/SD, desc: "Films V.O.S.T. SD"}
- {id: 39, cat: MovieS/HD, desc: "Films V.O.S.T. HD"}
- {id: 40, cat: Movies/SD, desc: "Films V.O. SD"}
- {id: 41, cat: Movies/HD, desc: "Films V.O. HD"}
- {id: 42, cat: Movies, desc: "Films TV-Rip"}
# 4K LIGHT
- {id: 95, cat: Movies, desc: "4K LIGHT"}
# Séries-Télé
- {id: 16, cat: TV, desc: "Séries-Télé"}
- {id: 17, cat: TV, desc: "Séries-Télé TV Pack SD"}
- {id: 21, cat: TV, desc: "Séries-Télé SD"}
- {id: 22, cat: TV, desc: "Séries-Télé HD"}
- {id: 23, cat: TV, desc: "Séries-Télé TV Pack HD"}
- {id: 45, cat: TV, desc: "Séries-Télé Québécois SD"}
- {id: 46, cat: TV, desc: "Séries-Télé Québécois HD"}
- {id: 47, cat: TV, desc: "Séries-Télé V.O.S.T. SD"}
- {id: 48, cat: TV, desc: "Séries-TéléV.O.S.T. HD"}
- {id: 49, cat: TV, desc: "Séries-Télé Émissions TV SD"}
- {id: 50, cat: TV, desc: "Séries-Télé Émissions TV HD"}
- {id: 17, cat: TV/SD, desc: "Séries-Télé TV Pack SD"}
- {id: 21, cat: TV/SD, desc: "Séries-Télé SD"}
- {id: 22, cat: TV/HD, desc: "Séries-Télé HD"}
- {id: 23, cat: TV/HD, desc: "Séries-Télé TV Pack HD"}
- {id: 45, cat: TV/SD, desc: "Séries-Télé Québécois SD"}
- {id: 46, cat: TV/HD, desc: "Séries-Télé Québécois HD"}
- {id: 47, cat: TV/SD, desc: "Séries-Télé V.O.S.T. SD"}
- {id: 48, cat: TV/HD, desc: "Séries-TéléV.O.S.T. HD"}
- {id: 49, cat: TV/SD, desc: "Séries-Télé Émissions TV SD"}
- {id: 50, cat: TV/HD, desc: "Séries-Télé Émissions TV HD"}
- {id: 51, cat: TV, desc: "Séries-Télé Blu-Ray"}
- {id: 52, cat: TV, desc: "Séries-Télé DVD-R"}
- {id: 94, cat: TV, desc: "Séries-Télé x265 - TV"}
- {id: 94, cat: TV/HD, desc: "Séries-Télé x265 - TV"}
# Musique
- {id: 2, cat: Audio, desc: "Musique"}
- {id: 54, cat: Audio, desc: "Musique MP3"}
- {id: 55, cat: Audio, desc: "Musique FLAC"}
- {id: 54, cat: Audio/MP3, desc: "Musique MP3"}
- {id: 55, cat: Audio/Lossless, desc: "Musique FLAC"}
- {id: 56, cat: Audio, desc: "Musique DSD"}
- {id: 57, cat: Audio, desc: "Musique Karaoke"}
- {id: 58, cat: Audio, desc: "Musique Autres"}
# Jeux
- {id: 3, cat: PC/Games, desc: "Jeux"}
- {id: 59, cat: PC/Games, desc: "Jeux PC"}
- {id: 60, cat: PC/Games, desc: "Jeux Consoles"}
- {id: 60, cat: Console, desc: "Jeux Consoles"}
- {id: 84, cat: PC/Games, desc: "Jeux Android"}
# Livres
- {id: 6, cat: Books, desc: "Livres"}
- {id: 61, cat: Books, desc: "Livres epub"}
- {id: 61, cat: Books/Ebook, desc: "Livres epub"}
- {id: 62, cat: Books, desc: "Livres pdf"}
- {id: 63, cat: Books, desc: "Livres Journaux"}
- {id: 64, cat: Books, desc: "Livres Magazines"}
- {id: 64, cat: Books/Magazines, desc: "Livres Magazines"}
- {id: 65, cat: Books, desc: "Livres Bandes Dessinées"}
- {id: 66, cat: Books, desc: "Livres Multi-Format"}
- {id: 85, cat: Books, desc: "Livres Audio"}
- {id: 85, cat: Audio/Audiobook, desc: "Livres Audio"}
# Logiciels
- {id: 67, cat: PC, desc: "Logiciels"}
- {id: 68, cat: PC, desc: "Logiciels Windows"}
- {id: 69, cat: PC, desc: "Logiciels Mac"}
- {id: 68, cat: PC/0day, desc: "Logiciels Windows"}
- {id: 69, cat: PC/Mac, desc: "Logiciels Mac"}
- {id: 86, cat: PC, desc: "Logiciels Linux"}
- {id: 87, cat: PC, desc: "Logiciels Android"}
- {id: 87, cat: PC/Phone-Android, desc: "Logiciels Android"}
# Spectacles
- {id: 70, cat: TV/Other, desc: "Spectacles"}
- {id: 71, cat: TV/Other, desc: "Spectacles Humour"}
@@ -198,11 +198,13 @@
page: torrents
search: "{{ .Keywords }}"
category: "{{ range .Categories }}{{.}};{{end}}"
# 0 title 1 title&descr 2 descr
options: 0
active: "{{ .Config.active }}"
gold: "{{ .Config.gold }}"
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
# does not support imdbid search and does not ruturn imdb link in results
rows:
selector: table > tbody > tr > td > table.lista > tbody > tr:has(td[onmouseover="this.className='post'"])

View File

@@ -81,11 +81,16 @@
search:
paths:
# http://estone.cc/letoltes.php?kereses_nev=wide&miben=0&cimke=&cat=0&submit.x=40&submit.y=9
- path: letoltes.php
method: get
inputs:
$raw: "{{ range .Categories }}kat[]={{.}}&{{end}}{{ .Config.sort }}={{ .Config.type }}"
kereses_nev: "{{ .Keywords }}"
# 0 name 1 performer 2 director
miben: 0
# genre
cimke: ""
# does not support imdbid search and does not return imdb link in results
rows:
selector: body > div[id^="torrent_"]

View File

@@ -10,24 +10,25 @@
caps:
categorymappings:
- {id: 10, cat: Movies/DVD, desc: "Dvd rip"}
- {id: 111, cat: Movies/DVD, desc: "DVD Promo"}
- {id: 118, cat: Movies, desc: "Kids"}
- {id: 113, cat: XXX, desc: "DVD xxx"}
- {id: 129, cat: Movies/HD, desc: "Hd DVD"}
- {id: 130, cat: Movies/UHD, desc: "4K Films"}
- {id: 143, cat: Movies/HD, desc: "Divx 720P"}
- {id: 114, cat: Audio, desc: "Muziek"}
- {id: 10, cat: Movies/DVD, desc: "Film DVD"}
- {id: 111, cat: Movies/DVD, desc: "DVD Promo/R5"}
- {id: 118, cat: Movies/DVD, desc: "Kids DVD"}
- {id: 113, cat: XXX, desc: "DVD XXX"}
- {id: 108, cat: XXX, desc: "Xvid XXX"}
- {id: 129, cat: Movies/HD, desc: "HD DVD"}
- {id: 130, cat: Movies/UHD, desc: "Films 4K"}
- {id: 143, cat: Movies/HD, desc: "DivX 720P"}
- {id: 114, cat: Audio/MP3, desc: "Muziek MP3"}
- {id: 140, cat: Books, desc: "E-Book"}
- {id: 105, cat: TV/Documentary, desc: "Documentaire"}
- {id: 115, cat: PC, desc: "pc apps"}
- {id: 120, cat: PC/Games, desc: "Pc Games"}
- {id: 115, cat: PC, desc: "PC apps"}
- {id: 120, cat: PC/Games, desc: "PC Games"}
- {id: 106, cat: Other, desc: "Overig"}
- {id: 131, cat: Console/NDS, desc: "Nintendo Ds"}
- {id: 132, cat: TV/HD, desc: "HD Serie"}
- {id: 116, cat: PC/Mac, desc: "Mac"}
- {id: 125, cat: Movies, desc: "Xvid rip"}
- {id: 123, cat: Movies, desc: "Xvid Tc"}
- {id: 116, cat: PC/Mac, desc: "Mac Software"}
- {id: 125, cat: Movies, desc: "DiVX Rip"}
- {id: 123, cat: Movies/SD, desc: "DiVX Cam"}
- {id: 108, cat: XXX, desc: "18+"}
- {id: 142, cat: XXX, desc: "HD XXX"}
- {id: 139, cat: TV, desc: "TV Series"}
@@ -85,6 +86,7 @@
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: 1
# does not support imdbid search and does not return imdb link in results
rows:
selector: table.mainouter
@@ -108,7 +110,7 @@
attribute: href
banner:
selector: div[id^="Style"] img
attribute: src
attribute: src
size:
selector: a[href^="details_bestanden.php?torrent_id="]
filters:

View File

@@ -49,10 +49,36 @@
- {id: 23, cat: TV/Sport, desc: "TV/Sport"}
- {id: 51, cat: Console, desc: "Games/Misc"}
- {id: 1, cat: PC/0day, desc: "Appz/PC ISO"}
- {id: 55, cat: Movies/UHD, desc: "Movies/4K"}
modes:
search: [q]
tv-search: [q, season, ep]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: takelogin.php
@@ -64,7 +90,7 @@
- selector: td.embedded:has(h2:contains("failed"))
test:
path: browse_old.php
ratio:
path: browse_old.php
selector: img[title="Reitings:"]+font
@@ -73,13 +99,16 @@
paths:
- path: browse_old.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Query.Keywords }}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 active 1 incldead 2 onlydead
incldead: 1
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: tr.browse_actions
filters:
- name: andmatch
fields:
title:
selector: a[href^="details.php?id="]
@@ -113,7 +142,7 @@
- name: regexp
args: (\d+)
date:
selector: td:nth-child(2) > small:nth-last-child(2)
selector: td:nth-child(2) > small:nth-last-child(2), td:nth-child(2) > small
filters:
- name: replace
args: ["Šodien", "Today"]
@@ -121,12 +150,13 @@
args: ["Vakar", "Yesterday"]
downloadvolumefactor:
case:
img[alt="Free"]: "0"
"*": "1"
img[alt="Free"]: 0
"*": 1
uploadvolumefactor:
case:
img[alt="x2"]: "2"
"*": "1"
img[alt="x2"]: 2
"*": 1
description:
selector: td:nth-child(2) > small:nth-last-child(1)
remove: a[href^="details.php?id="]
# engine n/a

View File

@@ -35,9 +35,9 @@
- {id: 32, cat: Audio/Audiobook, desc: " Luister Boeken"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
@@ -83,8 +83,9 @@
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
incldead: 1
# does not return imdb link in results
rows:
selector: table.mainouter
@@ -106,6 +107,9 @@
download:
selector: a[href^="details.php?id="]
attribute: href
banner:
selector: img[src*="/covers/"]
attribute: src
size:
selector: td:nth-child(4) table tr td:nth-child(2)
filters:
@@ -163,7 +167,9 @@
optional: true
selector: td:nth-child(4) table tr:nth-child(3) td:nth-child(5) font font b
downloadvolumefactor:
text: 0
case:
img[src="pic/freedlfsu.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -260,6 +260,7 @@
langue: "{{ .Config.torrentlanguage }}"
# freeleech oui (yes) non (no) peuimporte (ignore)
tl: "peuimporte"
# does bot support imdbid search and does not return imdb link in results.
rows:
selector: table.sortable tbody tr
@@ -322,6 +323,5 @@
img[src$="/images/Torrents/TLibre.png"]: "0"
"*": "1"
uploadvolumefactor:
case:
"*": "1"
text: 1
# TT3.00 FRENCH

View File

@@ -28,6 +28,7 @@
- {id: 117, cat: PC, desc: "Applications: Appli-autre"}
- {id: 67, cat: TV/OTHER, desc: "Autres: Emission TV"}
- {id: 141, cat: TV/OTHER, desc: "Autres: Noel"}
- {id: 142, cat: TV/Sport, desc: "Autres: Emission sport"}
- {id: 90, cat: Books/Ebook, desc: "BD: Livres"}
- {id: 132, cat: TV/Documentary, desc: "Documentaires: BluRay"}
- {id: 133, cat: TV/Documentary, desc: "Documentaires: 4k"}
@@ -35,7 +36,6 @@
- {id: 15, cat: TV/Documentary, desc: "Documentaires: HD"}
- {id: 14, cat: TV/Documentary, desc: "Documentaires: DivX"}
- {id: 76, cat: TV/Documentary, desc: "Documentaires: TVRip/HDTV"}
- {id: 118, cat: TV/Documentary, desc: "Documentaires: Sport"}
- {id: 139, cat: TV/Documentary, desc: "Documentaires: Noel"}
- {id: 138, cat: Books/Ebook, desc: "E-Books: Noel"}
- {id: 53, cat: Books/Ebook, desc: "E-Books: Livre Anglais"}
@@ -63,8 +63,8 @@
- {id: 71, cat: Movies/WEBDL, desc: "Films: WEB-DL"}
- {id: 69, cat: Movies/3D, desc: "Films: Film 3D"}
- {id: 65, cat: Movies, desc: "Films: VO"}
- {id: 1, cat: Movies/HD, desc: "Films: Remux Bluray 4K"}
- {id: 130, cat: Movies/UHD, desc: "Films: HD720P"}
- {id: 1, cat: Movies/UHD, desc: "Films: Remux Bluray 4K"}
- {id: 130, cat: Movies/HD, desc: "Films: HD720P"}
- {id: 102, cat: Movies/WEBDL, desc: "Films: WEB-DL 720P"}
- {id: 103, cat: Movies/HD, desc: "Films: Film-HDRIP"}
- {id: 111, cat: Movies/WEBDL, desc: "Films: WEBRip-720P"}
@@ -172,11 +172,10 @@
download:
before:
path: "list_thanks.php"
method: "get"
path: list_thanks.php
inputs:
id: "{{ .DownloadUri.Query.id }}"
to: "give"
to: give
torrent: "{{ .DownloadUri.Query.id }}"
selector: a[href^="download.php?id="]
attribute: href
@@ -192,12 +191,15 @@
# multi cats unsupported, defaulting to all
cat: 0
search: "{{ .Keywords }}"
# 0 active 1 incldead 2 onlydead
incldead: 1
# 0 all 1 notfree 2 freeonly
freeleech: 0
inclexternal: 0
# 0 all 1 French 2 English 3 etc
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# does not support imdbid search and does not return imdb link in results
rows:
selector: table.ttable_headinner > tbody > tr.t-row
@@ -239,6 +241,5 @@
img[src="images/fl.gif"]: 0
"*": 1
uploadvolumefactor:
case:
"*": 1
text: 1
# engine n/a

View File

@@ -27,15 +27,15 @@
# VIDEOTECA
- {id: 22, cat: Movies/SD, desc: "Movie BDRip"}
- {id: 23, cat: Movies/SD, desc: "Movie DvdRip"}
- {id: 23, cat: Movies/SD, desc: "Movie WEBRip"}
- {id: 95, cat: Movies/SD, desc: "Movie WEBRip"}
- {id: 24, cat: Movies/DVD, desc: "Movie DVD-R 5"}
- {id: 25, cat: Movies/DVD, desc: "Movie DVD-R 9"}
- {id: 26, cat: Movies/HD, desc: "Movie Blu-Ray HD"}
- {id: 27, cat: Movies/3D, desc: "Movie 3D-SBS"}
- {id: 96, cat: Movies/HD, desc: "Movie x265 HEVC"}
- {id: 28, cat: Movies/Foreign, desc: "Movie Subbet-ita"}
- {id: 27, cat: Movies/UHD, desc: "Movie 4K Ultra HD"}
- {id: 96, cat: Movies/HD, desc: "Movie HD Hevc"}
- {id: 28, cat: Movies/Foreign, desc: "Movie Subbed-ita"}
- {id: 73, cat: Movies/SD, desc: "Movie MP4"}
- {id: 29, cat: Movies/Foreign, desc: "Movie Ligua Originale"}
- {id: 29, cat: Movies/Foreign, desc: "Movie Lingua Originale"}
# ANIMAZIONE
- {id: 32, cat: TV/Anime, desc: "Anime Disney"}
- {id: 33, cat: TV/Anime, desc: "Anime"}
@@ -56,11 +56,13 @@
- {id: 45, cat: Audio, desc: "Musica Compilation"}
- {id: 46, cat: Audio/Video, desc: "Musica Video Clip"}
- {id: 58, cat: Audio, desc: "Musica Discografie"}
- {id: 97, cat: Audio/Lossless, desc: "Musica Flac"}
# SALA GIOCHI
- {id: 47, cat: PC/Games, desc: "PC Games"}
- {id: 48, cat: Console/PS3, desc: "PC Giochi PS2-PS3"}
- {id: 49, cat: Console/Wii, desc: "PC Giochi Nintendo Wii"}
- {id: 50, cat: Console/Xbox, desc: "PC Giochi Xbox"}
- {id: 51, cat: Console/PSP, desc: "PC Giochi PSP"}
- {id: 52, cat: Console/3DS, desc: "PC Giochi DS-DS3"}
# SOFTWARE
- {id: 54, cat: PC, desc: "PC Programmi Windows"}
@@ -117,10 +119,10 @@
download:
before:
path: thanks.php
method: "post"
method: post
inputs:
infohash: "{{ .DownloadUri.Query.id }}"
thanks: "1"
thanks: 1
rndval: "1487013827343"
selector: a[href^="download.php?id="]
attribute: href
@@ -160,6 +162,7 @@
args: ["(?i)\\bS0*(\\d+)\\b", "$1"]
- name: re_replace # S01E01 to 1 1
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "$1 $2"]
# does not support imdbid search and does not return imdb link in results
rows:
selector: div.b-content > table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])

View File

@@ -98,7 +98,7 @@
- {id: 130, cat: Movies/3D, desc: "H265 3D"}
- {id: 128, cat: Movies/HD, desc: "H265 Animación"}
- {id: 129, cat: Movies/HD, desc: "H265 Documentales"}
- {id: 125, cat: Movies, desc: "UHD"}
- {id: 125, cat: Movies/UHD, desc: "UHD"}
- {id: 131, cat: Movies/UHD, desc: "UHD Películas"}
- {id: 132, cat: TV/UHD, desc: "UHD Series"}

View File

@@ -10,33 +10,33 @@
caps:
categorymappings:
- {id: 24, cat: TV/Anime , desc: "Anime"}
- {id: 25, cat: PC/0day , desc: "Appz"}
- {id: 47, cat: Movies/HD , desc: "AVCHD"}
- {id: 24, cat: TV/Anime, desc: "Anime"}
- {id: 25, cat: PC/0day, desc: "Appz"}
- {id: 47, cat: Movies/HD, desc: "AVCHD"}
- {id: 26, cat: Movies/BluRay , desc: "Bluray"}
- {id: 54, cat: Movies/HD , desc: "dbREMUX"}
- {id: 41, cat: Movies/HD , desc: "Documentaries"}
- {id: 50, cat: Movies/HD , desc: "FourGHD"}
- {id: 44, cat: Movies/HD , desc: "HDME"}
- {id: 54, cat: Movies/HD, desc: "dbREMUX"}
- {id: 41, cat: Movies/HD, desc: "Documentaries"}
- {id: 50, cat: Movies/HD, desc: "FourGHD"}
- {id: 44, cat: Movies/HD, desc: "HDME"}
- {id: 28, cat: Audio/Lossless, desc: "HQ Music"}
- {id: 48, cat: Movies/HD , desc: "iCandy"}
- {id: 45, cat: Movies/HD , desc: "INtL"}
- {id: 29, cat: Other , desc: "Misc"}
- {id: 48, cat: Movies/HD, desc: "iCandy"}
- {id: 45, cat: Movies/HD, desc: "INtL"}
- {id: 29, cat: Other, desc: "Misc"}
- {id: 49, cat: PC/Phone-Other, desc: "Mobile"}
- {id: 30, cat: Movies/HD , desc: "Movie 1080i"}
- {id: 31, cat: Movies/HD , desc: "Movie 1080p"}
- {id: 32, cat: Movies/HD , desc: "Movie 720p"}
- {id: 33, cat: Audio/Video , desc: "Music Videos"}
- {id: 34, cat: TV , desc: "Packs"}
- {id: 53, cat: Movies/HD , desc: "Remux"}
- {id: 56, cat: Movies/HD , desc: "RUXi"}
- {id: 55, cat: Movies/HD , desc: "SiNiSteR"}
- {id: 36, cat: TV/Sport , desc: "Sports"}
- {id: 37, cat: TV/HD , desc: "TV Series 1080i"}
- {id: 38, cat: TV/HD , desc: "TV Series 1080p"}
- {id: 39, cat: TV/HD , desc: "TV Series 720p"}
- {id: 57, cat: Movies , desc: "UHD 2160p"}
- {id: 40, cat: XXX , desc: "XXX"}
- {id: 30, cat: Movies/HD, desc: "Movie 1080i"}
- {id: 31, cat: Movies/HD, desc: "Movie 1080p"}
- {id: 32, cat: Movies/HD, desc: "Movie 720p"}
- {id: 33, cat: Audio/Video, desc: "Music Videos"}
- {id: 34, cat: TV, desc: "Packs"}
- {id: 53, cat: Movies/HD, desc: "Remux"}
- {id: 56, cat: Movies/HD, desc: "RUXi"}
- {id: 55, cat: Movies/HD, desc: "SiNiSteR"}
- {id: 36, cat: TV/Sport, desc: "Sports"}
- {id: 37, cat: TV/HD, desc: "TV Series 1080i"}
- {id: 38, cat: TV/HD, desc: "TV Series 1080p"}
- {id: 39, cat: TV/HD, desc: "TV Series 720p"}
- {id: 57, cat: Movies/UHD, desc: "UHD 2160p"}
- {id: 40, cat: XXX, desc: "XXX"}
modes:
search: [q]

View File

@@ -14,7 +14,7 @@
caps:
categorymappings:
- {id: 2001, cat: Movies/HD, desc: "Кино HD"}
- {id: 5006, cat: Movies/HD, desc: "Кино 4K"}
- {id: 5006, cat: Movies/UHD, desc: "Кино 4K"}
- {id: 2007, cat: Movies/Other, desc: "Анимация"}
- {id: 2006, cat: TV/HD, desc: "Сериалы"}
- {id: 5005, cat: TV/Sport, desc: "Спорт"}

View File

@@ -0,0 +1,153 @@
---
site: horrorsite
name: Horror Site
description: "Horror Site is a Hungarian Private site for MOVIES / TV"
language: hu-hu
type: private
encoding: iso-8859-1
links:
- https://horror-site.net/
caps:
categorymappings:
- {id: 76, cat: PC/Phone-Android, desc: "Android"}
- {id: 81, cat: Movies/BluRay, desc: "BDRip"}
- {id: 82, cat: Movies/SD, desc: "Cam"}
- {id: 61, cat: Books, desc: "eBook/Hun"}
- {id: 80, cat: Movies, desc: "Film /PACK"}
- {id: 38, cat: Movies/DVD, desc: "Film/DVD-R/Hun"}
- {id: 71, cat: Movies/HD, desc: "Film/HD/Hun"}
- {id: 40, cat: Movies/SD, desc: "Film/XviD/Eng"}
- {id: 39, cat: Movies/SD, desc: "Film/XviD/Hun"}
- {id: 59, cat: XXX, desc: "Film/XXX"}
- {id: 52, cat: PC/Games, desc: "Játék/RIP/ISO"}
- {id: 75, cat: Other, desc: "Képek"}
- {id: 74, cat: XXX, desc: "Képek/XXX"}
- {id: 47, cat: Audio/Video, desc: "Klip"}
- {id: 50, cat: Audio/MP3, desc: "Mp3/Eng"}
- {id: 49, cat: Audio/MP3, desc: "Mp3/Hun"}
- {id: 45, cat: PC, desc: "Program ISO /RIP"}
- {id: 43, cat: TV, desc: "Rajzfilm/Hun"}
- {id: 57, cat: TV, desc: "Sorozat/Eng"}
- {id: 58, cat: TV, desc: "Sorozat/Hun"}
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: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "2"
options:
"2": "desc"
"1": "asc"
- name: info
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: takelogin.php
method: post
inputs:
post_kuldes: engedelyezve
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: table.browse:contains("hiba")
test:
path: /
selector: a[href="/logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active 1 active&dead 2 dead 3 recomended 4 double 5 free
incldead: 1
# 0 name 1 descr 2 both
blah: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
# does not support imdbid search
rows:
selector: table > tbody > tr.sor:has(a[href^="/download.php/"])
# error:
# - selector: div.content:contains("Meg van vonva a letöltési jogod")
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
attribute: title
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="/download.php/"]
attribute: href
imdb:
selector: a[href*="www.imdb.com/title/tt"]
optional: true
attribute: href
banner:
selector: a[onmouseover]
optional: true
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) "
files:
selector: td:nth-last-child(8)
date:
selector: td:nth-last-child(6)
filters:
- name: regexp
args: (\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})
- name: replace
args: ["\xA0", " "]
- name: dateparse
args: "2006-01-02 15:04:05"
size:
selector: td:nth-last-child(5) > u
grabs:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
downloadvolumefactor:
case:
img[src="../pic/freedownload.gif"]: 0
"*": 1
uploadvolumefactor:
case:
# img[src="../pic/????????.gif"]: 2 # there is a double (according to incldead=4) but not found at this time.
"*": 1
# engine n/a

View File

@@ -15,26 +15,26 @@
- {id: 41, cat: Movies/SD, desc: "Film/Hun/SD"}
- {id: 15, cat: Movies/DVD, desc: "Film/Hun/DVD-R"}
- {id: 27, cat: Movies/HD, desc: "Film/Hun/HD"}
- {id: 44, cat: Movies/HD, desc: "Film/Hun/UHD"}
- {id: 44, cat: Movies/UHD, desc: "Film/Hun/UHD"}
- {id: 2, cat: Books, desc: "eBook/Hun"}
- {id: 7, cat: TV/SD, desc: "Sorozat/Eng"}
- {id: 39, cat: TV/HD, desc: "Sorozat/Eng/HD"}
- {id: 42, cat: Movies/SD, desc: "Film/Eng/SD"}
- {id: 14, cat: Movies/DVD, desc: "Film/Eng/DVD-R"}
- {id: 25, cat: Movies/HD, desc: "Film/Eng/HD"}
- {id: 45, cat: Movies/HD, desc: "Film/Eng/UHD"}
- {id: 45, cat: Movies/UHD, desc: "Film/Eng/UHD"}
- {id: 1, cat: Books, desc: "eBook/Eng"}
- {id: 38, cat: Audio/Audiobook, desc: "Hangoskönyv"}
- {id: 21, cat: XXX, desc: "XXX"}
- {id: 4, cat: PC/ISO, desc: "Program/ISO"}
- {id: 19, cat: Audio/Other, desc: "Zene/Hun"}
- {id: 19, cat: Audio/MP3, desc: "Zene/Hun"}
- {id: 37, cat: Audio/Lossless, desc: "Lossless/Hun"}
- {id: 9, cat: PC/Games, desc: "Játék/ISO"}
- {id: 43, cat: Console, desc: "Játék/Konzol"}
- {id: 29, cat: Other, desc: "Képek"}
- {id: 28, cat: XXX/Imageset, desc: "XXX Képek"}
- {id: 3, cat: PC/0day, desc: "Program/Egyéb"}
- {id: 18, cat: Audio/Other, desc: "Zene/Eng"}
- {id: 18, cat: Audio/MP3, desc: "Zene/Eng"}
- {id: 26, cat: Audio/Lossless, desc: "Lossless/Eng"}
- {id: 11, cat: PC/Games, desc: "Játék/Rip"}
- {id: 13, cat: PC/Phone-Other, desc: "Mobil"}
@@ -45,13 +45,37 @@
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
notsecure: "1"
notsecure: 1
error:
- selector: div.login_error_content_text
test:
@@ -63,7 +87,10 @@
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
t: all
# 0 active 1 both 2 dead
incldead: 1
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table.torrenttable > tbody > tr:has(td.torrentmain)
@@ -123,8 +150,9 @@
filters:
- name: replace
args: [".", ""]
- name: replace
args: [" ", ""]
remove: div.uploader, div.moderation, a.leftborder
date:
selector: td.center.date
filters:
@@ -142,5 +170,6 @@
"*" : 1
description:
selector: div.contenttext
optional: true
remove: div.contenttitle
# engine tbd
# custom v2.0b

View File

@@ -23,9 +23,9 @@
- {id: 13, cat: XXX, desc: "XXX"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
@@ -69,13 +69,14 @@
test:
path: browse.php
selector: a[href^="logout.php"]
search:
paths:
# https://polishsource.cz/browse.php?search=tt1598778&incldead=1&scene=0&pl=0&sub=&search_in=nfo
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 onlyactive 1 all 2 onlydead
incldead: 1
# 0 all 1 scene 2 notscene 3 internal
@@ -85,7 +86,7 @@
# subcat blank=all
sub: ""
# title both nfo
search_in: title
search_in: "{{ if .Query.IMDBID }}nfo{{else}}title{{end}}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"

View File

@@ -18,7 +18,7 @@
- {id: 55, cat: Books, desc: "Comics"}
- {id: 5, cat: Movies/HD, desc: "Movies/720p HD"}
- {id: 8, cat: Movies/HD, desc: "Movies/1080p HD"}
- {id: 15, cat: Movies/HD, desc: "Movies/Ultra-HD"}
- {id: 15, cat: Movies/UHD, desc: "Movies/Ultra-HD"}
- {id: 44, cat: Movies, desc: "Movies/Packs"}
- {id: 69, cat: Books, desc: "E Books"}
- {id: 12, cat: Books, desc: "E Learning"}
@@ -35,9 +35,33 @@
- {id: 9, cat: XXX, desc: "XXX"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: loginproc/
@@ -55,16 +79,22 @@
search:
paths:
# https://ptfiles.net/browse.php?search=tt3612126&incldead=1&title=1
- path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 active 1 both 2 dead 3 needseed
incldead: 0
onlyname: 1
onlyname2: true
# 0 title 1 descr 2 both 3 genre
title: "{{ if .Query.IMDBID }}1{{else}}0{{end}}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
# for some users (don't know why) the table is called tablethree instead of tortable
selector: table#tortable > tbody > tr.rowhead, table#tablethree > tbody > tr.rowhead
fields:
# column 3 will be the wait time for new users
download:
@@ -124,3 +154,4 @@
filters:
- name: trim
args: "/"
# TBDev Custom

View File

@@ -28,7 +28,7 @@
- {id: 5, cat: Movies, desc: "Filmy Kreslené"}
- {id: 19, cat: Movies/HD, desc: "HD Filmy"}
- {id: 29, cat: Movies/3D, desc: "3D Blu-ray"}
- {id: 43, cat: Movies/HD, desc: "UHD Filmy"}
- {id: 43, cat: Movies/UHD, desc: "UHD Filmy"}
- {id: 28, cat: Movies/BluRay, desc: "Blu-ray"}
- {id: 18, cat: PC/Games, desc: "Hry na Windows"}
- {id: 30, cat: PC/Games, desc: "Hry na Konzole"}
@@ -85,9 +85,9 @@
- name: diacritics
args: replace
- name: replace
args: ["serie", ""]
args: ["serie", ""]
- name: replace
args: ["Serie", ""]
args: ["Serie", ""]
- name: re_replace
args: ["(\\d{2})\\.", "S$1"]
- name: re_replace

View File

@@ -10,59 +10,59 @@
caps:
categorymappings:
# App
- {id: 12, cat: PC/0day, desc: "App Win"}
- {id: 10, cat: PC/Mac, desc: "App Mac"}
# App
- {id: 12, cat: PC/0day, desc: "App Win"}
- {id: 10, cat: PC/Mac, desc: "App Mac"}
- {id: 127, cat: PC/Phone-Android, desc: "App Android"}
# Doku
- {id: 177, cat: TV/Documentary, desc: "Doku HD "}
# Doku
- {id: 177, cat: TV/Documentary, desc: "Doku HD "}
- {id: 178, cat: TV/Documentary, desc: "Doku SD "}
# Game
- {id: 263, cat: Console/Other, desc: "Game Sonstiege"}
- {id: 264, cat: Console, desc: "Game PDA / Handy"}
- {id: 265, cat: Console/PSP, desc: "Game PlayStation"}
- {id: 299, cat: Console, desc: "Game Wimmelbild"}
# Game
- {id: 263, cat: Console/Other, desc: "Game Sonstiege"}
- {id: 264, cat: Console, desc: "Game PDA / Handy"}
- {id: 265, cat: Console/PSP, desc: "Game PlayStation"}
- {id: 299, cat: Console, desc: "Game Wimmelbild"}
- {id: 17, cat: PC/Games, desc: "Game PC"}
# Movie
- {id: 277, cat: Movies, desc: "Movie Pack"}
- {id: 300, cat: Movies/3D, desc: "Movie 3D"}
- {id: 258, cat: Movies/Uhd, desc: "Movie UHD "}
- {id: 262, cat: Movies/DVD, desc: "Movie DVD-R"}
- {id: 301, cat: Movies/BluRay, desc: "Movie Bluray"}
- {id: 28, cat: Movies/SD, desc: "Movie SD "}
# Movie
- {id: 277, cat: Movies, desc: "Movie Pack"}
- {id: 300, cat: Movies/3D, desc: "Movie 3D"}
- {id: 258, cat: Movies/UHD, desc: "Movie UHD "}
- {id: 262, cat: Movies/DVD, desc: "Movie DVD-R"}
- {id: 301, cat: Movies/BluRay, desc: "Movie Bluray"}
- {id: 28, cat: Movies/SD, desc: "Movie SD "}
- {id: 32, cat: Movies/HD, desc: "Movie HD "}
# Music
- {id: 48, cat: Audio, desc: "Music Album"}
- {id: 288, cat: Audio, desc: "Music Discographie"}
- {id: 201, cat: Audio/Lossless, desc: "Music FLAC"}
- {id: 121, cat: Audio/MP3, desc: "Music MP3"}
- {id: 124, cat: Audio, desc: "Music Mixe"}
- {id: 55, cat: Audio/Video, desc: "Music Video SD"}
- {id: 53, cat: Audio, desc: "Music Sampler"}
- {id: 52, cat: Audio, desc: "Music Pack"}
- {id: 49, cat: Audio, desc: "Music Charts/Single"}
# Music
- {id: 48, cat: Audio, desc: "Music Album"}
- {id: 288, cat: Audio, desc: "Music Discographie"}
- {id: 201, cat: Audio/Lossless, desc: "Music FLAC"}
- {id: 121, cat: Audio/MP3, desc: "Music MP3"}
- {id: 124, cat: Audio, desc: "Music Mixe"}
- {id: 55, cat: Audio/Video, desc: "Music Video SD"}
- {id: 53, cat: Audio, desc: "Music Sampler"}
- {id: 52, cat: Audio, desc: "Music Pack"}
- {id: 49, cat: Audio, desc: "Music Charts/Single"}
- {id: 303, cat: Audio, desc: "Music Soundtrack"}
# Tv Serien
- {id: 286, cat: TV/Anime, desc: "Tv Serien Anime HD"}
- {id: 226, cat: TV/SD, desc: "Tv Serien SD"}
- {id: 209, cat: TV/HD, desc: "Tv Serien HD "}
- {id: 287, cat: TV/Anime, desc: "Tv Serien Anime SD"}
# Tv Serien
- {id: 286, cat: TV/Anime, desc: "Tv Serien Anime HD"}
- {id: 226, cat: TV/SD, desc: "Tv Serien SD"}
- {id: 209, cat: TV/HD, desc: "Tv Serien HD "}
- {id: 287, cat: TV/Anime, desc: "Tv Serien Anime SD"}
- {id: 273, cat: TV, desc: "Tv Serien Pack"}
# Sport
- {id: 62, cat: TV/Sport, desc: "Sport SD "}
# Sport
- {id: 62, cat: TV/Sport, desc: "Sport SD "}
- {id: 282, cat: TV/Sport, desc: "Sport HD"}
# Sonstiges
- {id: 216, cat: Books, desc: "Sonstiges Pdf"}
- {id: 202, cat: Books/Magazines, desc: "Sonstiges Magazine"}
- {id: 217, cat: Books, desc: "Sonstiges EPaper"}
- {id: 269, cat: Books, desc: "Sonstiges Hörspiel"}
- {id: 63, cat: Audio/Audiobook, desc: "Sonstiges A-Book"}
# Sonstiges
- {id: 216, cat: Books, desc: "Sonstiges Pdf"}
- {id: 202, cat: Books/Magazines, desc: "Sonstiges Magazine"}
- {id: 217, cat: Books, desc: "Sonstiges EPaper"}
- {id: 269, cat: Books, desc: "Sonstiges Hörspiel"}
- {id: 63, cat: Audio/Audiobook, desc: "Sonstiges A-Book"}
- {id: 96, cat: Books/Ebook, desc: "Sonstiges E-Book"}
# XXX
- {id: 73, cat: XXX, desc: "XXX HD "}
- {id: 75, cat: XXX, desc: "XXX Pack"}
- {id: 76, cat: XXX, desc: "XXX SD "}
- {id: 147, cat: XXX, desc: "XXX Bilder//Clips"}
# XXX
- {id: 73, cat: XXX, desc: "XXX HD "}
- {id: 75, cat: XXX, desc: "XXX Pack"}
- {id: 76, cat: XXX, desc: "XXX SD "}
- {id: 147, cat: XXX, desc: "XXX Bilder//Clips"}
- {id: 302, cat: XXX, desc: "XXX DVD-R"}
modes:

View File

@@ -10,7 +10,7 @@
legacylinks:
- https://torrent-turk.org/
- https://torrent-turk.co/
caps:
categorymappings:
- {id: 149, cat: Movies, desc: "Movies/Turkish"}
@@ -27,7 +27,7 @@
- {id: 161, cat: Movies/DVD, desc: "Movies/Foreign/DVD5-DVD9"}
- {id: 162, cat: Movies/WEBDL, desc: "Movies/Foreign/BRRip-HDRip-DVDRip-WebDL"}
- {id: 163, cat: Movies/Other, desc: "Movies/Foreign/Boxset"}
- {id: 164, cat: TV, desc: "TV"}
- {id: 165, cat: TV, desc: "TV/Turkish"}
- {id: 166, cat: TV, desc: "TV/Foreign"}
@@ -35,7 +35,7 @@
- {id: 185, cat: TV/Documentary, desc: "TV/Documentary"}
- {id: 168, cat: TV/Other, desc: "TV/Other"}
- {id: 169, cat: TV/Other, desc: "TV/Boxset"}
- {id: 191, cat: TV, desc: "TV/BluTv"}
- {id: 192, cat: TV, desc: "TV/BluTv Series"}
- {id: 193, cat: Movies, desc: "TV/BluTv Film"}
@@ -57,12 +57,12 @@
- {id: 179, cat: PC, desc: "OS"}
- {id: 180, cat: PC/Games, desc: "PC/Games"}
- {id: 181, cat: Console, desc: "Playstation"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
@@ -89,7 +89,11 @@
options:
"desc": "desc"
"asc": "asc"
- name: info_results
type: info
label: Search results
default: "If you are getting the error: <b>An error has occured!You can't view this page unless you read all your unread messages</b>, then access the site with your browser and <b>mark as read</b> all PMs."
login:
path: ?p=home&pid=1
method: form
@@ -111,11 +115,11 @@
test:
path: ?p=torrents&type=bookmarks&pid=508
selector: a#logout
search:
paths:
- path: /
keywordsfilters:
keywordsfilters:
- name: re_replace
args: ["[^a-zA-Z0-9]+", "%25"]
inputs:
@@ -129,6 +133,7 @@
"sortOptions[sortOrder]": "{{ .Config.type }}"
error:
- selector: div.error:not(:contains("Hiçbir sonuç bulunamadı."))
# does not support imdbid search and does not return imdb link in results.
rows:
selector: table#torrents_table_classic > tbody > tr:has(td.torrent_name)
@@ -150,7 +155,7 @@
attribute: href
date:
optional: true
# Uploaded 30-01-2019 15:02 by
# Uploaded 30-01-2019 15:02 by
selector: td.torrent_name:not(:contains(" at "))
filters:
- name: regexp

View File

@@ -38,9 +38,9 @@
- {id: 56, cat: XXX, desc: "XXX"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: cookie
@@ -81,11 +81,11 @@
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 onlyactive 1 all 2 onlydead 3 free
incldead: 1
# 0 title 1 descr 2 both
titlesearch: 0
titlesearch: "{{ if .Query.IMDBID }}1{{else}}0{{end}}"
# 0 all 1 polish 2 not polish
polish: 0
cat_film: ""
@@ -114,6 +114,10 @@
download:
selector: a[href^="download.php/"]
attribute: href
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
description:
text: ""
description:

View File

@@ -42,8 +42,8 @@
- {id: 20, cat: Movies/DVD, desc: "Filme DVDR"}
- {id: 120, cat: Movies/Foreign, desc: "Filme Int."}
- {id: 119, cat: Movies, desc: "Filme Remux"}
- {id: 121, cat: Movies/HD, desc: "Filme UHD"}
- {id: 124, cat: Movies/HD, desc: "Filme UHD Remux"}
- {id: 121, cat: Movies/UHD, desc: "Filme UHD"}
- {id: 124, cat: Movies/UHD, desc: "Filme UHD Remux"}
- {id: 36, cat: Movies/HD, desc: "Filme SD"}
# Serien
- {id: 112, cat: TV/Anime, desc: "Serien Anime"}
@@ -115,7 +115,7 @@
- selector: "#login_box_desc"
test:
path: my.php
ratio:
path: my.php
selector: td.navi_top:contains("Deine Ratio:")

View File

@@ -7,11 +7,12 @@
encoding: UTF-8
followredirect: true
links:
- https://torrentview5.net/
- https://torrentview6.net/
legacylinks:
- https://torrentview.net/
- https://torrentview3.net/
- https://torrentview4.net/
- https://torrentview5.net/
caps:
categorymappings:

View File

@@ -50,9 +50,9 @@
- {id: 24, cat: TV, desc: "Teens"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
login:
@@ -74,10 +74,10 @@
- path: index.php
inputs:
page: torrents
search: "{{ if .Keywords }}{{ .Keywords }}{{else}}{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{else}}0{{end}}"
# 0 filename 1 file&descr 2 descr
options: 0
# 0=title, 1=title&descr, 2=descr
options: "{{ if .Query.IMDBID }}2{{else}}0{{end}}"
# 0 all 1 activeonly 2 deadonly
active: 0
order: "{{ .Config.sort }}"

View File

@@ -18,7 +18,7 @@
- {id: 11, cat: Movies/SD, desc: "DVD-R"}
- {id: 60, cat: Movies/HD, desc: "HDTV"}
- {id: 62, cat: Movies/SD, desc: "SD"}
- {id: 89, cat: Movies/HD, desc: "UHD"}
- {id: 89, cat: Movies/UHD, desc: "UHD"}
- {id: 91, cat: Movies, desc: "Packs"}
# Serien
@@ -27,7 +27,7 @@
- {id: 77, cat: TV/SD, desc: "Serien-SD"}
- {id: 78, cat: TV/HD, desc: "Serien-720p"}
- {id: 79, cat: TV/HD, desc: "Serien-1080p"}
- {id: 95, cat: TV/HD, desc: "Serien-2160p"}
- {id: 95, cat: TV/UHD, desc: "Serien-2160p"}
# Games
- {id: 4, cat: PC/Games, desc: "Windows"}

View File

@@ -24,7 +24,11 @@
- {id: 34, cat: Movies/DVD, desc: "Film/DVD-HUN"}
- {id: 10, cat: Movies/HD, desc: "Film/HD-DVD/Külf"}
- {id: 7, cat: Movies/SD, desc: "Film/SD-X264-HUN"}
- {id: 27, cat: Movies/SD, desc: "Film/SD-X264-HUN Mese"}
- {id: 25, cat: TV/SD, desc: "Sorozat/SD-HUN"}
- {id: 8, cat: Movies/SD, desc: "Film/SD-X264"}
- {id: 28, cat: Movies/SD, desc: "Film/SD-X264 Mese/Külf."}
- {id: 26, cat: TV/SD, desc: "Sorozat/SD"}
- {id: 15, cat: XXX, desc: "Film/XXX-SD"}
- {id: 16, cat: XXX, desc: "Film/XXX-HD"}
- {id: 40, cat: XXX, desc: "Film/XXX-DVD"}
@@ -34,12 +38,8 @@
- {id: 45, cat: Console, desc: "Game/Konzol"}
- {id: 18, cat: Other, desc: "Képek"}
- {id: 17, cat: XXX, desc: "Képek/XXX"}
- {id: 27, cat: Books, desc: "Mese/Hun"}
- {id: 28, cat: Books, desc: "Mese/Külf."}
- {id: 24, cat: PC/Phone-Other, desc: "Program/Mobil"}
- {id: 1, cat: PC/0day, desc: "Program/PC"}
- {id: 25, cat: TV/SD, desc: "Sorozat/SD-HUN"}
- {id: 26, cat: TV/SD, desc: "Sorozat/SD"}
- {id: 44, cat: TV/HD, desc: "Sorozat/HD-HUN"}
- {id: 46, cat: TV/HD, desc: "Sorozat/HD"}
- {id: 48, cat: TV/UHD, desc: "Sorozat/4K-HUN"}
@@ -48,9 +48,9 @@
- {id: 12, cat: Audio, desc: "Zene/Külf."}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
@@ -100,8 +100,9 @@
args: ["[^a-zA-Z0-9]+", "%"]
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
keywords: "{{ .Keywords }}"
search_type: t_name
keywords: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# t_name , t_description , t_both , t_uploader
search_type: "{{ if .Query.IMDBID }}t_description{{else}}t_name{{end}}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
@@ -121,6 +122,10 @@
filters:
- name: regexp
args: img src=\\'(.*?)\\'
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
details:
selector: a[href*="details.php?id="][onmouseover]
attribute: href
@@ -151,6 +156,7 @@
downloadvolumefactor:
case:
img[src="./pic/freedownload.gif"]: 0
img[src="./pic/silverdownload.gif"]: 0.5
"*": 1
uploadvolumefactor:
case:

View File

@@ -45,6 +45,7 @@ namespace Jackett.Common.Indexers
Language = "en-us";
Type = "private";
TorznabCaps.SupportsImdbMovieSearch = true;
TorznabCaps.SupportsImdbTVSearch = true;
AddCategoryMapping(1, TorznabCatType.TVAnime); // Anime
AddCategoryMapping(2, TorznabCatType.MoviesBluRay); // Blu-ray
AddCategoryMapping(4, TorznabCatType.TVDocumentary); // Documentaries
@@ -115,7 +116,11 @@ namespace Jackett.Common.Indexers
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
var qc = new NameValueCollection();
var cats = MapTorznabCapsToTrackers(query, true);
var qc = new NameValueCollection
{
{"cat", cats.Count == 1 ? cats[0] : "0"}
};
var results = new List<WebClientStringResult>();
var search = new UriBuilder(SearchUrl);
if (query.IsImdbQuery)
@@ -137,7 +142,6 @@ namespace Jackett.Common.Indexers
results.Add(await RequestStringWithCookiesAndRetry(search.ToString()));
}
var trackerCats = MapTorznabCapsToTrackers(query, true);
var parser = new HtmlParser();
foreach (var result in results)
try
@@ -146,6 +150,8 @@ namespace Jackett.Common.Indexers
foreach (var child in dom.QuerySelectorAll("#needseed"))
child.Remove();
var table = dom.QuerySelector("table[align=center] + br + table > tbody");
if (table == null) // No results, so skip this search
continue;
foreach (var row in table.Children.Skip(1))
{
var release = new ReleaseInfo();
@@ -167,10 +173,6 @@ namespace Jackett.Common.Indexers
var catNum = catQuery["cat"];
release.Category = MapTrackerCatToNewznab(catNum);
// This tracker cannot search multiple cats at a time
// so search all cats then filter out results from different cats
if (trackerCats.Any() && !trackerCats.Contains(catNum))
continue;
var dateString = row.Children[5].TextContent.Trim();
var pubDate = DateTime.ParseExact(dateString, "yyyy-MM-ddHH:mm:ss", CultureInfo.InvariantCulture);
release.PublishDate = DateTime.SpecifyKind(pubDate, DateTimeKind.Local);

View File

@@ -1102,7 +1102,12 @@ namespace Jackett.Common.Indexers
case "strdump":
// for debugging
var DebugData = Data.Replace("\r", "\\r").Replace("\n", "\\n").Replace("\xA0", "\\xA0");
logger.Debug(string.Format("CardigannIndexer ({0}): strdump: {1}", ID, DebugData));
var strTag = (string)Filter.Args;
if (strTag != null)
strTag = string.Format("({0}):", strTag);
else
strTag = ":";
logger.Debug(string.Format("CardigannIndexer ({0}): strdump{1} {2}", ID, strTag, DebugData));
break;
default:
break;

View File

@@ -40,6 +40,7 @@ namespace Jackett.Common.Indexers
Type = "private";
TorznabCaps.SupportsImdbMovieSearch = true;
TorznabCaps.SupportsImdbTVSearch = true;
AddCategoryMapping(27, TorznabCatType.TVAnime, "Animation/Animes");
AddCategoryMapping(90, TorznabCatType.TVAnime, "Animes - 3D");
@@ -187,8 +188,7 @@ namespace Jackett.Common.Indexers
foreach (var row in rows.Skip(1))
{
var qTags = row.Children[1].QuerySelector("div:has(span[style=\"float: right;\"])");
if (qTags == null)
if (row.Children.Length != 9)
continue; // not a torrent line
var cat = row.Children[0].QuerySelector("a").GetAttribute("href").Split('=')[1];
@@ -201,6 +201,7 @@ namespace Jackett.Common.Indexers
var seeders = row.Children[6].QuerySelector("a").TextContent;
var leechers = row.Children[7].QuerySelector("a").TextContent;
var qTags = row.Children[1].QuerySelector("div:has(span[style=\"float: right;\"])");
var dlVolumeFactor = 1.0;
if (qTags.QuerySelector("img[alt^=\"TORRENT GRATUIT\"]") != null)
dlVolumeFactor = 0.0;

View File

@@ -0,0 +1,186 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NLog;
using WebClient = Jackett.Common.Utils.Clients.WebClient;
namespace Jackett.Common.Indexers
{
// ReSharper disable once UnusedType.Global
// ReSharper disable once UnusedMember.Global
public class EpubLibre : BaseWebIndexer
{
private string SearchUrl => SiteLink + "catalogo/index/{0}/nuevo/todos/sin/todos/{1}/ajax";
private string SobrecargaUrl => SiteLink + "inicio/sobrecarga";
private const int MaxItemsPerPage = 18;
private const int MaxSearchPageLimit = 6; // 18 items per page * 6 pages = 108
private readonly Dictionary<string, string> _apiHeaders = new Dictionary<string, string>
{
{"X-Requested-With", "XMLHttpRequest"},
};
private readonly Dictionary<string, string> _languages = new Dictionary<string, string>
{
{"1", "español"},
{"2", "catalán"},
{"3", "euskera"},
{"4", "gallego"},
{"5", "inglés"},
{"6", "francés"},
{"7", "alemán"},
{"8", "sueco"},
{"9", "mandarín"},
{"10", "italiano"},
{"11", "portugués"},
{"12", "esperanto"}
};
public EpubLibre(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base("EpubLibre",
description: "Más libros, Más libres",
link: "https://epublibre.org/",
caps: new TorznabCapabilities(TorznabCatType.BooksEbook),
configService: configService,
client: wc,
logger: l,
p: ps,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;
Language = "es-es";
Type = "public";
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
base.LoadValuesFromJson(configJson);
var releases = await PerformQuery(new TorznabQuery());
await ConfigureIfOK(string.Empty, releases.Any(), () =>
throw new Exception("Could not find any release from this URL"));
return IndexerConfigurationStatus.Completed;
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
var searchString = "--";
var maxPages = 2; // we scrape only 2 pages for recent torrents
if (!string.IsNullOrWhiteSpace(query.GetQueryString()))
{
searchString = Uri.EscapeUriString(query.GetQueryString());
maxPages = MaxSearchPageLimit;
}
var lastPublishDate = DateTime.Now;
for (var page = 0; page < maxPages; page++)
{
var searchUrl = string.Format(SearchUrl, page * MaxItemsPerPage, searchString);
var result = await RequestStringWithCookies(searchUrl, null, null, _apiHeaders);
try
{
var json = JsonConvert.DeserializeObject<dynamic>(result.Content);
var parser = new HtmlParser();
var doc = parser.ParseDocument((string)json["contenido"]);
var rows = doc.QuerySelectorAll("div.span2");
foreach (var row in rows)
{
var title = row.QuerySelector("h2").TextContent + " - " +
row.QuerySelector("h1").TextContent;
if (!CheckTitleMatchWords(query.GetQueryString(), title))
continue; // skip if it doesn't contain all words
var banner = new Uri(row.QuerySelector("img[id=catalog]").GetAttribute("src"));
var qLink = row.QuerySelector("a");
var comments = new Uri(qLink.GetAttribute("href"));
var qTooltip = parser.ParseDocument(qLink.GetAttribute("data-content"));
// we get the language from the last class tag => class="pull-right sprite idioma_5"
var languageId = qTooltip.QuerySelector("div.pull-right").GetAttribute("class").Split('_')[1];
title += $" [{_languages[languageId]}] [epub]";
var qDesc = qTooltip.QuerySelectorAll("div.row-fluid > div");
var description = $"Rev: {qDesc[0].TextContent} Páginas: {qDesc[1].TextContent} Puntación: {qDesc[2].TextContent} Likes: {qDesc[3].TextContent}";
// publish date is not available in the torrent list, but we add a relative date so we can sort
lastPublishDate = lastPublishDate.AddMinutes(-1);
var release = new ReleaseInfo
{
Title = title,
Comments = comments,
Link = comments,
Guid = comments,
PublishDate = lastPublishDate,
BannerUrl = banner,
Description = description,
Category = new List<int> {TorznabCatType.BooksEbook.ID},
Size = 5242880, // 5 MB
Seeders = 1,
Peers = 2,
MinimumRatio = 1,
MinimumSeedTime = 172800, // 48 hours
DownloadVolumeFactor = 0,
UploadVolumeFactor = 1
};
releases.Add(release);
}
if (rows.Length < MaxItemsPerPage)
break; // this is the last page
}
catch (Exception ex)
{
OnParseError(result.Content, ex);
}
}
return releases;
}
public override async Task<byte[]> Download(Uri link)
{
var result = await RequestStringWithCookies(link.AbsoluteUri);
if (SobrecargaUrl.Equals(result.RedirectingTo))
throw new Exception("El servidor se encuentra sobrecargado en estos momentos. / The server is currently overloaded.");
try {
var parser = new HtmlParser();
var doc = parser.ParseDocument(result.Content);
var magnetLink = doc.QuerySelector("a[id=en_desc]").GetAttribute("href");
return Encoding.UTF8.GetBytes(magnetLink);
}
catch (Exception ex)
{
OnParseError(result.Content, ex);
}
return null;
}
// TODO: merge this method with query.MatchQueryStringAND
private static bool CheckTitleMatchWords(string queryStr, string title)
{
// this code split the words, remove words with 2 letters or less, remove accents and lowercase
var queryMatches = Regex.Matches(queryStr, @"\b[\w']*\b");
var queryWords = from m in queryMatches.Cast<Match>()
where !string.IsNullOrEmpty(m.Value) && m.Value.Length > 2
select Encoding.UTF8.GetString(Encoding.GetEncoding("ISO-8859-8").GetBytes(m.Value.ToLower()));
var titleMatches = Regex.Matches(title, @"\b[\w']*\b");
var titleWords = from m in titleMatches.Cast<Match>()
where !string.IsNullOrEmpty(m.Value) && m.Value.Length > 2
select Encoding.UTF8.GetString(Encoding.GetEncoding("ISO-8859-8").GetBytes(m.Value.ToLower()));
titleWords = titleWords.ToArray();
return queryWords.All(word => titleWords.Contains(word));
}
}
}

View File

@@ -5,7 +5,6 @@ using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AngleSharp.Dom;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
@@ -89,7 +88,7 @@ namespace Jackett.Common.Indexers
var loginPage = await RequestStringWithCookies(SiteLink, string.Empty);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, SiteLink, SiteLink);
await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
await ConfigureIfOK(result.Cookies, result.Content?.Contains("logout.php") == true, () =>
{
var parser = new HtmlParser();
var dom = parser.ParseDocument(result.Content);
@@ -105,7 +104,6 @@ namespace Jackett.Common.Indexers
var releases = new List<ReleaseInfo>();
var searchString = query.GetQueryString();
var searchUrl = BrowseUrl;
var trackerCats = MapTorznabCapsToTrackers(query);
var queryCollection = new NameValueCollection();
// Tracker can only search OR return things in categories
@@ -117,21 +115,11 @@ namespace Jackett.Common.Indexers
else
{
foreach (var cat in MapTorznabCapsToTrackers(query))
{
queryCollection.Add("c" + cat, "1");
}
queryCollection.Add("incldead", "0");
}
searchUrl += "?" + queryCollection.GetQueryString();
await ProcessPage(releases, searchUrl);
return releases;
}
private async Task ProcessPage(List<ReleaseInfo> releases, string searchUrl)
{
var response = await RequestStringWithCookiesAndRetry(searchUrl, null, BrowseUrl);
if (response.IsRedirect)
{
@@ -146,7 +134,9 @@ namespace Jackett.Common.Indexers
var parser = new HtmlParser();
var dom = parser.ParseDocument(results);
var rows = dom.QuerySelectorAll(".browsetable").Last().QuerySelectorAll("tr"); //the class for the table changed
var rows = dom.QuerySelectorAll(".browsetable").LastOrDefault()?.QuerySelectorAll("tr");
if (rows == null)
return releases;
foreach (var row in rows.Skip(1))
{
var release = new ReleaseInfo();
@@ -159,9 +149,7 @@ namespace Jackett.Common.Indexers
// If we search an get no results, we still get a table just with no info.
if (string.IsNullOrWhiteSpace(release.Title))
{
break;
}
// Check if the release has been assigned a category
var category = row.QuerySelector("td:nth-of-type(1) a");
@@ -193,6 +181,8 @@ namespace Jackett.Common.Indexers
{
OnParseError(results, ex);
}
return releases;
}
}
}

View File

@@ -1,10 +1,10 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using AngleSharp.Dom;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
@@ -41,6 +41,8 @@ namespace Jackett.Common.Indexers
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";
TorznabCaps.SupportsImdbMovieSearch = true;
TorznabCaps.SupportsImdbTVSearch = true;
AddCategoryMapping(15, TorznabCatType.MoviesBluRay); // Movie / Blu-ray
AddMultiCategoryMapping(TorznabCatType.MoviesHD,
@@ -79,7 +81,7 @@ namespace Jackett.Common.Indexers
};
// Send Post
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl);
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, referer: LoginUrl);
await ConfigureIfOK(response.Cookies, response.Content?.Contains("logout.php") == true, () =>
{
@@ -99,13 +101,19 @@ namespace Jackett.Common.Indexers
var queryCollection = new NameValueCollection
{
{"active", "0"},
{"options", "0"},
{"category", string.Join(";", MapTorznabCapsToTrackers(query))}
};
var searchString = query.GetQueryString();
if (!string.IsNullOrWhiteSpace(searchString))
queryCollection.Add("search", searchString);
if (query.IsImdbQuery)
{
queryCollection.Add("options", "2");
queryCollection.Add("search", query.ImdbIDShort);
}
else
{
queryCollection.Add("options", "0");
queryCollection.Add("search", query.GetQueryString());
}
var response = await RequestStringWithCookiesAndRetry(SearchUrl + queryCollection.GetQueryString());
@@ -119,7 +127,7 @@ namespace Jackett.Common.Indexers
{
// this tracker has horrible markup, find the result rows by looking for the style tag before each one
var prev = row.PreviousElementSibling;
if (prev == null || prev.NodeName.ToLowerInvariant() != "style")
if (prev == null || !string.Equals(prev.NodeName, "style", StringComparison.OrdinalIgnoreCase))
continue;
var release = new ReleaseInfo();
@@ -131,12 +139,16 @@ namespace Jackett.Common.Indexers
release.Comments = new Uri(SiteLink + qLink.GetAttribute("href"));
release.Guid = release.Comments;
var imdbLink = row.Children[1].QuerySelector("a[href*=imdb]");
if(imdbLink != null)
release.Imdb = ParseUtil.GetImdbID(imdbLink.GetAttribute("href").Split('/').Last());
var qDownload = row.Children[3].FirstElementChild;
release.Link = new Uri(SiteLink + qDownload.GetAttribute("href"));
var dateStr = row.Children[4].TextContent.Trim();
//"July 11, 2015, 13:34:09", "Today|Yesterday at 20:04:23"
release.PublishDate = DateTimeUtil.FromUnknown(dateStr.Replace("at", string.Empty));
release.PublishDate = DateTimeUtil.FromUnknown(dateStr);
var sizeStr = row.Children[5].TextContent;
release.Size = ReleaseInfo.GetBytes(sizeStr);
release.Seeders = ParseUtil.CoerceInt(row.Children[7].TextContent);

View File

@@ -422,7 +422,7 @@ namespace Jackett.Common.Indexers
// Building our tracker query
parameters.Add("incldead", "1");
parameters.Add("fullsearch", "0");
parameters.Add("fullsearch", ConfigData.UseFullSearch.Value ? "1" : "0");
parameters.Add("scenerelease", "0");
// If search term provided

View File

@@ -7,6 +7,7 @@ namespace Jackett.Common.Models.IndexerConfig.Bespoke
public StringItem Password { get; private set; }
public DisplayItem PagesWarning { get; private set; }
public StringItem Pages { get; private set; }
public BoolItem UseFullSearch { get; private set; }
public DisplayItem SecurityWarning { get; private set; }
public BoolItem Latency { get; private set; }
public BoolItem Browser { get; private set; }
@@ -31,6 +32,7 @@ namespace Jackett.Common.Models.IndexerConfig.Bespoke
Password = new StringItem { Name = "Password", Value = "" };
PagesWarning = new DisplayItem("<b>Preferences Configuration</b> (<i>Tweak your search settings</i>),<br /><br /> <ul><li><b>Max Pages to Process</b> let you specify how many page (max) Jackett can process when doing a search. Setting a value <b>higher than 4 is dangerous</b> for you account ! (<b>Result of too many requests to tracker...that <u>will be suspect</u></b>).</li></ul>") { Name = "Preferences" };
Pages = new StringItem { Name = "Max Pages to Process (Required)", Value = "4" };
UseFullSearch = new BoolItem { Name = "Enable search in description.", Value = false };
SecurityWarning = new DisplayItem("<b>Security Configuration</b> (<i>Read this area carefully !</i>),<br /><br /> <ul><li><b>Latency Simulation</b> will simulate human browsing with Jacket by pausing Jacket for an random time between each request, to fake a real content browsing.</li><li><b>Browser Simulation</b> will simulate a real human browser by injecting additionals headers when doing requests to tracker.<b>You must enable it to use this provider!</b></li></ul>") { Name = "Security" };
Latency = new BoolItem() { Name = "Latency Simulation (Optional)", Value = false };
Browser = new BoolItem() { Name = "Browser Simulation (Forced)", Value = true };

View File

@@ -9,9 +9,9 @@ namespace Jackett.Common.Utils
public const string Rfc1123ZPattern = "ddd, dd MMM yyyy HH':'mm':'ss z";
private static readonly Regex _TimeAgoRegexp = new Regex(@"(?i)\bago", RegexOptions.Compiled);
private static readonly Regex _TodayRegexp = new Regex(@"(?i)\btoday([\s,]*|$)", RegexOptions.Compiled);
private static readonly Regex _TomorrowRegexp = new Regex(@"(?i)\btomorrow([\s,]*|$)", RegexOptions.Compiled);
private static readonly Regex _YesterdayRegexp = new Regex(@"(?i)\byesterday([\s,]*|$)", RegexOptions.Compiled);
private static readonly Regex _TodayRegexp = new Regex(@"(?i)\btoday(?:[\s,]+(?:at){0,1}\s*|[\s,]*|$)", RegexOptions.Compiled);
private static readonly Regex _TomorrowRegexp = new Regex(@"(?i)\btomorrow(?:[\s,]+(?:at){0,1}\s*|[\s,]*|$)", RegexOptions.Compiled);
private static readonly Regex _YesterdayRegexp = new Regex(@"(?i)\byesterday(?:[\s,]+(?:at){0,1}\s*|[\s,]*|$)", RegexOptions.Compiled);
private static readonly Regex _DaysOfWeekRegexp = new Regex(@"(?i)\b(monday|tuesday|wednesday|thursday|friday|saturday|sunday)\s+at\s+", RegexOptions.Compiled);
private static readonly Regex _MissingYearRegexp = new Regex(@"^(\d{1,2}-\d{1,2})(\s|$)", RegexOptions.Compiled);
private static readonly Regex _MissingYearRegexp2 = new Regex(@"^(\d{1,2}\s+\w{3})\s+(\d{1,2}\:\d{1,2}.*)$", RegexOptions.Compiled); // 1 Jan 10:30
@@ -287,28 +287,9 @@ namespace Jackett.Common.Utils
}
}
private static TimeSpan ParseTimeSpan(string time)
{
if (string.IsNullOrWhiteSpace(time))
return TimeSpan.Zero;
var offset = TimeSpan.Zero;
if (time.EndsWith("AM"))
{
time = time.Substring(0, time.Length - 2);
if (time.StartsWith("12")) // 12:15 AM becomes 00:15
time = "00" + time.Substring(2);
}
else if (time.EndsWith("PM"))
{
time = time.Substring(0, time.Length - 2);
offset = TimeSpan.FromHours(12);
}
var ts = TimeSpan.Parse(time);
ts += offset;
return ts;
}
private static TimeSpan ParseTimeSpan(string time) =>
string.IsNullOrWhiteSpace(time)
? TimeSpan.Zero
: DateTime.Parse(time).TimeOfDay;
}
}

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using NUnit.Framework;
namespace Jackett.Common.Utils.Tests
{
[TestFixture]
public class DateTimeUtilTests
{
[Test]
public void FromUnknownTest()
{
var today = DateTime.UtcNow.Date;
var yesterday = today.AddDays(-1);
var tomorrow = today.AddDays(1);
var testCases = new Dictionary<string, DateTime>
{
{"today, at 1:00 PM", today.AddHours(13)},
{"today at 12:00PM", today.AddHours(12)},
{"Today", today},
{"Today at 20:19:54", today.AddHours(20).AddMinutes(19).AddSeconds(54)},
{"Today 22:29", today.AddHours(22).AddMinutes(29)},
{"Yesterday\n 19:54:54", yesterday.AddHours(19).AddMinutes(54).AddSeconds(54)},
{"Yesterday\n 11:55 PM", yesterday.AddHours(23).AddMinutes(55)}
};
foreach (var testCase in testCases)
Assert.AreEqual( testCase.Value, DateTimeUtil.FromUnknown(testCase.Key));
}
}
}