Compare commits

..

12 Commits

Author SHA1 Message Date
Garfield69
81e0101cbd bithdtv; add config link to the rate limit forum topic #15993 2025-05-16 15:49:56 +12:00
Garfield69
479392cf4f bithdtv: add request limit detection. #15993 2025-05-16 14:02:58 +12:00
Garfield69
be377ac649 uindex: add c=0 to search. resolves #15912 2025-05-16 05:28:10 +12:00
Garfield69
36d3f19086 Merge branch 'master' of https://github.com/Jackett/Jackett 2025-05-16 05:24:47 +12:00
Garfield69
158d92d336 torrentqq: bump alternate domain 2025-05-16 05:24:38 +12:00
Garfield69
d7ed800d54 siambit: add flaresolverr info 2025-05-16 05:24:23 +12:00
Garfield69
366ce176bb ebook-shares: new cats 2025-05-16 05:24:08 +12:00
Garfield69
e0d3b960ad Update rudub.yml 2025-05-16 05:23:54 +12:00
ilike2burnthing
ae7d6c499b Update Program.cs 2025-05-15 18:03:14 +01:00
ilike2burnthing
1aba79fe13 enthralled2fa: removed. #14897 2025-05-15 18:03:10 +01:00
ilike2burnthing
e4a9019f7f Update README.md 2025-05-15 17:55:41 +01:00
ilike2burnthing
be26c199bf assorted: fix year regex (#15994) 2025-05-15 17:38:44 +01:00
18 changed files with 41 additions and 150 deletions

View File

@@ -432,7 +432,7 @@ Prior versions of Jackett are no longer supported.
* Leech24
* LemonHD [![(invite needed)][inviteneeded]](#)
* Lesbians4u
* LetSeed [![(invite needed)][inviteneeded]](#)
* LetSeed
* Libble
* LibraNet (LN)
* LinkoManija

View File

@@ -152,7 +152,7 @@ search:
keywordsfilters:
# drop the year from searches since site titles do not include year
- name: re_replace
args: ["(19|20[0-9]{2})", ""]
args: ["(\\b((19|20)\\d{2})\\b)", ""]
rows:
selector: "div#fancy-list-group ul.list-group li.list-group-item{{ if .Config.freeleech }}:has(span.badge-success:contains(\"FREE\")){{ else }}{{ end }}"

View File

@@ -106,7 +106,7 @@ search:
text: "{{ if .Result.title_phase1_title }}{{ .Result.title_phase1_title }}{{ else }}{{ .Result.title_phase1_url }}{{ end }}"
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b((19|20)\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:

View File

@@ -93,7 +93,7 @@ search:
selector: a
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b((19|20)\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:

View File

@@ -24,6 +24,12 @@ caps:
- {id: 311, cat: Audio/Audiobook, desc: "Audio:Romance"}
- {id: 317, cat: Audio/Audiobook, desc: "Audio:Urbn Fant/para"}
- {id: 319, cat: Audio/Audiobook, desc: "Audio:V.I.P"}
- {id: 320, cat: Audio/Audiobook, desc: "Audio:Science/engine"}
- {id: 321, cat: Audio/Audiobook, desc: "Audio:History/War"}
- {id: 322, cat: Audio/Audiobook, desc: "Audio:non fiction"}
- {id: 323, cat: Audio/Audiobook, desc: "Audio:Educational"}
- {id: 324, cat: Audio/Audiobook, desc: "Audio:Tutorials"}
- {id: 325, cat: Audio/Audiobook, desc: "Audio:True Crime"}
# Collections
- {id: 305, cat: Books/EBook, desc: "Same Author"}
- {id: 307, cat: Books/EBook, desc: "Collection: Military"}

View File

@@ -1,134 +0,0 @@
---
id: enthralled2fa
name: Enthralled2FA
description: "Enthralled is a Private Torrent Tracker for FETISH 3X. Cookie Login for 2FA use."
language: en-US
type: private
encoding: UTF-8
links:
- https://www.enthralled.me/
caps:
categorymappings:
- {id: 1, cat: XXX, desc: "FemDom"}
- {id: 2, cat: XXX, desc: "LezDom"}
- {id: 4, cat: XXX, desc: "POV"}
- {id: 5, cat: XXX, desc: "Scat"}
- {id: 3, cat: XXX, desc: "TransDom"}
modes:
search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: time
options:
time: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
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:
# using cookie method because login page can present second page for 2FA when enabled
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: "#nav_userinfo"
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
title: "{{ .Keywords }}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
action: advanced
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table#torrent_table > tbody > tr[class^="torrent shaded_row"]:has(a[href*="action=download"])
fields:
category:
selector: a[href*="filter_cat"]
attribute: href
filters:
- name: regexp
args: "(\\d+)]=1"
title:
selector: a[href^="/torrents.php?id="]
details:
selector: a[href^="/torrents.php?id="]
attribute: href
download:
selector: a[href^="/torrents.php?action=download&id="]
attribute: href
description_tags:
selector: div.tags
description:
case:
span.icon_okay: "Verified: {{ .Result.description_tags }}"
"*": "Unverified: {{ .Result.description_tags }}"
poster:
selector: td:nth-child(2) > script
filters:
- name: regexp
args: "src=\\\\\"(.*?)\\\\\""
- name: re_replace
args: ["\\\\(.)", "$1"]
- name: replace
args: ["/static/common/noartwork/noimage.png", ""]
files:
selector: td:nth-child(3)
date:
selector: td:nth-child(5) > span
attribute: title
# auto adjusted by site account profile
filters:
- name: dateparse
args: "MMM dd yyyy, HH:mm"
size:
selector: td:nth-child(6)
grabs:
selector: td:nth-child(7)
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
downloadvolumefactor:
case:
span.icon[title*="Freeleech"]: 0
"img[alt=\"Freeleech\"]": 0
"*": 1
uploadvolumefactor:
case:
span.icon[title*="DoubleSeed"]: 2
"img[alt=\"DoubleSeed\"]": 2
"*": 1
minimumratio:
text: 0.5
# Luminance

View File

@@ -120,7 +120,7 @@ search:
selector: td:nth-child(1) a
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b((19|20)\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:

View File

@@ -81,7 +81,7 @@ search:
selector: td:nth-child(1) a
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b((19|20)\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:

View File

@@ -126,7 +126,7 @@ search:
selector: td:nth-child(1) a
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b((19|20)\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:

View File

@@ -9,10 +9,8 @@ type: semi-private
encoding: windows-1251
followredirect: true
links:
- https://may15.rudub.run/
- https://may16.rudub.run/
legacylinks:
- http://apr30.rudub.biz/
- https://apr30.rudub.biz/
- http://may01.rudub.biz/
- https://may01.rudub.biz/
- http://may02.rudub.biz/
@@ -42,6 +40,8 @@ legacylinks:
- http://may14.rudub.run/
- https://may14.rudub.run/
- http://may15.rudub.run/
- https://may15.rudub.run/
- http://may16.rudub.run/
caps:
categorymappings:

View File

@@ -104,6 +104,8 @@ settings:
type: info
label: Account Inactivity
default: "Accounts can use the park system for up to 180 days."
- name: info_flaresolverr
type: info_flaresolverr
login:
path: takelogin.php

View File

@@ -144,7 +144,7 @@ search:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b((19|20)\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:

View File

@@ -8,9 +8,8 @@ encoding: UTF-8
followredirect: true
links:
- https://torrentqq368.com/
- https://torrentegg59.com/
- https://torrentegg60.com/
legacylinks:
- https://torrentegg45.com/
- https://torrentqq354.com/
- https://torrentegg46.com/
- https://torrentqq355.com/
@@ -38,6 +37,7 @@ legacylinks:
- https://torrentqq366.com/
- https://torrentegg58.com/
- https://torrentqq367.com/
- https://torrentegg59.com/
caps:
categorymappings:

View File

@@ -31,11 +31,12 @@ settings: []
search:
paths:
# https://uindex.org/search.php?search=complete
# https://uindex.org/search.php?search=complete&c=0
- path: search.php
allowEmptyInputs: true
inputs:
search: "{{ .Keywords }}"
c: 0
rows:
selector: table.maintable > tbody > tr:has(a[href^="magnet:?xt="])

View File

@@ -98,7 +98,7 @@ search:
- name: replace
args: ["WEBRIP", "WEBDL"]
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b((19|20)\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:

View File

@@ -117,7 +117,7 @@ search:
selector: a
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b((19|20)\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:

View File

@@ -47,6 +47,7 @@ namespace Jackett.Common.Indexers.Definitions
{
configData.AddDynamic("freeleech", new BoolConfigurationItem("Search freeleech only") { Value = false });
configData.AddDynamic("Account Inactivity", new DisplayInfoConfigurationItem("Account Inactivity", "Inactive accounts are disabled after 2 months days for User class, after 3 months for Power User, after 4 months for Elite User, after 6 months for Insane User, after 9 months for Veteran User, after 11 months for VIP, after 12 months for Dedicated BHD User & all Staff. Parking your account doubles the maximum inactive time. Only the login and browsing the site is considered activity."));
configData.AddDynamic("Rate Limits", new DisplayInfoConfigurationItem("Rate Limits", "BitHDTV has rate limits, the indexer will fail if you excceed them. Read the post at <a href=\"https://www.bit-hdtv.com/forums/viewtopic.php?id=18657\" target=\"_blank\">forum topic 18657</a>"));
}
private TorznabCapabilities SetCapabilities()
@@ -83,7 +84,9 @@ namespace Jackett.Common.Indexers.Definitions
{
var results = await PerformQuery(new TorznabQuery());
if (!results.Any())
{
throw new Exception("Found 0 results in the tracker");
}
IsConfigured = true;
SaveConfig();
@@ -110,7 +113,9 @@ namespace Jackett.Common.Indexers.Definitions
// free=1 normal: (DL and UL counted as normal.)
// free=0 (any)
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value)
{
qc.Add("free", "2");
}
var results = new List<WebResult>();
var search = new UriBuilder(SearchUrl);
@@ -142,13 +147,20 @@ namespace Jackett.Common.Indexers.Definitions
var parser = new HtmlParser();
foreach (var result in results)
{
try
{
if (result.ContentString.Contains("Request limit per User exceeded! Please try later!"))
{
throw new Exception("Request limit per User exceeded! Please try later!");
}
using var dom = parser.ParseDocument(result.ContentString);
var tableBody = dom.QuerySelector("#torrents-index-table > #torrents-index-table-body");
if (tableBody == null) // No results, so skip this search
{
continue;
}
foreach (var row in tableBody.Children)
{
@@ -160,7 +172,9 @@ namespace Jackett.Common.Indexers.Definitions
var detailsLink = new Uri(qLink.GetAttribute("href"));
//Skip irrelevant and duplicate entries
if (!query.MatchQueryStringAND(release.Title) || releases.Any(r => r.Guid == detailsLink))
{
continue;
}
var genres = row.QuerySelector("font.small")?.TextContent;
if (!string.IsNullOrEmpty(genres))
@@ -214,6 +228,7 @@ namespace Jackett.Common.Indexers.Definitions
{
OnParseError(result.ContentString, ex);
}
}
return releases;
}

View File

@@ -390,6 +390,7 @@ namespace Jackett.Updater
"Definitions/emmidtracker.yml",
"Definitions/emtrek.yml",
"Definitions/enthralled.yml",
"Definitions/enthralled2fa.yml",
"Definitions/eotforum.yml",
"Definitions/epizod.yml",
"Definitions/erzsebet.yml",