mirror of
https://github.com/Prowlarr/Prowlarr
synced 2026-05-07 12:10:20 +02:00
Fixed: (SceneTime) Update layout selectors
This commit is contained in:
parent
d133c82537
commit
33fa39dc84
1 changed files with 14 additions and 10 deletions
|
|
@ -41,7 +41,7 @@ public override IIndexerRequestGenerator GetRequestGenerator()
|
|||
|
||||
public override IParseIndexerResponse GetParser()
|
||||
{
|
||||
return new SceneTimeParser(Settings, Capabilities.Categories);
|
||||
return new SceneTimeParser(Settings, Capabilities.Categories, _logger);
|
||||
}
|
||||
|
||||
protected override bool CheckIfLoginNeeded(HttpResponse httpResponse)
|
||||
|
|
@ -59,7 +59,7 @@ protected override IDictionary<string, string> GetCookies()
|
|||
return CookieUtil.CookieHeaderToDictionary(Settings.Cookie);
|
||||
}
|
||||
|
||||
private IndexerCapabilities SetCapabilities()
|
||||
private static IndexerCapabilities SetCapabilities()
|
||||
{
|
||||
var caps = new IndexerCapabilities
|
||||
{
|
||||
|
|
@ -213,11 +213,13 @@ public class SceneTimeParser : IParseIndexerResponse
|
|||
{
|
||||
private readonly SceneTimeSettings _settings;
|
||||
private readonly IndexerCapabilitiesCategories _categories;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public SceneTimeParser(SceneTimeSettings settings, IndexerCapabilitiesCategories categories)
|
||||
public SceneTimeParser(SceneTimeSettings settings, IndexerCapabilitiesCategories categories, Logger logger)
|
||||
{
|
||||
_settings = settings;
|
||||
_categories = categories;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
||||
|
|
@ -227,20 +229,22 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
|||
var parser = new HtmlParser();
|
||||
using var dom = parser.ParseDocument(indexerResponse.Content);
|
||||
|
||||
var table = dom.QuerySelector("table.movehere");
|
||||
var table = dom.QuerySelector("table#torrenttable");
|
||||
if (table == null)
|
||||
{
|
||||
return releaseInfos; // no results
|
||||
_logger.Error("No results, table element is not present in page.");
|
||||
return releaseInfos;
|
||||
}
|
||||
|
||||
var headerColumns = table.QuerySelectorAll("thead > tr > th.cat_Head")
|
||||
.Select(x => x.GetAttribute("title").IsNotNullOrWhiteSpace() ? x.GetAttribute("title") : x.TextContent)
|
||||
var headerColumns = table.QuerySelectorAll("thead > tr > th")
|
||||
.Select(x => x.GetAttribute("title") ?? x.QuerySelector("a[title]")?.GetAttribute("title") ?? x.TextContent)
|
||||
.ToList();
|
||||
|
||||
var categoryIndex = headerColumns.FindIndex(x => x.Equals("Type", StringComparison.OrdinalIgnoreCase));
|
||||
var nameIndex = headerColumns.FindIndex(x => x.Equals("Name", StringComparison.OrdinalIgnoreCase));
|
||||
var sizeIndex = headerColumns.FindIndex(x => x.Equals("Size", StringComparison.OrdinalIgnoreCase));
|
||||
var seedersIndex = headerColumns.FindIndex(x => x.Equals("Seeder(s)", StringComparison.OrdinalIgnoreCase));
|
||||
var leechersIndex = headerColumns.FindIndex(x => x.Equals("Leecher(s)", StringComparison.OrdinalIgnoreCase));
|
||||
var seedersIndex = headerColumns.FindIndex(x => x.Equals("Seeders", StringComparison.OrdinalIgnoreCase));
|
||||
var leechersIndex = headerColumns.FindIndex(x => x.Equals("Leechers", StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
var rows = table.QuerySelectorAll("tbody > tr");
|
||||
|
||||
|
|
@ -248,7 +252,7 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
|||
{
|
||||
var qDescCol = row.Children[nameIndex];
|
||||
var qLink = qDescCol.QuerySelector("a");
|
||||
var title = qLink.QuerySelector("span.torrent-text").TextContent.Trim();
|
||||
var title = qLink.QuerySelector("span.bw-torrent-name").TextContent.Trim();
|
||||
|
||||
var infoUrl = _settings.BaseUrl + qLink.GetAttribute("href")?.TrimStart('/');
|
||||
var torrentId = ParseUtil.GetArgumentFromQueryString(infoUrl, "id");
|
||||
|
|
|
|||
Loading…
Reference in a new issue