Fixed: (SceneTime) Don't crash when category link is empty

pull/1504/head
Bogdan 1 year ago
parent bb1ebda753
commit e211436eb5

@ -10,6 +10,7 @@ using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.Indexers.Settings;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Messaging.Events;
@ -44,6 +45,16 @@ namespace NzbDrone.Core.Indexers.Definitions
return new SceneTimeParser(Settings, Capabilities.Categories);
}
protected override bool CheckIfLoginNeeded(HttpResponse httpResponse)
{
if (!httpResponse.Content.Contains("logout.php"))
{
throw new IndexerAuthException("SceneTime authentication with cookies failed.");
}
return false;
}
protected override IDictionary<string, string> GetCookies()
{
return CookieUtil.CookieHeaderToDictionary(Settings.Cookie);
@ -228,14 +239,19 @@ namespace NzbDrone.Core.Indexers.Definitions
{
var qDescCol = row.Children[nameIndex];
var qLink = qDescCol.QuerySelector("a");
var infoUrl = _settings.BaseUrl + qLink.GetAttribute("href").TrimStart('/');
// Clean up title
qLink.QuerySelectorAll("font[color=\"green\"]").ToList().ForEach(e => e.Remove());
var title = qLink.TextContent.Trim();
var infoUrl = _settings.BaseUrl + qLink.GetAttribute("href")?.TrimStart('/');
var torrentId = ParseUtil.GetArgumentFromQueryString(infoUrl, "id");
var seeders = ParseUtil.CoerceInt(row.Children[seedersIndex].TextContent.Trim());
var categoryLink = row.Children[categoryIndex].QuerySelector("a").GetAttribute("href");
var categoryLink = row.Children[categoryIndex].QuerySelector("a")?.GetAttribute("href");
var cat = categoryLink != null ? ParseUtil.GetArgumentFromQueryString(categoryLink, "cat") : "82"; // default
var dateAdded = qDescCol.QuerySelector("span[class=\"elapsedDate\"]").GetAttribute("title").Trim();
var dateAdded = qDescCol.QuerySelector("span[class=\"elapsedDate\"]")?.GetAttribute("title")?.Trim();
var publishDate = DateTime.TryParseExact(dateAdded, "dddd, MMMM d, yyyy \\a\\t h:mmtt", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out var date)
? date
: DateTimeUtil.FromTimeAgo(qDescCol.QuerySelector("span[class=\"elapsedDate\"]").TextContent.Trim());
@ -245,7 +261,7 @@ namespace NzbDrone.Core.Indexers.Definitions
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = $"{_settings.BaseUrl}download.php/{torrentId}/download.torrent",
Title = qLink.TextContent,
Title = title,
Categories = _categories.MapTrackerCatToNewznab(cat),
PublishDate = publishDate,
Size = ParseUtil.GetBytes(row.Children[sizeIndex].TextContent),

Loading…
Cancel
Save