Compare commits

..

13 Commits

Author SHA1 Message Date
Garfield69
c0a5e24186 Update ptchina.yml 2023-06-06 16:05:10 +12:00
Garfield69
0e043a5792 assorted nexusphp: update engine tag 2023-06-06 16:01:49 +12:00
Bogdan
98f7e720e7 cardigann: allow empty inputs for login.method get (#14430) 2023-06-06 05:56:14 +03:00
Bogdan
8154acb47b cardigann: allow empty inputs for login.method get 2023-06-06 01:02:45 +03:00
Garfield69
df94aaf930 cinecalidad: new domain 2023-06-06 09:23:56 +12:00
Bogdan
d8dc0d221a torrentleech: use login form (#14428) resolves #14410 2023-06-06 09:11:58 +12:00
Garfield69
3ba502a378 YTS: correct sort
the default is date_added so using sort=date_added instead of sort_by=date_added did not make any difference but at least now we are in line with the api docs ;-)
2023-06-06 07:33:07 +12:00
Bogdan
b9655f1302 digitalcore: add search P2P releases only option 2023-06-05 19:46:34 +03:00
Garfield69
422eff86f4 hdtorrentsit: removed. resolves #14411 2023-06-05 17:21:55 +12:00
Garfield69
e66d88bbcf hd-unit3d: update engine tag 2023-06-05 15:47:08 +12:00
Garfield69
669ddae0b0 theoldschool: drop page 2023-06-05 15:46:44 +12:00
Garfield69
0b0d08dd7c bwtorrents: new cat 2023-06-05 07:39:54 +12:00
Garfield69
bf5b24a5a7 ccfbits: removed. resolves #14306 2023-06-04 20:08:56 +12:00
28 changed files with 71 additions and 359 deletions

View File

@@ -300,7 +300,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* CarPT
* CartoonChaos (CC)
* Cathode-Ray.Tube (CRT)
* CCFBits [![(invite needed)][inviteneeded]](#)
* Central Torrent
* CeskeForum
* CGPeers [![(invite needed)][inviteneeded]](#)
@@ -383,7 +382,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* HDRoute [![(invite needed)][inviteneeded]](#)
* HDSky [![(invite needed)][inviteneeded]](#)
* HDTime
* HDTorrents.it [![(invite needed)][inviteneeded]](#)
* HDTurk
* HDU
* HDVIDEO

View File

@@ -189,4 +189,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.2 2023-05-08
# NexusPHP v1.8.3 2023-05-14

View File

@@ -123,6 +123,7 @@ caps:
- {id: 217, cat: Movies, desc: "Tamil-Movies | Remuxes BluRay"}
- {id: 218, cat: TV, desc: "TV-Ishara TV"}
- {id: 219, cat: TV, desc: "TV-Bengali Tv"}
- {id: 220, cat: TV, desc: "TV-Shemaroo Umang"}
modes:
search: [q]

View File

@@ -189,4 +189,4 @@ search:
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.7.37 2023-05-08
# NexusPHP v1.7.38 2023-05-14

View File

@@ -1,152 +0,0 @@
---
id: ccfbits
name: CCFBits
description: "CCFBits is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://ccfbits.org/
caps:
categorymappings:
# 高清电影
- {id: 39, cat: Movies/HD, desc: "HD-DVD原盘"}
- {id: 40, cat: Movies/BluRay, desc: "Blu-ray原盘"}
- {id: 30, cat: Movies/HD, desc: "高清电影1080p"}
- {id: 2, cat: Movies/HD, desc: "高清电影720p"}
# 高清电视剧
- {id: 7, cat: TV/HD, desc: "高清欧美剧"}
- {id: 32, cat: TV/HD, desc: "高清国产剧"}
- {id: 34, cat: TV/HD, desc: "高清港台剧"}
- {id: 36, cat: TV/HD, desc: "高清日韩剧"}
# 其他高清视频
- {id: 12, cat: TV/Documentary, desc: "高清纪录片"}
- {id: 11, cat: TV/Sport, desc: "高清体育"}
- {id: 23, cat: TV/Anime, desc: "高清动漫"}
- {id: 4, cat: Audio/Video, desc: "高清MV/综艺"}
# 电视剧集包
- {id: 38, cat: TV/HD, desc: "欧美剧包"}
- {id: 33, cat: TV/HD, desc: "国产剧包"}
- {id: 35, cat: TV/HD, desc: "港台剧包"}
- {id: 37, cat: TV/HD, desc: "日韩剧包"}
# 非高清和其他
- {id: 43, cat: TV/SD, desc: "HR_HDTV"}
- {id: 20, cat: Movies/DVD, desc: "DVD"}
- {id: 42, cat: Movies/SD, desc: "XviD"}
- {id: 3, cat: Audio, desc: "无损音乐"}
- {id: 22, cat: Other, desc: "杂项"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-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: added
options:
added: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: DESC
options:
DESC: desc
ASC: asc
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.embedded:has(h2:contains("登录失败"))
test:
path: browse.php
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0 active 1 incldead 2 deadonly
incldead: 1
fullsearch: "{{ if .Query.IMDBID }}1{{ else }}{{ end }}"
sort: "{{ .Config.sort }}"
d: "{{ .Config.sort }}"
rows:
selector: table[border="1"][cellpadding="5"] > tbody > tr:has(a[href^="details.php?id="])
fields:
title:
selector: a[title][href^="details.php?id="]
attribute: title
filters:
- name: split
args: ["\n", 0]
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php/"]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
files:
selector: a[href$="&filelist=1"]
grabs:
selector: a[href^="snatches.php?id"]
filters:
- name: replace
args: ["次", ""]
size:
selector: td:nth-child(7)
remove: a
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
date:
selector: td:nth-child(5)
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
downloadvolumefactor:
case:
"font[color=\"#C20603\"]:contains(\"免费\")": 0
"font:has([src=\"/pic/arrowdown1.gif\"]):contains(\"0.5x\")": 0.5
"*": 1
uploadvolumefactor:
case:
"font:has([src=\"/pic/arrowup1.gif\"]):contains(\"1.5x\")": 1.5
"font:has([src=\"/pic/arrowup1.gif\"]):contains(\"2x\")": 2
"*": 1
description:
selector: td:nth-child(2) > table > tbody > tr:nth-child(2)
remove: a, img
# Discuz! 7.2

View File

@@ -71,6 +71,10 @@ settings:
type: checkbox
label: Search freeleech only
default: false
- name: p2p_releases_only
type: checkbox
label: Search P2P releases only
default: false
- name: sort
type: select
label: Sort requested from site
@@ -109,6 +113,7 @@ search:
index: 0
limit: 100
order: "{{ .Config.type }}"
p2p: "{{ if .Config.p2p_releases_only }}true{{ else }}{{ end }}"
page: search
searchText: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }} {{ else }}{{ end }}{{ .Keywords }}"
section: all

View File

@@ -148,4 +148,4 @@ search:
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 6.3.0
# json UNIT3D 6.4.1

View File

@@ -146,4 +146,4 @@ search:
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
# NexusPHP 2c858e7 (Customised)
# NexusPHP 4e16128 (Customised)

View File

@@ -195,4 +195,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.2 2023-05-06
# NexusPHP v1.8.4 2023-05-27

View File

@@ -171,4 +171,4 @@ search:
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.7.29 2022-10-12
# NexusPHP v1.8.3 2023-05-13

View File

@@ -188,4 +188,4 @@ search:
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.7.37 2023-05-08
# NexusPHP v1.8.4 2023-06-04

View File

@@ -1,161 +0,0 @@
---
id: hdtorrentsit
name: HDTorrents.it
description: "HDTorrents.it is an ITALIAN Private site for TV / MOVIES"
language: it-IT
type: private
encoding: UTF-8
links:
- https://hdtorrents.xyz/ # Italian IP address filtering
legacylinks:
- http://hdtorrents.it/
- http://hdtorrents.xyz/
caps:
categorymappings:
- {id: 2040, cat: Movies/HD}
- {id: 5040, cat: TV/HD}
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: ip_filtering
type: info
label: "IP Filtering"
default: "The <b>404 Not Found</b> error means your IP was not accepted. Check the <a href=\"https://check-host.net/check-report/e5b649bkfa\" target=\"_blank\">Locations report</a>, only those with a Status of <b>OK</b> will be accepted."
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.error
- selector: h1:contains("404 Not Found")
test:
path: browse.php
search:
paths:
- path: browse.php
method: post
allowEmptyInputs: true
keywordsfilters:
- name: re_replace
args: ["[^a-zA-Z0-9]+", "%"]
- name: diacritics
args: replace
- name: re_replace # remove SXXEYY from research
args: ["(?i)(S\\d{1,2}E\\d{1,2})", ""]
- name: re_replace # remove SXX from research
args: ["(?i)(S\\d{1,2})", ""]
inputs:
ajax: false
search: "{{ .Keywords }}"
# 0 active 1 incldead 2 onlydead 3 gold 4 no seeders
incldead: 0
rows:
selector: tbody#highlighted tr
fields:
year:
selector: td:nth-child(2) a:nth-child(1)
filters:
- name: regexp # find torrent year
args: (\d{4})
_quality: # (BDRip 1080, BDRip 720p etc)
selector: td:nth-child(1) a:nth-child(1) img
attribute: alt
_audio: # ita audio TAG
selector: a[href^="download.php?id="]
attribute: href
filters:
- name: querystring
args: name
- name: regexp
args: (DTS AC3 ITA|DTS ITA|AC3 ITA)
- name: re_replace
args: ["ITA", ""]
title:
selector: td:nth-child(2) a:nth-child(1)
filters:
- name: re_replace # separate title
args: ["(\\s+\\/\\s+|\\/\\s+|\\s+\\/|\\/)(.*)\\s\\(", " ("]
- name: re_replace # remove (yyyy) from the title
args: ["(\\(\\d{4}\\)?\\s?)", ""]
- name: re_replace # remove |
args: ["(\\s\\||\\s\\/)", ""]
- name: re_replace # Stagione X --> S0X
args: ["(?i)\\bStagion[ei]\\s?(\\d{1})\\b|\\bSeason'?s?\\s?(\\d{1})\\b", "S0$1$2"]
- name: re_replace # Stagione XX --> SXX
args: ["(?i)\\bStagion[ei]\\s?(\\d{2,})\\b|\\bSeason'?s?\\s?(\\d{2,})\\b", "S$1$2"]
- name: re_replace # / Episodio [YY-YY --> EYY-YY
args: ["(?i)(\\s\\/?\\s?Episodi[o]?)\\s\\[", "E"]
- name: re_replace # Episodio 4 to E4
args: ["(?i)\\b(?:[\\s\\/\\|]?Episodi[o]?\\s?(\\d+)|Puntata\\s?(\\d+))", "E$1$2"]
- name: re_replace # / Completa [episodi YY-YY --> EYY-YY
args: ["(?i)(\\s\\/\\sCompleta\\s\\[episodi\\s)", "E"]
- name: re_replace # remove di YY] | remove /YY]
args: ["(?i)(\\sdi\\s\\d{1,2}|\\/\\d{1,2})\\]", " "]
- name: re_replace # remove various
args: ["(?i)(Serie completa|Completa|\\[in pausa\\])", ""]
- name: append
args: " ({{ .Result.year }}) [{{ .Result._quality }} - {{ .Result._audio }} ITA]"
- name: re_replace # replace multiple spaces
args: ["[ ]{2,}", " "]
details:
selector: td:nth-child(2) a:nth-child(1)
attribute: href
poster:
selector: td:nth-child(2)[onmousemove]
attribute: onmousemove
filters:
- name: regexp
args: ".*\\(.*,.*,.*,'(.*?)'\\)"
download:
selector: a[href^="download.php?id="]
attribute: href
size:
selector: td:nth-child(3)
seeders:
selector: td:nth-child(4)
optional: true
default: 1
filters:
- name: re_replace
args: ["(\\d*) \\(\\+\\d*\\)\n? \\| (\\d*) \\(\\+\\d*\\)", "$1"]
leechers:
selector: td:nth-child(4)
optional: true
default: 1
filters:
- name: re_replace
args: ["(\\d*) \\(\\+\\d*\\)\n? \\| (\\d*) \\(\\+\\d*\\)", "$2"]
date:
selector: td:nth-child(2) i
filters:
- name: append
args: " +02:00" # EET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
category:
case:
"a[href^=\"details.php\"]:contains(\"Stagione\")": 5040 # TV/HD
"*": 2040 # default to Movies/HD
downloadvolumefactor:
case:
img[src="pic/freedownload.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
# engine tbd

View File

@@ -169,4 +169,4 @@ search:
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.7.34 2023-01-16
# NexusPHP v1.7.39 2023-05-15

View File

@@ -179,4 +179,4 @@ search:
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.7.26 2022-09-15
# NexusPHP v1.8.2 2023-05-08

View File

@@ -178,4 +178,4 @@ search:
filters:
- name: replace
args: [" 剩余时间:", ""]
# NexusPHP v1.7.29 2022-10-13
# NexusPHP v1.8.2 2023-05-08

View File

@@ -192,4 +192,4 @@ search:
remove: a, img, span
description:
text: "{{ .Result.genre }}"
# NexusPHP v1.7.33 2022-12-19
# NexusPHP v1.8.0 2023-04-16

View File

@@ -188,4 +188,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.2 2023-05-08
# NexusPHP v1.8.3 2023-05-14

View File

@@ -172,4 +172,4 @@ search:
filters:
- name: replace
args: [" 剩余时间:", ""]
# Ourbits 1.1.0 (Based on NexusPHP Standard v1.5 Beta 4) 4691022 2023-05-04
# Ourbits 1.1.0 (Based on NexusPHP Standard v1.5 Beta 4) 3feac18 2023-05-30

View File

@@ -185,4 +185,4 @@ search:
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.2 2023-04-29
# NexusPHP v1.8.4 2023-05-27

View File

@@ -112,7 +112,6 @@ search:
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
keywordsfilters:
- name: re_replace
@@ -211,4 +210,4 @@ search:
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D custom edition 1.0.2 (based on 6.5.0)
# json UNIT3D custom edition 1.0.1 (based on 6.5.0)

View File

@@ -122,7 +122,8 @@ settings:
login:
path: user/account/login/
method: post
method: form
form: form[name="login-form"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"

View File

@@ -181,4 +181,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.2 2023-05-08
# NexusPHP v1.8.4 2023-05-27

View File

@@ -162,4 +162,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.2 2023-04-30
# NexusPHP v1.8.4 2023-06-05

View File

@@ -61,12 +61,13 @@ search:
type: json
inputs:
# ignore ' (e.g. search for america's Next Top Model)
query_term: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# without this the API sometimes returns nothing
limit: 50
sort: date_added
sort_by: date_added
order_by: desc
keywordsfilters:
# ignore ' (e.g. search for america's Next Top Model)
- name: re_replace
args: ["[^\\w]+", " "]

View File

@@ -186,4 +186,4 @@ search:
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.2 2023-05-08
# NexusPHP v1.8.4 2023-05-27

View File

@@ -555,10 +555,14 @@ namespace Jackett.Common.Indexers
if (Login.Method == "post")
{
var pairs = new Dictionary<string, string>();
foreach (var Input in Definition.Login.Inputs)
if (Login.Inputs != null && Login.Inputs.Any())
{
var value = applyGoTemplateText(Input.Value);
pairs.Add(Input.Key, value);
foreach (var input in Login.Inputs)
{
var value = applyGoTemplateText(input.Value);
pairs.Add(input.Key, value);
}
}
var LoginUrl = resolvePath(Login.Path).ToString();
@@ -628,18 +632,27 @@ namespace Jackett.Common.Indexers
pairs[name] = value;
}
foreach (var Input in Definition.Login.Inputs)
if (Login.Inputs != null && Login.Inputs.Any())
{
var value = applyGoTemplateText(Input.Value);
var input = Input.Key;
if (Login.Selectors)
foreach (var Input in Login.Inputs)
{
var inputElement = landingResultDocument.QuerySelector(Input.Key);
if (inputElement == null)
throw new ExceptionWithConfigData(string.Format("Login failed: No input found using selector {0}", Input.Key), configData);
input = inputElement.GetAttribute("name");
var value = applyGoTemplateText(Input.Value);
var input = Input.Key;
if (Login.Selectors)
{
var inputElement = landingResultDocument.QuerySelector(Input.Key);
if (inputElement == null)
{
throw new ExceptionWithConfigData($"Login failed: No input found using selector {Input.Key}", configData);
}
input = inputElement.GetAttribute("name");
}
pairs[input] = value;
}
pairs[input] = value;
}
// selector inputs
@@ -772,18 +785,22 @@ namespace Jackett.Common.Indexers
else if (Login.Method == "get")
{
var queryCollection = new NameValueCollection();
foreach (var Input in Definition.Login.Inputs)
if (Login.Inputs != null && Login.Inputs.Any())
{
var value = applyGoTemplateText(Input.Value);
queryCollection.Add(Input.Key, value);
foreach (var input in Login.Inputs)
{
var value = applyGoTemplateText(input.Value);
queryCollection.Add(input.Key, value);
}
}
var LoginUrl = resolvePath(Login.Path + "?" + queryCollection.GetQueryString()).ToString();
var loginUrl = resolvePath(Login.Path + "?" + queryCollection.GetQueryString()).ToString();
configData.CookieHeader.Value = null;
var loginResult = await RequestWithCookiesAsync(LoginUrl, referer: SiteLink, headers: headers);
var loginResult = await RequestWithCookiesAsync(loginUrl, referer: SiteLink, headers: headers);
configData.CookieHeader.Value = loginResult.Cookies;
checkForError(loginResult, Definition.Login.Error);
checkForError(loginResult, Login.Error);
}
else if (Login.Method == "oneurl")
{
@@ -793,11 +810,11 @@ namespace Jackett.Common.Indexers
var loginResult = await RequestWithCookiesAsync(LoginUrl, referer: SiteLink, headers: headers);
configData.CookieHeader.Value = loginResult.Cookies;
checkForError(loginResult, Definition.Login.Error);
checkForError(loginResult, Login.Error);
}
else
{
throw new NotImplementedException("Login method " + Definition.Login.Method + " not implemented");
throw new NotImplementedException($"Login method {Login.Method} not implemented");
}
logger.Debug($"CardigannIndexer ({Id}): Cookies after login: {CookieHeader}");

View File

@@ -24,7 +24,7 @@ namespace Jackett.Common.Indexers
public override string Id => "cinecalidad";
public override string Name => "Cinecalidad";
public override string Description => "Películas Full HD en Latino Dual.";
public override string SiteLink { get; protected set; } = "https://www.cinecalidad.gs/";
public override string SiteLink { get; protected set; } = "https://www.cinecalidad.tf/";
public override string[] LegacySiteLinks => new[]
{
"https://cinecalidad.website/",
@@ -44,7 +44,8 @@ namespace Jackett.Common.Indexers
"https://cinecalidad.dev/",
"https://cinecalidad.ms/",
"https://www3.cinecalidad.ms/",
"https://ww1.cinecalidad.ms/"
"https://ww1.cinecalidad.ms/",
"https://www.cinecalidad.gs/"
};
public override string Language => "es-419";
public override string Type => "public";

View File

@@ -314,6 +314,7 @@ namespace Jackett.Updater
"Definitions/btxpress.yml",
"Definitions/casatorrent.yml", // renamed to teamctgame
"Definitions/casstudiotv.yml",
"Definitions/ccfbits.yml",
"Definitions/channelx.yml",
"Definitions/cili180.yml", // renamed to liaorencili
"Definitions/cilipro.yml",
@@ -401,6 +402,7 @@ namespace Jackett.Updater
"Definitions/hdreactor.yml", // renamed to hdhouse
"Definitions/hdspain.yml",
"Definitions/hdstreet.yml",
"Definitions/hdtorrentsit.yml",
"Definitions/hellashut.yml",
"Definitions/hellastz.yml",
"Definitions/hidden-palace.yml",