mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
Merge branch 'master' into dotnetcore
This commit is contained in:
@@ -171,6 +171,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
|||||||
* HD-Forever
|
* HD-Forever
|
||||||
* HD-Only
|
* HD-Only
|
||||||
* HD-Space
|
* HD-Space
|
||||||
|
* HD-Spain
|
||||||
* HD-Torrents
|
* HD-Torrents
|
||||||
* HD-Bits.com
|
* HD-Bits.com
|
||||||
* HDBits
|
* HDBits
|
||||||
|
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
search:
|
search:
|
||||||
paths:
|
paths:
|
||||||
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie/1-1-0{{end}}.html"
|
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}/1-1-0.html"
|
||||||
rows:
|
rows:
|
||||||
selector: .rs
|
selector: .rs
|
||||||
fields:
|
fields:
|
||||||
|
@@ -61,7 +61,6 @@
|
|||||||
search:
|
search:
|
||||||
paths:
|
paths:
|
||||||
- path: /torrents.php
|
- path: /torrents.php
|
||||||
method: post
|
|
||||||
inputs:
|
inputs:
|
||||||
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
|
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
|
||||||
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||||
|
@@ -82,7 +82,6 @@
|
|||||||
search:
|
search:
|
||||||
paths:
|
paths:
|
||||||
- path: /torrents.php
|
- path: /torrents.php
|
||||||
method: post
|
|
||||||
inputs:
|
inputs:
|
||||||
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
|
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
|
||||||
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||||
|
142
src/Jackett.Common/Definitions/hdspain.yml
Normal file
142
src/Jackett.Common/Definitions/hdspain.yml
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
---
|
||||||
|
site: hdspain
|
||||||
|
name: HD-Spain
|
||||||
|
description: "HD-Spain is a SPANISH site for HD content"
|
||||||
|
language: es-es
|
||||||
|
type: private
|
||||||
|
encoding: ISO-8859-1
|
||||||
|
links:
|
||||||
|
- https://www.hd-spain.com/
|
||||||
|
|
||||||
|
caps:
|
||||||
|
categorymappings:
|
||||||
|
- {id: 1 , cat: Movies/HD, desc: "Películas"}
|
||||||
|
- {id: 5 , cat: Movies/HD, desc: "Pelíc. Anim."}
|
||||||
|
- {id: 4 , cat: TV/HD, desc: "Series"}
|
||||||
|
- {id: 3 , cat: TV/HD, desc: "Series Anim."}
|
||||||
|
- {id: 6 , cat: TV/Documentary, desc: "Documentales"}
|
||||||
|
- {id: 11, cat: TV/Sport, desc: "Deportes"}
|
||||||
|
- {id: 7 , cat: Audio/Video, desc: "Música/Espec."}
|
||||||
|
- {id: 9 , cat: TV/OTHER, desc: "Programas TV"}
|
||||||
|
- {id: 8 , cat: Audio/Lossless, desc: "Audios"}
|
||||||
|
- {id: 10, cat: XXX/x264, desc: "XXX"}
|
||||||
|
modes:
|
||||||
|
search: [q]
|
||||||
|
|
||||||
|
login:
|
||||||
|
path: index.php
|
||||||
|
method: form
|
||||||
|
inputs:
|
||||||
|
usuario: "{{ .Config.username }}"
|
||||||
|
contrasena: "{{ .Config.password }}"
|
||||||
|
error:
|
||||||
|
- selector: p.error
|
||||||
|
test:
|
||||||
|
path: index.php
|
||||||
|
selector: .tcabecera
|
||||||
|
|
||||||
|
search:
|
||||||
|
path: index.php
|
||||||
|
keywordsfilters:
|
||||||
|
- name: re_replace
|
||||||
|
args: ["S0?(\\d{1,2})E(\\d{1,2})", "$1x$2"]
|
||||||
|
inputs:
|
||||||
|
sec: listado
|
||||||
|
ord: 9
|
||||||
|
b: "{{ .Keywords }}"
|
||||||
|
ver: "0"
|
||||||
|
relanz: "0"
|
||||||
|
$raw: "{{range .Categories}}&cat[]={{.}}{{end}}"
|
||||||
|
rows:
|
||||||
|
selector: "table.listatorrents tr:not(:first-child)"
|
||||||
|
fields:
|
||||||
|
category:
|
||||||
|
selector: td.categorias a
|
||||||
|
attribute: href
|
||||||
|
filters:
|
||||||
|
- name: querystring
|
||||||
|
args: cat
|
||||||
|
title:
|
||||||
|
selector: td.titulo a[id]
|
||||||
|
filters:
|
||||||
|
- name: append
|
||||||
|
args: " [spanish]"
|
||||||
|
details:
|
||||||
|
selector: td.titulo a
|
||||||
|
attribute: href
|
||||||
|
size:
|
||||||
|
selector: td.tamano
|
||||||
|
seeders:
|
||||||
|
selector: td.usuarios.seeds a
|
||||||
|
leechers:
|
||||||
|
selector: td.usuarios.leechers a
|
||||||
|
grabs:
|
||||||
|
selector: td.usuarios.completados
|
||||||
|
date:
|
||||||
|
optional: true
|
||||||
|
selector: td.fecha
|
||||||
|
attribute: title
|
||||||
|
filters:
|
||||||
|
- name: replace
|
||||||
|
args: ["Lunes", "Monday"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Martes", "Tuesday"]
|
||||||
|
- name: re_replace
|
||||||
|
args: ["Miércoles", "Wednesday"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Jueves", "Thursday"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Viernes", "Friday"]
|
||||||
|
- name: re_replace
|
||||||
|
args: ["Sábado", "Saturday"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Domingo", "Sunday"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Enero", "January"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Febrero", "February"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Marzo", "March"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Abril", "April"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Mayo", "May"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Junio", "June"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Julio", "July"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Agosto", "August"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Septiembre", "September"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Octubre", "October"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Noviembre", "November"]
|
||||||
|
- name: replace
|
||||||
|
args: ["Diciembre", "December"]
|
||||||
|
- name: dateparse
|
||||||
|
args: "Monday 2 January 2006, 15:04"
|
||||||
|
download:
|
||||||
|
selector: td.descargar a
|
||||||
|
attribute: href
|
||||||
|
|
||||||
|
downloadvolumefactor:
|
||||||
|
text: "1"
|
||||||
|
downloadvolumefactor:
|
||||||
|
optional: true
|
||||||
|
selector: td.descargar a b strong
|
||||||
|
filters:
|
||||||
|
- name: replace
|
||||||
|
args: [" X2", ""]
|
||||||
|
- name: replace
|
||||||
|
args: ["Freeleech", "0"]
|
||||||
|
|
||||||
|
uploadvolumefactor:
|
||||||
|
text: "1"
|
||||||
|
uploadvolumefactor:
|
||||||
|
optional: true
|
||||||
|
selector: td.descargar a b strong
|
||||||
|
filters:
|
||||||
|
- name: replace
|
||||||
|
args: ["Freeleech X2", "2"]
|
@@ -6,8 +6,9 @@
|
|||||||
type: semi-private
|
type: semi-private
|
||||||
encoding: UTF-8
|
encoding: UTF-8
|
||||||
links:
|
links:
|
||||||
- https://yggtorrent.is/
|
- https://ww1.yggtorrent.is/
|
||||||
legacylinks:
|
legacylinks:
|
||||||
|
- https://yggtorrent.is/
|
||||||
- https://yggtorrent.com/
|
- https://yggtorrent.com/
|
||||||
- https://ww1.yggtorrent.com/
|
- https://ww1.yggtorrent.com/
|
||||||
|
|
||||||
|
@@ -28,6 +28,10 @@ namespace Jackett.Common.Indexers
|
|||||||
{
|
{
|
||||||
{ "agents of shield", "Agents of S.H.I.E.L.D."}
|
{ "agents of shield", "Agents of S.H.I.E.L.D."}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public override string[] LegacySiteLinks { get; protected set; } = new string[] {
|
||||||
|
"https://bj-share.me/"
|
||||||
|
};
|
||||||
|
|
||||||
private ConfigurationDataBasicLoginWithRSSAndDisplay ConfigData
|
private ConfigurationDataBasicLoginWithRSSAndDisplay ConfigData
|
||||||
{
|
{
|
||||||
@@ -38,7 +42,7 @@ namespace Jackett.Common.Indexers
|
|||||||
public BJShare(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
public BJShare(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||||
: base("BJ-Share",
|
: base("BJ-Share",
|
||||||
description: "A brazilian tracker.",
|
description: "A brazilian tracker.",
|
||||||
link: "https://bj-share.me/",
|
link: "https://bj-share.info/",
|
||||||
caps: TorznabUtil.CreateDefaultTorznabTVCaps(),
|
caps: TorznabUtil.CreateDefaultTorznabTVCaps(),
|
||||||
configService: configService,
|
configService: configService,
|
||||||
client: wc,
|
client: wc,
|
||||||
|
@@ -117,12 +117,17 @@ namespace Jackett.Common.Indexers
|
|||||||
return IndexerConfigurationStatus.RequiresTesting;
|
return IndexerConfigurationStatus.RequiresTesting;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
protected async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query, String seasonep)
|
||||||
{
|
{
|
||||||
var releases = new List<ReleaseInfo>();
|
var releases = new List<ReleaseInfo>();
|
||||||
var searchString = query.GetQueryString();
|
var searchString = query.GetQueryString();
|
||||||
var pairs = new List<KeyValuePair<string, string>>();
|
var pairs = new List<KeyValuePair<string, string>>();
|
||||||
|
|
||||||
|
if (seasonep != null)
|
||||||
|
{
|
||||||
|
searchString = query.SanitizedSearchTerm;
|
||||||
|
}
|
||||||
|
|
||||||
pairs.Add(new KeyValuePair<string, string>("nyit_sorozat_resz", "true"));
|
pairs.Add(new KeyValuePair<string, string>("nyit_sorozat_resz", "true"));
|
||||||
pairs.Add(new KeyValuePair<string, string>("miben", "name"));
|
pairs.Add(new KeyValuePair<string, string>("miben", "name"));
|
||||||
pairs.Add(new KeyValuePair<string, string>("tipus", "kivalasztottak_kozott"));
|
pairs.Add(new KeyValuePair<string, string>("tipus", "kivalasztottak_kozott"));
|
||||||
@@ -198,8 +203,18 @@ namespace Jackett.Common.Indexers
|
|||||||
string catlink = qRow.Find("a:has(img[class='categ_link'])").First().Attr("href");
|
string catlink = qRow.Find("a:has(img[class='categ_link'])").First().Attr("href");
|
||||||
string cat = ParseUtil.GetArgumentFromQueryString(catlink, "tipus");
|
string cat = ParseUtil.GetArgumentFromQueryString(catlink, "tipus");
|
||||||
release.Category = MapTrackerCatToNewznab(cat);
|
release.Category = MapTrackerCatToNewznab(cat);
|
||||||
|
if (seasonep == null)
|
||||||
|
releases.Add(release);
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Match m = Regex.Match(release.Title, @""+ seasonep + @"\s?$", RegexOptions.IgnoreCase);
|
||||||
|
if (query.MatchQueryStringAND(release.Title, null, seasonep))
|
||||||
|
{
|
||||||
|
releases.Add(release);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
releases.Add(release);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -209,5 +224,16 @@ namespace Jackett.Common.Indexers
|
|||||||
|
|
||||||
return releases;
|
return releases;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||||
|
{
|
||||||
|
var results = await PerformQuery(query, null);
|
||||||
|
if (results.Count()==0 && query.IsTVSearch) // if we search for a localized title ncore can't handle any extra S/E information, search without it and AND filter the results. See #1450
|
||||||
|
{
|
||||||
|
results = await PerformQuery(query,query.GetEpisodeSearchString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -352,6 +352,9 @@ namespace Jackett.Common.Indexers
|
|||||||
var grabsStr = qRow.Find("td:nth-child(8)").Text();
|
var grabsStr = qRow.Find("td:nth-child(8)").Text();
|
||||||
release.Grabs = ParseUtil.GetLongFromString(grabsStr);
|
release.Grabs = ParseUtil.GetLongFromString(grabsStr);
|
||||||
|
|
||||||
|
var filesStr = qRow.Find("td:nth-child(7) > a").Text();
|
||||||
|
release.Files = ParseUtil.GetLongFromString(filesStr);
|
||||||
|
|
||||||
var category = qRow.Find(".br_type > a").Attr("href").Replace("browse.php?cat=", string.Empty);
|
var category = qRow.Find(".br_type > a").Attr("href").Replace("browse.php?cat=", string.Empty);
|
||||||
release.Category = MapTrackerCatToNewznab(category);
|
release.Category = MapTrackerCatToNewznab(category);
|
||||||
}
|
}
|
||||||
|
@@ -118,4 +118,4 @@ namespace Jackett.Common.Utils
|
|||||||
return "tt" + ((int)imdbid).ToString("D7");
|
return "tt" + ((int)imdbid).ToString("D7");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user