mirror of
https://github.com/Jackett/Jackett
synced 2025-03-09 13:52:03 +00:00
immortalseed: category filtering and add sorting to skip sticky results (#13972)
Also check for Sitewide Free Torrent. xspeeds: check for Sitewide Free Torrent.
This commit is contained in:
parent
b55e053417
commit
e0c6a3b469
2 changed files with 55 additions and 13 deletions
|
@ -14,15 +14,15 @@ using Jackett.Common.Services.Interfaces;
|
||||||
using Jackett.Common.Utils;
|
using Jackett.Common.Utils;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
|
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||||
|
|
||||||
namespace Jackett.Common.Indexers
|
namespace Jackett.Common.Indexers
|
||||||
{
|
{
|
||||||
[ExcludeFromCodeCoverage]
|
[ExcludeFromCodeCoverage]
|
||||||
public class ImmortalSeed : BaseWebIndexer
|
public class ImmortalSeed : BaseWebIndexer
|
||||||
{
|
{
|
||||||
private string BrowsePage => SiteLink + "browse.php";
|
private string SearchUrl => SiteLink + "browse.php";
|
||||||
private string LoginUrl => SiteLink + "takelogin.php";
|
private string LoginUrl => SiteLink + "takelogin.php";
|
||||||
private string QueryString => "?do=search&keywords={0}&search_type=t_name&category=0&include_dead_torrents=no";
|
|
||||||
private readonly Regex _dateMatchRegex = new Regex(@"\d{4}-\d{2}-\d{2} \d{2}:\d{2} [AaPp][Mm]", RegexOptions.Compiled);
|
private readonly Regex _dateMatchRegex = new Regex(@"\d{4}-\d{2}-\d{2} \d{2}:\d{2} [AaPp][Mm]", RegexOptions.Compiled);
|
||||||
|
|
||||||
public override string[] LegacySiteLinks { get; protected set; } = {
|
public override string[] LegacySiteLinks { get; protected set; } = {
|
||||||
|
@ -116,8 +116,35 @@ namespace Jackett.Common.Indexers
|
||||||
AddCategoryMapping(63, TorznabCatType.TVUHD, "TV Season Packs - 4K");
|
AddCategoryMapping(63, TorznabCatType.TVUHD, "TV Season Packs - 4K");
|
||||||
AddCategoryMapping(4, TorznabCatType.TVHD, "TV Season Packs - HD");
|
AddCategoryMapping(4, TorznabCatType.TVHD, "TV Season Packs - HD");
|
||||||
AddCategoryMapping(6, TorznabCatType.TVSD, "TV Season Packs - SD");
|
AddCategoryMapping(6, TorznabCatType.TVSD, "TV Season Packs - SD");
|
||||||
|
|
||||||
|
// Configure the sort selects
|
||||||
|
var sortBySelect = new SingleSelectConfigurationItem(
|
||||||
|
"Sort by",
|
||||||
|
new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{ "added", "created" },
|
||||||
|
{ "seeders", "seeders" },
|
||||||
|
{ "size", "size" },
|
||||||
|
{ "name", "title" }
|
||||||
|
})
|
||||||
|
{ Value = "added" };
|
||||||
|
configData.AddDynamic("sortrequestedfromsite", sortBySelect);
|
||||||
|
|
||||||
|
var orderSelect = new SingleSelectConfigurationItem(
|
||||||
|
"Order",
|
||||||
|
new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{ "desc", "descending" },
|
||||||
|
{ "asc", "ascending" }
|
||||||
|
})
|
||||||
|
{ Value = "desc" };
|
||||||
|
configData.AddDynamic("orderrequestedfromsite", orderSelect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetSortBy => ((SingleSelectConfigurationItem)configData.GetDynamic("sortrequestedfromsite")).Value;
|
||||||
|
|
||||||
|
private string GetOrder => ((SingleSelectConfigurationItem)configData.GetDynamic("orderrequestedfromsite")).Value;
|
||||||
|
|
||||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||||
{
|
{
|
||||||
LoadValuesFromJson(configJson);
|
LoadValuesFromJson(configJson);
|
||||||
|
@ -143,11 +170,28 @@ namespace Jackett.Common.Indexers
|
||||||
|
|
||||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||||
{
|
{
|
||||||
var releases = new List<ReleaseInfo>();
|
var searchParams = new Dictionary<string, string>
|
||||||
var searchUrl = BrowsePage;
|
{
|
||||||
|
{ "category", "0" },
|
||||||
|
{ "include_dead_torrents", "yes" },
|
||||||
|
{ "sort", GetSortBy },
|
||||||
|
{ "order", GetOrder }
|
||||||
|
};
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(query.GetQueryString()))
|
var searchString = Regex.Replace(query.GetQueryString(), @"[ -._]+", " ").Trim();
|
||||||
searchUrl += string.Format(QueryString, WebUtility.UrlEncode(query.GetQueryString()));
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(searchString))
|
||||||
|
{
|
||||||
|
searchParams.Add("do", "search");
|
||||||
|
searchParams.Add("keywords", searchString);
|
||||||
|
searchParams.Add("search_type", "t_name");
|
||||||
|
}
|
||||||
|
|
||||||
|
var categoryMapping = MapTorznabCapsToTrackers(query);
|
||||||
|
if (categoryMapping.Any())
|
||||||
|
searchParams.Add("selectedcats2", string.Join(",", categoryMapping));
|
||||||
|
|
||||||
|
var searchUrl = $"{SearchUrl}?{searchParams.GetQueryString()}";
|
||||||
|
|
||||||
var results = await RequestWithCookiesAndRetryAsync(searchUrl);
|
var results = await RequestWithCookiesAndRetryAsync(searchUrl);
|
||||||
|
|
||||||
|
@ -158,6 +202,8 @@ namespace Jackett.Common.Indexers
|
||||||
results = await RequestWithCookiesAndRetryAsync(searchUrl);
|
results = await RequestWithCookiesAndRetryAsync(searchUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var releases = new List<ReleaseInfo>();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var parser = new HtmlParser();
|
var parser = new HtmlParser();
|
||||||
|
@ -207,7 +253,7 @@ namespace Jackett.Common.Indexers
|
||||||
var cover = row.QuerySelector("td:nth-of-type(2) > div > img[src]")?.GetAttribute("src")?.Trim();
|
var cover = row.QuerySelector("td:nth-of-type(2) > div > img[src]")?.GetAttribute("src")?.Trim();
|
||||||
release.Poster = !string.IsNullOrEmpty(cover) && cover.StartsWith("/") ? new Uri(SiteLink + cover.TrimStart('/')) : null;
|
release.Poster = !string.IsNullOrEmpty(cover) && cover.StartsWith("/") ? new Uri(SiteLink + cover.TrimStart('/')) : null;
|
||||||
|
|
||||||
if (row.QuerySelector("img[title^=\"Free Torrent\"]") != null)
|
if (row.QuerySelector("img[title^=\"Free Torrent\"], img[title^=\"Sitewide Free Torrent\"]") != null)
|
||||||
release.DownloadVolumeFactor = 0;
|
release.DownloadVolumeFactor = 0;
|
||||||
else if (row.QuerySelector("img[title^=\"Silver Torrent\"]") != null)
|
else if (row.QuerySelector("img[title^=\"Silver Torrent\"]") != null)
|
||||||
release.DownloadVolumeFactor = 0.5;
|
release.DownloadVolumeFactor = 0.5;
|
||||||
|
|
|
@ -2,7 +2,6 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -325,17 +324,14 @@ namespace Jackett.Common.Indexers
|
||||||
var cover = row.QuerySelector("td:nth-of-type(2) > div > img[src]")?.GetAttribute("src")?.Trim();
|
var cover = row.QuerySelector("td:nth-of-type(2) > div > img[src]")?.GetAttribute("src")?.Trim();
|
||||||
release.Poster = !string.IsNullOrEmpty(cover) && cover.StartsWith("http") ? new Uri(cover) : null;
|
release.Poster = !string.IsNullOrEmpty(cover) && cover.StartsWith("http") ? new Uri(cover) : null;
|
||||||
|
|
||||||
if (row.QuerySelector("img[alt^=\"Free Torrent\"]") != null)
|
if (row.QuerySelector("img[alt^=\"Free Torrent\"], img[alt^=\"Sitewide Free Torrent\"]") != null)
|
||||||
release.DownloadVolumeFactor = 0;
|
release.DownloadVolumeFactor = 0;
|
||||||
else if (row.QuerySelector("img[alt^=\"Silver Torrent\"]") != null)
|
else if (row.QuerySelector("img[alt^=\"Silver Torrent\"]") != null)
|
||||||
release.DownloadVolumeFactor = 0.5;
|
release.DownloadVolumeFactor = 0.5;
|
||||||
else
|
else
|
||||||
release.DownloadVolumeFactor = 1;
|
release.DownloadVolumeFactor = 1;
|
||||||
|
|
||||||
if (row.QuerySelector("img[alt^=\"x2 Torrent\"]") != null)
|
release.UploadVolumeFactor = row.QuerySelector("img[alt^=\"x2 Torrent\"]") != null ? 2 : 1;
|
||||||
release.UploadVolumeFactor = 2;
|
|
||||||
else
|
|
||||||
release.UploadVolumeFactor = 1;
|
|
||||||
|
|
||||||
release.MinimumRatio = 0.8;
|
release.MinimumRatio = 0.8;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue