diff --git a/src/NzbDrone.Core.Test/IndexerTests/OrpheusTests/OrpheusFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/OrpheusTests/OrpheusFixture.cs index 43ec59c53..f52b248c9 100644 --- a/src/NzbDrone.Core.Test/IndexerTests/OrpheusTests/OrpheusFixture.cs +++ b/src/NzbDrone.Core.Test/IndexerTests/OrpheusTests/OrpheusFixture.cs @@ -9,8 +9,8 @@ using NUnit.Framework; using NzbDrone.Common.Http; using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Definitions; -using NzbDrone.Core.Indexers.Definitions.Gazelle; using NzbDrone.Core.IndexerSearch.Definitions; +using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; namespace NzbDrone.Core.Test.IndexerTests.OrpheusTests @@ -40,9 +40,9 @@ namespace NzbDrone.Core.Test.IndexerTests.OrpheusTests var releases = (await Subject.Fetch(new BasicSearchCriteria { Categories = new[] { 3000 } })).Releases; releases.Should().HaveCount(65); - releases.First().Should().BeOfType(); + releases.First().Should().BeOfType(); - var torrentInfo = releases.First() as GazelleInfo; + var torrentInfo = releases.First() as TorrentInfo; torrentInfo.Title.Should().Be("The Beatles - Abbey Road [1969] [Album] [2.0 Mix 2019] [MP3 V2 (VBR)] [BD]"); torrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent); diff --git a/src/NzbDrone.Core.Test/IndexerTests/RedactedTests/RedactedFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/RedactedTests/RedactedFixture.cs index a23162b5d..7a7cc836f 100644 --- a/src/NzbDrone.Core.Test/IndexerTests/RedactedTests/RedactedFixture.cs +++ b/src/NzbDrone.Core.Test/IndexerTests/RedactedTests/RedactedFixture.cs @@ -9,8 +9,8 @@ using NUnit.Framework; using NzbDrone.Common.Http; using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Definitions; -using NzbDrone.Core.Indexers.Definitions.Gazelle; using NzbDrone.Core.IndexerSearch.Definitions; +using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; namespace NzbDrone.Core.Test.IndexerTests.RedactedTests @@ -40,9 +40,9 @@ namespace NzbDrone.Core.Test.IndexerTests.RedactedTests var releases = (await Subject.Fetch(new BasicSearchCriteria { Categories = new[] { 3000 } })).Releases; releases.Should().HaveCount(39); - releases.First().Should().BeOfType(); + releases.First().Should().BeOfType(); - var torrentInfo = releases.First() as GazelleInfo; + var torrentInfo = releases.First() as TorrentInfo; torrentInfo.Title.Should().Be("Red Hot Chili Peppers - Californication [1999] [Album] [US / Reissue 2020] [FLAC 24bit Lossless] [Vinyl]"); torrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent); diff --git a/src/NzbDrone.Core.Test/IndexerTests/SecretCinemaTests/SecretCinemaFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/SecretCinemaTests/SecretCinemaFixture.cs index e3aa89400..7c5166d26 100644 --- a/src/NzbDrone.Core.Test/IndexerTests/SecretCinemaTests/SecretCinemaFixture.cs +++ b/src/NzbDrone.Core.Test/IndexerTests/SecretCinemaTests/SecretCinemaFixture.cs @@ -11,6 +11,7 @@ using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Definitions; using NzbDrone.Core.Indexers.Definitions.Gazelle; using NzbDrone.Core.IndexerSearch.Definitions; +using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; namespace NzbDrone.Core.Test.IndexerTests.SecretCinemaTests @@ -40,9 +41,9 @@ namespace NzbDrone.Core.Test.IndexerTests.SecretCinemaTests var releases = (await Subject.Fetch(new BasicSearchCriteria { Categories = new[] { 2000 } })).Releases; releases.Should().HaveCount(3); - releases.First().Should().BeOfType(); + releases.First().Should().BeOfType(); - var torrentInfo = releases.First() as GazelleInfo; + var torrentInfo = releases.First() as TorrentInfo; torrentInfo.Title.Should().Be("Singin' in the Rain (1952) 2160p"); torrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent); diff --git a/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleInfo.cs b/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleInfo.cs deleted file mode 100644 index 3de3e99b8..000000000 --- a/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleInfo.cs +++ /dev/null @@ -1,8 +0,0 @@ -using NzbDrone.Core.Parser.Model; - -namespace NzbDrone.Core.Indexers.Definitions.Gazelle; - -public class GazelleInfo : TorrentInfo -{ - public bool? Scene { get; set; } -} diff --git a/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleParser.cs b/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleParser.cs index cd6b08ada..998ba835b 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleParser.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Gazelle/GazelleParser.cs @@ -69,7 +69,7 @@ public class GazelleParser : IParseIndexerResponse var infoUrl = GetInfoUrl(result.GroupId, id); - var release = new GazelleInfo + var release = new TorrentInfo { Guid = infoUrl, Title = WebUtility.HtmlDecode(title), @@ -108,7 +108,7 @@ public class GazelleParser : IParseIndexerResponse var groupName = WebUtility.HtmlDecode(result.GroupName); var infoUrl = GetInfoUrl(result.GroupId, id); - var release = new GazelleInfo + var release = new TorrentInfo { Guid = infoUrl, Title = groupName, diff --git a/src/NzbDrone.Core/Indexers/Definitions/GreatPosterWall.cs b/src/NzbDrone.Core/Indexers/Definitions/GreatPosterWall.cs index 744dbf642..f00ca9748 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/GreatPosterWall.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/GreatPosterWall.cs @@ -171,7 +171,7 @@ public class GreatPosterWallParser : GazelleParser var infoUrl = GetInfoUrl(result.GroupId.ToString(), torrent.TorrentId); var time = DateTime.SpecifyKind(torrent.Time, DateTimeKind.Unspecified); - var release = new GazelleInfo + var release = new TorrentInfo { Title = WebUtility.HtmlDecode(torrent.FileName).Trim(), Guid = infoUrl, diff --git a/src/NzbDrone.Core/Indexers/Definitions/Orpheus.cs b/src/NzbDrone.Core/Indexers/Definitions/Orpheus.cs index 3944bdd1b..f7a519684 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Orpheus.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Orpheus.cs @@ -265,7 +265,7 @@ namespace NzbDrone.Core.Indexers.Definitions var title = GetTitle(result, torrent); var infoUrl = GetInfoUrl(result.GroupId, id); - var release = new GazelleInfo + var release = new TorrentInfo { Guid = infoUrl, InfoUrl = infoUrl, @@ -306,7 +306,7 @@ namespace NzbDrone.Core.Indexers.Definitions var id = result.TorrentId; var infoUrl = GetInfoUrl(result.GroupId, id); - var release = new GazelleInfo + var release = new TorrentInfo { Guid = infoUrl, Title = WebUtility.HtmlDecode(result.GroupName), diff --git a/src/NzbDrone.Core/Indexers/Definitions/Redacted.cs b/src/NzbDrone.Core/Indexers/Definitions/Redacted.cs index 03d701acf..7016d8651 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Redacted.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Redacted.cs @@ -231,7 +231,7 @@ namespace NzbDrone.Core.Indexers.Definitions var title = GetTitle(result, torrent); var infoUrl = GetInfoUrl(result.GroupId, id); - var release = new GazelleInfo + var release = new TorrentInfo { Guid = infoUrl, InfoUrl = infoUrl, @@ -272,7 +272,7 @@ namespace NzbDrone.Core.Indexers.Definitions var id = result.TorrentId; var infoUrl = GetInfoUrl(result.GroupId, id); - var release = new GazelleInfo + var release = new TorrentInfo { Guid = infoUrl, Title = WebUtility.HtmlDecode(result.GroupName), diff --git a/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs b/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs index c18111bd6..53b688450 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/SecretCinema.cs @@ -110,7 +110,7 @@ public class SecretCinemaParser : IParseIndexerResponse var title = WebUtility.HtmlDecode(result.GroupName); var time = DateTime.SpecifyKind(torrent.Time, DateTimeKind.Unspecified); - var release = new GazelleInfo + var release = new TorrentInfo { Guid = $"SecretCinema-{id}", Title = title, @@ -170,7 +170,7 @@ public class SecretCinemaParser : IParseIndexerResponse var id = result.TorrentId; var groupName = WebUtility.HtmlDecode(result.GroupName); - var release = new GazelleInfo + var release = new TorrentInfo { Guid = $"SecretCinema-{id}", Title = groupName, diff --git a/src/NzbDrone.Core/Indexers/Definitions/Shazbat.cs b/src/NzbDrone.Core/Indexers/Definitions/Shazbat.cs index 6e7e83cfe..158ffb6fb 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/Shazbat.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/Shazbat.cs @@ -339,7 +339,7 @@ public class ShazbatParser : IParseIndexerResponse Seeders = seeders, Peers = seeders + leechers, PublishDate = publishDate, - IndexerFlags = new HashSet { IndexerFlag.Scene }, + Scene = true, Genres = row.QuerySelectorAll("label.label-tag").Select(t => t.TextContent.Trim()).ToList(), DownloadVolumeFactor = hasGlobalFreeleech ? 0 : 1, UploadVolumeFactor = 1, diff --git a/src/NzbDrone.Core/Indexers/IndexerBase.cs b/src/NzbDrone.Core/Indexers/IndexerBase.cs index e16f6b342..489bdbb27 100644 --- a/src/NzbDrone.Core/Indexers/IndexerBase.cs +++ b/src/NzbDrone.Core/Indexers/IndexerBase.cs @@ -131,12 +131,17 @@ namespace NzbDrone.Core.Indexers c.IndexerPrivacy = ((IndexerDefinition)Definition).Privacy; c.IndexerPriority = ((IndexerDefinition)Definition).Priority; - if (Protocol == DownloadProtocol.Torrent) + //Add common flags + if (Protocol == DownloadProtocol.Torrent && c is TorrentInfo torrentRelease) { - //Add common flags - if (((TorrentInfo)c).DownloadVolumeFactor == 0) + if (torrentRelease.DownloadVolumeFactor == 0) { - ((TorrentInfo)c).IndexerFlags.Add(IndexerFlag.FreeLeech); + torrentRelease.IndexerFlags.Add(IndexerFlag.FreeLeech); + } + + if (torrentRelease.Scene.GetValueOrDefault(false)) + { + torrentRelease.IndexerFlags.Add(IndexerFlag.Scene); } } }); diff --git a/src/NzbDrone.Core/Parser/Model/TorrentInfo.cs b/src/NzbDrone.Core/Parser/Model/TorrentInfo.cs index b8081f73b..9a44f58f3 100644 --- a/src/NzbDrone.Core/Parser/Model/TorrentInfo.cs +++ b/src/NzbDrone.Core/Parser/Model/TorrentInfo.cs @@ -13,6 +13,7 @@ namespace NzbDrone.Core.Parser.Model public long? MinimumSeedTime { get; set; } public double? DownloadVolumeFactor { get; set; } public double? UploadVolumeFactor { get; set; } + public bool? Scene { get; set; } public TorrentSeedConfiguration SeedConfiguration { get; set; }