diff --git a/src/NzbDrone.Core/Indexers/Definitions/SceneTime.cs b/src/NzbDrone.Core/Indexers/Definitions/SceneTime.cs index b4eadc877..fa40c9cf2 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/SceneTime.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/SceneTime.cs @@ -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 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),