diff --git a/README.md b/README.md index 625a1ddf1..2ef247b4c 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/ * HD-Forever * HD-Only * HD-Space + * HD-Spain * HD-Torrents * HD-Bits.com * HDBits diff --git a/src/Jackett.Common/Definitions/btbit.yml b/src/Jackett.Common/Definitions/btbit.yml index 325d51b5e..200a44ad5 100644 --- a/src/Jackett.Common/Definitions/btbit.yml +++ b/src/Jackett.Common/Definitions/btbit.yml @@ -28,7 +28,7 @@ search: 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: selector: .rs fields: diff --git a/src/Jackett.Common/Definitions/hdchina.yml b/src/Jackett.Common/Definitions/hdchina.yml index 1384ba16f..0ba7292b8 100644 --- a/src/Jackett.Common/Definitions/hdchina.yml +++ b/src/Jackett.Common/Definitions/hdchina.yml @@ -61,7 +61,6 @@ search: paths: - path: /torrents.php - method: post inputs: $raw: "{{range .Categories}}cat{{.}}=1&{{end}}" search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}" diff --git a/src/Jackett.Common/Definitions/hdhome.yml b/src/Jackett.Common/Definitions/hdhome.yml index d4c733e0e..5da2afe2c 100644 --- a/src/Jackett.Common/Definitions/hdhome.yml +++ b/src/Jackett.Common/Definitions/hdhome.yml @@ -82,7 +82,6 @@ search: paths: - path: /torrents.php - method: post inputs: $raw: "{{range .Categories}}cat{{.}}=1&{{end}}" search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}" diff --git a/src/Jackett.Common/Definitions/hdspain.yml b/src/Jackett.Common/Definitions/hdspain.yml new file mode 100644 index 000000000..9b6da421d --- /dev/null +++ b/src/Jackett.Common/Definitions/hdspain.yml @@ -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"] diff --git a/src/Jackett.Common/Definitions/yggtorrent.yml b/src/Jackett.Common/Definitions/yggtorrent.yml index b3d95b155..f8e8cd8bf 100644 --- a/src/Jackett.Common/Definitions/yggtorrent.yml +++ b/src/Jackett.Common/Definitions/yggtorrent.yml @@ -6,8 +6,9 @@ type: semi-private encoding: UTF-8 links: - - https://yggtorrent.is/ + - https://ww1.yggtorrent.is/ legacylinks: + - https://yggtorrent.is/ - https://yggtorrent.com/ - https://ww1.yggtorrent.com/ diff --git a/src/Jackett.Common/Indexers/BJShare.cs b/src/Jackett.Common/Indexers/BJShare.cs index 0031dc2a3..a4364cc6c 100644 --- a/src/Jackett.Common/Indexers/BJShare.cs +++ b/src/Jackett.Common/Indexers/BJShare.cs @@ -28,6 +28,10 @@ namespace Jackett.Common.Indexers { { "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 { @@ -38,7 +42,7 @@ namespace Jackett.Common.Indexers public BJShare(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps) : base("BJ-Share", description: "A brazilian tracker.", - link: "https://bj-share.me/", + link: "https://bj-share.info/", caps: TorznabUtil.CreateDefaultTorznabTVCaps(), configService: configService, client: wc, diff --git a/src/Jackett.Common/Indexers/NCore.cs b/src/Jackett.Common/Indexers/NCore.cs index eceafb727..9b0e94557 100644 --- a/src/Jackett.Common/Indexers/NCore.cs +++ b/src/Jackett.Common/Indexers/NCore.cs @@ -117,12 +117,17 @@ namespace Jackett.Common.Indexers return IndexerConfigurationStatus.RequiresTesting; } - protected override async Task> PerformQuery(TorznabQuery query) + protected async Task> PerformQuery(TorznabQuery query, String seasonep) { var releases = new List(); var searchString = query.GetQueryString(); var pairs = new List>(); + if (seasonep != null) + { + searchString = query.SanitizedSearchTerm; + } + pairs.Add(new KeyValuePair("nyit_sorozat_resz", "true")); pairs.Add(new KeyValuePair("miben", "name")); pairs.Add(new KeyValuePair("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 cat = ParseUtil.GetArgumentFromQueryString(catlink, "tipus"); 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) @@ -209,5 +224,16 @@ namespace Jackett.Common.Indexers return releases; } + + protected override async Task> 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; + } } } diff --git a/src/Jackett.Common/Indexers/RevolutionTT.cs b/src/Jackett.Common/Indexers/RevolutionTT.cs index c9e4f2eac..19c63b405 100644 --- a/src/Jackett.Common/Indexers/RevolutionTT.cs +++ b/src/Jackett.Common/Indexers/RevolutionTT.cs @@ -352,6 +352,9 @@ namespace Jackett.Common.Indexers var grabsStr = qRow.Find("td:nth-child(8)").Text(); 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); release.Category = MapTrackerCatToNewznab(category); } diff --git a/src/Jackett.Common/Utils/ParseUtil.cs b/src/Jackett.Common/Utils/ParseUtil.cs index bb35e57ac..7f98a0305 100644 --- a/src/Jackett.Common/Utils/ParseUtil.cs +++ b/src/Jackett.Common/Utils/ParseUtil.cs @@ -118,4 +118,4 @@ namespace Jackett.Common.Utils return "tt" + ((int)imdbid).ToString("D7"); } } -} \ No newline at end of file +}