Fixed: (SceneTime) Update layout selectors

This commit is contained in:
Bogdan
2026-03-24 20:07:53 +02:00
committed by Auggie
parent d133c82537
commit 33fa39dc84
@@ -41,7 +41,7 @@ namespace NzbDrone.Core.Indexers.Definitions
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 @@ namespace NzbDrone.Core.Indexers.Definitions
return CookieUtil.CookieHeaderToDictionary(Settings.Cookie);
}
private IndexerCapabilities SetCapabilities()
private static IndexerCapabilities SetCapabilities()
{
var caps = new IndexerCapabilities
{
@@ -213,11 +213,13 @@ namespace NzbDrone.Core.Indexers.Definitions
{
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 @@ namespace NzbDrone.Core.Indexers.Definitions
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 @@ namespace NzbDrone.Core.Indexers.Definitions
{
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");