mirror of
https://github.com/Radarr/Radarr.git
synced 2024-10-02 14:17:19 +02:00
Enforce comment style in CS
This commit is contained in:
parent
d37fac5343
commit
44d7c54077
@ -42,7 +42,6 @@ csharp_style_var_elsewhere = true:suggestion
|
|||||||
|
|
||||||
# Stylecop Rules
|
# Stylecop Rules
|
||||||
dotnet_diagnostic.SA0001.severity = none
|
dotnet_diagnostic.SA0001.severity = none
|
||||||
dotnet_diagnostic.SA1005.severity = none
|
|
||||||
dotnet_diagnostic.SA1025.severity = none
|
dotnet_diagnostic.SA1025.severity = none
|
||||||
dotnet_diagnostic.SA1101.severity = none
|
dotnet_diagnostic.SA1101.severity = none
|
||||||
dotnet_diagnostic.SA1116.severity = none
|
dotnet_diagnostic.SA1116.severity = none
|
||||||
|
@ -29,7 +29,7 @@ public IWebElement Find(By by, int timeout = 5)
|
|||||||
|
|
||||||
public void WaitForNoSpinner(int timeout = 30)
|
public void WaitForNoSpinner(int timeout = 30)
|
||||||
{
|
{
|
||||||
//give the spinner some time to show up.
|
// give the spinner some time to show up.
|
||||||
Thread.Sleep(200);
|
Thread.Sleep(200);
|
||||||
|
|
||||||
var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(timeout));
|
var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(timeout));
|
||||||
|
@ -394,7 +394,7 @@ public void CopyFolder_should_overwrite_existing_folder()
|
|||||||
var destination = new DirectoryInfo(GetTempFilePath());
|
var destination = new DirectoryInfo(GetTempFilePath());
|
||||||
Subject.TransferFolder(source.FullName, destination.FullName, TransferMode.Copy);
|
Subject.TransferFolder(source.FullName, destination.FullName, TransferMode.Copy);
|
||||||
|
|
||||||
//Delete Random File
|
// Delete Random File
|
||||||
destination.GetFiles("*.*", SearchOption.AllDirectories).First().Delete();
|
destination.GetFiles("*.*", SearchOption.AllDirectories).First().Delete();
|
||||||
|
|
||||||
Subject.TransferFolder(source.FullName, destination.FullName, TransferMode.Copy);
|
Subject.TransferFolder(source.FullName, destination.FullName, TransferMode.Copy);
|
||||||
|
@ -14,7 +14,7 @@ namespace NzbDrone.Common.Test
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class ServiceProviderTests : TestBase<ServiceProvider>
|
public class ServiceProviderTests : TestBase<ServiceProvider>
|
||||||
{
|
{
|
||||||
private const string ALWAYS_INSTALLED_SERVICE = "SCardSvr"; //Smart Card
|
private const string ALWAYS_INSTALLED_SERVICE = "SCardSvr"; // Smart Card
|
||||||
private const string TEMP_SERVICE_NAME = "NzbDrone_Nunit";
|
private const string TEMP_SERVICE_NAME = "NzbDrone_Nunit";
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
|
@ -204,7 +204,7 @@ private static bool InternalIsDebug()
|
|||||||
|
|
||||||
private static bool InternalIsOfficialBuild()
|
private static bool InternalIsOfficialBuild()
|
||||||
{
|
{
|
||||||
//Official builds will never have such a high revision
|
// Official builds will never have such a high revision
|
||||||
if (BuildInfo.Version.Major >= 10 || BuildInfo.Version.Revision > 10000)
|
if (BuildInfo.Version.Major >= 10 || BuildInfo.Version.Revision > 10000)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -35,7 +35,7 @@ public static string CleanFilePath(this string path)
|
|||||||
|
|
||||||
var info = new FileInfo(path.Trim());
|
var info = new FileInfo(path.Trim());
|
||||||
|
|
||||||
//UNC
|
// UNC
|
||||||
if (OsInfo.IsWindows && info.FullName.StartsWith(@"\\"))
|
if (OsInfo.IsWindows && info.FullName.StartsWith(@"\\"))
|
||||||
{
|
{
|
||||||
return info.FullName.TrimEnd('/', '\\', ' ');
|
return info.FullName.TrimEnd('/', '\\', ' ');
|
||||||
@ -168,7 +168,7 @@ private static string GetProperCapitalization(DirectoryInfo dirInfo)
|
|||||||
var parentDirInfo = dirInfo.Parent;
|
var parentDirInfo = dirInfo.Parent;
|
||||||
if (parentDirInfo == null)
|
if (parentDirInfo == null)
|
||||||
{
|
{
|
||||||
//Drive letter
|
// Drive letter
|
||||||
return dirInfo.Name.ToUpper();
|
return dirInfo.Name.ToUpper();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ public static string ConstructRequestUrl(Uri url)
|
|||||||
sb.Append(!basic && !secure ? qualified : "");
|
sb.Append(!basic && !secure ? qualified : "");
|
||||||
sb.Append(url.AbsolutePath);
|
sb.Append(url.AbsolutePath);
|
||||||
|
|
||||||
return sb.ToString(); //.ToLower();
|
return sb.ToString(); // .ToLower();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -73,17 +73,17 @@ public void should_change_property_names_for_audio_channels()
|
|||||||
|
|
||||||
var mediainfo = items.First().MediaInfo;
|
var mediainfo = items.First().MediaInfo;
|
||||||
|
|
||||||
//Removed props should be null
|
// Removed props should be null
|
||||||
mediainfo.AudioChannels.Should().BeNull();
|
mediainfo.AudioChannels.Should().BeNull();
|
||||||
mediainfo.AudioChannelPositionsText.Should().BeNull();
|
mediainfo.AudioChannelPositionsText.Should().BeNull();
|
||||||
|
|
||||||
//Renamed should have original value
|
// Renamed should have original value
|
||||||
mediainfo.AudioChannelsContainer.Should().NotBeNull();
|
mediainfo.AudioChannelsContainer.Should().NotBeNull();
|
||||||
mediainfo.AudioChannelPositionsTextContainer.Should().NotBeNull();
|
mediainfo.AudioChannelPositionsTextContainer.Should().NotBeNull();
|
||||||
mediainfo.AudioChannelsContainer.Should().Be(6);
|
mediainfo.AudioChannelsContainer.Should().Be(6);
|
||||||
mediainfo.AudioChannelPositionsTextContainer.Should().Be("Front: L C R, Side: L R, LFE");
|
mediainfo.AudioChannelPositionsTextContainer.Should().Be("Front: L C R, Side: L R, LFE");
|
||||||
|
|
||||||
//Should not touch other props
|
// Should not touch other props
|
||||||
mediainfo.AudioChannelPositions.Should().Be("3/2/0.1");
|
mediainfo.AudioChannelPositions.Should().Be("3/2/0.1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,7 +234,7 @@ public void should_not_allow_download_if_series_is_unknown()
|
|||||||
|
|
||||||
result.Should().HaveCount(1);
|
result.Should().HaveCount(1);
|
||||||
|
|
||||||
//result.First().RemoteMovie.DownloadAllowed.Should().BeFalse();
|
// result.First().RemoteMovie.DownloadAllowed.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@ -249,7 +249,7 @@ public void should_not_allow_download_if_no_episodes_found()
|
|||||||
|
|
||||||
result.Should().HaveCount(1);
|
result.Should().HaveCount(1);
|
||||||
|
|
||||||
//result.First().RemoteMovie.DownloadAllowed.Should().BeFalse();
|
// result.First().RemoteMovie.DownloadAllowed.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -23,7 +23,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
|
|
||||||
//TODO: Update for custom qualities!
|
// TODO: Update for custom qualities!
|
||||||
public class PrioritizeDownloadDecisionFixture : CoreTest<DownloadDecisionPriorizationService>
|
public class PrioritizeDownloadDecisionFixture : CoreTest<DownloadDecisionPriorizationService>
|
||||||
{
|
{
|
||||||
private CustomFormat _customFormat1;
|
private CustomFormat _customFormat1;
|
||||||
|
@ -67,7 +67,7 @@ public void Setup()
|
|||||||
|
|
||||||
private void GivenExistingFile(QualityModel quality)
|
private void GivenExistingFile(QualityModel quality)
|
||||||
{
|
{
|
||||||
//_remoteEpisode.Episodes.First().EpisodeFileId = 1;
|
// _remoteEpisode.Episodes.First().EpisodeFileId = 1;
|
||||||
_remoteMovie.Movie.MovieFile = new MovieFile { Quality = quality };
|
_remoteMovie.Movie.MovieFile = new MovieFile { Quality = quality };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ public void Setup()
|
|||||||
Title = "Series.Title.S01.720p.BluRay.X264-RlsGrp",
|
Title = "Series.Title.S01.720p.BluRay.X264-RlsGrp",
|
||||||
Seeders = 0,
|
Seeders = 0,
|
||||||
|
|
||||||
//IndexerSettings = new TorrentRssIndexerSettings {MinimumSeeders = 5}
|
// IndexerSettings = new TorrentRssIndexerSettings {MinimumSeeders = 5}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -70,8 +70,8 @@ protected void VerifyQueued(DownloadClientItem downloadClientItem)
|
|||||||
VerifyIdentifiable(downloadClientItem);
|
VerifyIdentifiable(downloadClientItem);
|
||||||
downloadClientItem.RemainingSize.Should().NotBe(0);
|
downloadClientItem.RemainingSize.Should().NotBe(0);
|
||||||
|
|
||||||
//downloadClientItem.RemainingTime.Should().NotBe(TimeSpan.Zero);
|
// downloadClientItem.RemainingTime.Should().NotBe(TimeSpan.Zero);
|
||||||
//downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
// downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
||||||
downloadClientItem.Status.Should().Be(DownloadItemStatus.Queued);
|
downloadClientItem.Status.Should().Be(DownloadItemStatus.Queued);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,8 +81,8 @@ protected void VerifyPaused(DownloadClientItem downloadClientItem)
|
|||||||
|
|
||||||
downloadClientItem.RemainingSize.Should().NotBe(0);
|
downloadClientItem.RemainingSize.Should().NotBe(0);
|
||||||
|
|
||||||
//downloadClientItem.RemainingTime.Should().NotBe(TimeSpan.Zero);
|
// downloadClientItem.RemainingTime.Should().NotBe(TimeSpan.Zero);
|
||||||
//downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
// downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
||||||
downloadClientItem.Status.Should().Be(DownloadItemStatus.Paused);
|
downloadClientItem.Status.Should().Be(DownloadItemStatus.Paused);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,8 +92,8 @@ protected void VerifyDownloading(DownloadClientItem downloadClientItem)
|
|||||||
|
|
||||||
downloadClientItem.RemainingSize.Should().NotBe(0);
|
downloadClientItem.RemainingSize.Should().NotBe(0);
|
||||||
|
|
||||||
//downloadClientItem.RemainingTime.Should().NotBe(TimeSpan.Zero);
|
// downloadClientItem.RemainingTime.Should().NotBe(TimeSpan.Zero);
|
||||||
//downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
// downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
||||||
downloadClientItem.Status.Should().Be(DownloadItemStatus.Downloading);
|
downloadClientItem.Status.Should().Be(DownloadItemStatus.Downloading);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,8 +101,8 @@ protected void VerifyPostprocessing(DownloadClientItem downloadClientItem)
|
|||||||
{
|
{
|
||||||
VerifyIdentifiable(downloadClientItem);
|
VerifyIdentifiable(downloadClientItem);
|
||||||
|
|
||||||
//downloadClientItem.RemainingTime.Should().NotBe(TimeSpan.Zero);
|
// downloadClientItem.RemainingTime.Should().NotBe(TimeSpan.Zero);
|
||||||
//downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
// downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
||||||
downloadClientItem.Status.Should().Be(DownloadItemStatus.Downloading);
|
downloadClientItem.Status.Should().Be(DownloadItemStatus.Downloading);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ protected void VerifyCompleted(DownloadClientItem downloadClientItem)
|
|||||||
downloadClientItem.RemainingSize.Should().Be(0);
|
downloadClientItem.RemainingSize.Should().Be(0);
|
||||||
downloadClientItem.RemainingTime.Should().Be(TimeSpan.Zero);
|
downloadClientItem.RemainingTime.Should().Be(TimeSpan.Zero);
|
||||||
|
|
||||||
//downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
// downloadClientItem.OutputPath.Should().NotBeNullOrEmpty();
|
||||||
downloadClientItem.Status.Should().Be(DownloadItemStatus.Completed);
|
downloadClientItem.Status.Should().Be(DownloadItemStatus.Completed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ public void Setup()
|
|||||||
|
|
||||||
_remoteMovie = new RemoteMovie();
|
_remoteMovie = new RemoteMovie();
|
||||||
|
|
||||||
//_remoteEpisode.Episodes = new List<Episode>{ _episode };
|
// _remoteEpisode.Episodes = new List<Episode>{ _episode };
|
||||||
_remoteMovie.Movie = _movie;
|
_remoteMovie.Movie = _movie;
|
||||||
_remoteMovie.ParsedMovieInfo = _parsedMovieInfo;
|
_remoteMovie.ParsedMovieInfo = _parsedMovieInfo;
|
||||||
_remoteMovie.Release = _release;
|
_remoteMovie.Release = _release;
|
||||||
|
@ -89,7 +89,7 @@ public void MaxOrDefault_should_return_zero_when_collection_is_empty()
|
|||||||
{
|
{
|
||||||
var result = new List<int>().MaxOrDefault();
|
var result = new List<int>().MaxOrDefault();
|
||||||
|
|
||||||
//Resolve
|
// Resolve
|
||||||
result.Should().Be(0);
|
result.Should().Be(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ public void MaxOrDefault_should_return_max_when_collection_is_not_empty()
|
|||||||
|
|
||||||
var result = list.MaxOrDefault();
|
var result = list.MaxOrDefault();
|
||||||
|
|
||||||
//Resolve
|
// Resolve
|
||||||
result.Should().Be(10);
|
result.Should().Be(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ public void MaxOrDefault_should_return_zero_when_collection_is_null()
|
|||||||
|
|
||||||
var result = list.MaxOrDefault();
|
var result = list.MaxOrDefault();
|
||||||
|
|
||||||
//Resolve
|
// Resolve
|
||||||
result.Should().Be(0);
|
result.Should().Be(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ public void Truncate_should_truncate_strings_to_max_specified_number_of_bytes()
|
|||||||
|
|
||||||
var resultString = str.Truncate(1000);
|
var resultString = str.Truncate(1000);
|
||||||
|
|
||||||
//Resolve
|
// Resolve
|
||||||
var result = new UTF8Encoding().GetBytes(resultString);
|
var result = new UTF8Encoding().GetBytes(resultString);
|
||||||
result.Length.Should().BeLessOrEqualTo(1000);
|
result.Length.Should().BeLessOrEqualTo(1000);
|
||||||
}
|
}
|
||||||
@ -134,7 +134,7 @@ public void Truncate_should_not_truncate_string_shorter_than_max_bytes()
|
|||||||
|
|
||||||
var resultString = str.Truncate(1000);
|
var resultString = str.Truncate(1000);
|
||||||
|
|
||||||
//Resolve
|
// Resolve
|
||||||
var result = new UTF8Encoding().GetBytes(resultString);
|
var result = new UTF8Encoding().GetBytes(resultString);
|
||||||
result.Length.Should().Be(11);
|
result.Length.Should().Be(11);
|
||||||
}
|
}
|
||||||
@ -144,7 +144,7 @@ public void MinOrDefault_should_return_zero_when_collection_is_empty()
|
|||||||
{
|
{
|
||||||
var result = new List<int>().MinOrDefault();
|
var result = new List<int>().MinOrDefault();
|
||||||
|
|
||||||
//Resolve
|
// Resolve
|
||||||
result.Should().Be(0);
|
result.Should().Be(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ public void MinOrDefault_should_return_min_when_collection_is_not_empty()
|
|||||||
|
|
||||||
var result = list.MinOrDefault();
|
var result = list.MinOrDefault();
|
||||||
|
|
||||||
//Resolve
|
// Resolve
|
||||||
result.Should().Be(3);
|
result.Should().Be(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,7 +166,7 @@ public void MinOrDefault_should_return_zero_when_collection_is_null()
|
|||||||
|
|
||||||
var result = list.MinOrDefault();
|
var result = list.MinOrDefault();
|
||||||
|
|
||||||
//Resolve
|
// Resolve
|
||||||
result.Should().Be(0);
|
result.Should().Be(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,13 +32,13 @@ protected void UseRealHttp()
|
|||||||
Mocker.SetConstant<IRadarrCloudRequestBuilder>(new RadarrCloudRequestBuilder());
|
Mocker.SetConstant<IRadarrCloudRequestBuilder>(new RadarrCloudRequestBuilder());
|
||||||
}
|
}
|
||||||
|
|
||||||
//Used for tests that rely on parsing working correctly.
|
// Used for tests that rely on parsing working correctly.
|
||||||
protected void UseRealParsingService()
|
protected void UseRealParsingService()
|
||||||
{
|
{
|
||||||
//Mocker.SetConstant<IParsingService>(new ParsingService(Mocker.Resolve<MovieService>(), Mocker.Resolve<ConfigService>(), Mocker.Resolve<QualityDefinitionService>(), TestLogger));
|
// Mocker.SetConstant<IParsingService>(new ParsingService(Mocker.Resolve<MovieService>(), Mocker.Resolve<ConfigService>(), Mocker.Resolve<QualityDefinitionService>(), TestLogger));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Used for tests that rely on parsing working correctly. Does some minimal parsing using the old static methods.
|
// Used for tests that rely on parsing working correctly. Does some minimal parsing using the old static methods.
|
||||||
protected void ParseMovieTitle()
|
protected void ParseMovieTitle()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IParsingService>().Setup(c => c.ParseMovieInfo(It.IsAny<string>(), It.IsAny<System.Collections.Generic.List<object>>()))
|
Mocker.GetMock<IParsingService>().Setup(c => c.ParseMovieInfo(It.IsAny<string>(), It.IsAny<System.Collections.Generic.List<object>>()))
|
||||||
|
@ -80,7 +80,7 @@ public void should_parse_2021_recent_feed_from_Nyaa()
|
|||||||
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
|
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
|
||||||
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
|
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
|
||||||
torrentInfo.PublishDate.Should().Be(DateTime.Parse("Tue, 24 Aug 2021 22:18:46"));
|
torrentInfo.PublishDate.Should().Be(DateTime.Parse("Tue, 24 Aug 2021 22:18:46"));
|
||||||
torrentInfo.Size.Should().Be(639211930); //609.6 MiB
|
torrentInfo.Size.Should().Be(639211930); // 609.6 MiB
|
||||||
torrentInfo.MagnetUrl.Should().Be(null);
|
torrentInfo.MagnetUrl.Should().Be(null);
|
||||||
torrentInfo.Seeders.Should().Be(4);
|
torrentInfo.Seeders.Should().Be(4);
|
||||||
torrentInfo.Peers.Should().Be(3 + 4);
|
torrentInfo.Peers.Should().Be(3 + 4);
|
||||||
|
@ -55,7 +55,7 @@ public void should_parse_feed_from_PTP(string fileName)
|
|||||||
first.DownloadUrl.Should().Be("https://passthepopcorn.me/torrents.php?action=download&id=452135&authkey=00000000000000000000000000000000&torrent_pass=00000000000000000000000000000000");
|
first.DownloadUrl.Should().Be("https://passthepopcorn.me/torrents.php?action=download&id=452135&authkey=00000000000000000000000000000000&torrent_pass=00000000000000000000000000000000");
|
||||||
first.InfoUrl.Should().Be("https://passthepopcorn.me/torrents.php?id=148131&torrentid=452135");
|
first.InfoUrl.Should().Be("https://passthepopcorn.me/torrents.php?id=148131&torrentid=452135");
|
||||||
|
|
||||||
//first.PublishDate.Should().Be(DateTime.Parse("2017-04-17T12:13:42+0000").ToUniversalTime()); stupid timezones
|
// first.PublishDate.Should().Be(DateTime.Parse("2017-04-17T12:13:42+0000").ToUniversalTime()); stupid timezones
|
||||||
first.Size.Should().Be(2466170624L);
|
first.Size.Should().Be(2466170624L);
|
||||||
first.InfoHash.Should().BeNullOrEmpty();
|
first.InfoHash.Should().BeNullOrEmpty();
|
||||||
first.MagnetUrl.Should().BeNullOrEmpty();
|
first.MagnetUrl.Should().BeNullOrEmpty();
|
||||||
|
@ -32,7 +32,7 @@ public void Setup()
|
|||||||
{
|
{
|
||||||
ParseMovieTitle();
|
ParseMovieTitle();
|
||||||
|
|
||||||
//UseRealParsingService();
|
// UseRealParsingService();
|
||||||
Mocker.GetMock<IDiskScanService>().Setup(c => c.GetVideoFiles(It.IsAny<string>(), It.IsAny<bool>()))
|
Mocker.GetMock<IDiskScanService>().Setup(c => c.GetVideoFiles(It.IsAny<string>(), It.IsAny<bool>()))
|
||||||
.Returns(_videoFiles);
|
.Returns(_videoFiles);
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ namespace NzbDrone.Core.Test.MediaFiles.MovieImport
|
|||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
|
|
||||||
//TODO: Update all of this for movies.
|
// TODO: Update all of this for movies.
|
||||||
public class ImportApprovedMoviesFixture : CoreTest<ImportApprovedMovie>
|
public class ImportApprovedMoviesFixture : CoreTest<ImportApprovedMovie>
|
||||||
{
|
{
|
||||||
private List<ImportDecision> _rejectedDecisions;
|
private List<ImportDecision> _rejectedDecisions;
|
||||||
|
@ -21,7 +21,7 @@ namespace NzbDrone.Core.Test.MediaFiles.MovieImport
|
|||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
|
|
||||||
//TODO: Add tests to ensure helpers for augmenters are correctly passed.
|
// TODO: Add tests to ensure helpers for augmenters are correctly passed.
|
||||||
public class ImportDecisionMakerFixture : CoreTest<ImportDecisionMaker>
|
public class ImportDecisionMakerFixture : CoreTest<ImportDecisionMaker>
|
||||||
{
|
{
|
||||||
private List<string> _videoFiles;
|
private List<string> _videoFiles;
|
||||||
|
@ -23,7 +23,7 @@ public void Setup()
|
|||||||
.Build();
|
.Build();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: Decide whether to reimplement this!
|
// TODO: Decide whether to reimplement this!
|
||||||
|
|
||||||
/*[Test]
|
/*[Test]
|
||||||
public void should_be_accepted_for_existing_file()
|
public void should_be_accepted_for_existing_file()
|
||||||
|
@ -42,7 +42,7 @@ private void ValidateMovie(MovieMetadata movie)
|
|||||||
movie.Studio.Should().NotBeNullOrWhiteSpace();
|
movie.Studio.Should().NotBeNullOrWhiteSpace();
|
||||||
movie.Runtime.Should().BeGreaterThan(0);
|
movie.Runtime.Should().BeGreaterThan(0);
|
||||||
|
|
||||||
//series.TvRageId.Should().BeGreaterThan(0);
|
// series.TvRageId.Should().BeGreaterThan(0);
|
||||||
movie.TmdbId.Should().BeGreaterThan(0);
|
movie.TmdbId.Should().BeGreaterThan(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ private void SetMovieProperties(DateTime? cinema, DateTime? physical, DateTime?
|
|||||||
_movie.MinimumAvailability = minimumAvailability;
|
_movie.MinimumAvailability = minimumAvailability;
|
||||||
}
|
}
|
||||||
|
|
||||||
//minAvail = TBA
|
// minAvail = TBA
|
||||||
[TestCase(null, null, null, MovieStatusType.TBA, true)]
|
[TestCase(null, null, null, MovieStatusType.TBA, true)]
|
||||||
[TestCase("2000/01/01 21:10:42", null, null, MovieStatusType.TBA, true)]
|
[TestCase("2000/01/01 21:10:42", null, null, MovieStatusType.TBA, true)]
|
||||||
[TestCase("2100/01/01 21:10:42", null, null, MovieStatusType.TBA, true)]
|
[TestCase("2100/01/01 21:10:42", null, null, MovieStatusType.TBA, true)]
|
||||||
@ -36,7 +36,7 @@ private void SetMovieProperties(DateTime? cinema, DateTime? physical, DateTime?
|
|||||||
[TestCase(null, null, "2000/01/01 21:10:42", MovieStatusType.TBA, true)]
|
[TestCase(null, null, "2000/01/01 21:10:42", MovieStatusType.TBA, true)]
|
||||||
[TestCase(null, null, "2100/01/01 21:10:42", MovieStatusType.TBA, true)]
|
[TestCase(null, null, "2100/01/01 21:10:42", MovieStatusType.TBA, true)]
|
||||||
|
|
||||||
//minAvail = Announced
|
// minAvail = Announced
|
||||||
[TestCase(null, null, null, MovieStatusType.Announced, true)]
|
[TestCase(null, null, null, MovieStatusType.Announced, true)]
|
||||||
[TestCase("2000/01/01 21:10:42", null, null, MovieStatusType.Announced, true)]
|
[TestCase("2000/01/01 21:10:42", null, null, MovieStatusType.Announced, true)]
|
||||||
[TestCase("2100/01/01 21:10:42", null, null, MovieStatusType.Announced, true)]
|
[TestCase("2100/01/01 21:10:42", null, null, MovieStatusType.Announced, true)]
|
||||||
@ -45,33 +45,33 @@ private void SetMovieProperties(DateTime? cinema, DateTime? physical, DateTime?
|
|||||||
[TestCase(null, null, "2000/01/01 21:10:42", MovieStatusType.Announced, true)]
|
[TestCase(null, null, "2000/01/01 21:10:42", MovieStatusType.Announced, true)]
|
||||||
[TestCase(null, null, "2100/01/01 21:10:42", MovieStatusType.Announced, true)]
|
[TestCase(null, null, "2100/01/01 21:10:42", MovieStatusType.Announced, true)]
|
||||||
|
|
||||||
//minAvail = InCinemas
|
// minAvail = InCinemas
|
||||||
//InCinemas is known and in the past others are not known or in future
|
// InCinemas is known and in the past others are not known or in future
|
||||||
[TestCase("2000/01/01 21:10:42", null, null, MovieStatusType.InCinemas, true)]
|
[TestCase("2000/01/01 21:10:42", null, null, MovieStatusType.InCinemas, true)]
|
||||||
[TestCase("2000/01/01 21:10:42", "2100/01/01 21:10:42", null, MovieStatusType.InCinemas, true)]
|
[TestCase("2000/01/01 21:10:42", "2100/01/01 21:10:42", null, MovieStatusType.InCinemas, true)]
|
||||||
[TestCase("2000/01/01 21:10:42", "2100/01/01 21:10:42", "2100/01/01 21:10:42", MovieStatusType.InCinemas, true)]
|
[TestCase("2000/01/01 21:10:42", "2100/01/01 21:10:42", "2100/01/01 21:10:42", MovieStatusType.InCinemas, true)]
|
||||||
[TestCase("2000/01/01 21:10:42", null, "2100/01/01 21:10:42", MovieStatusType.InCinemas, true)]
|
[TestCase("2000/01/01 21:10:42", null, "2100/01/01 21:10:42", MovieStatusType.InCinemas, true)]
|
||||||
|
|
||||||
//InCinemas is known and in the future others are not known or in future
|
// InCinemas is known and in the future others are not known or in future
|
||||||
[TestCase("2100/01/01 21:10:42", null, null, MovieStatusType.InCinemas, false)]
|
[TestCase("2100/01/01 21:10:42", null, null, MovieStatusType.InCinemas, false)]
|
||||||
[TestCase("2100/01/01 21:10:42", "2100/01/01 21:10:42", null, MovieStatusType.InCinemas, false)]
|
[TestCase("2100/01/01 21:10:42", "2100/01/01 21:10:42", null, MovieStatusType.InCinemas, false)]
|
||||||
[TestCase("2100/01/01 21:10:42", "2100/01/01 21:10:42", "2100/01/01 21:10:42", MovieStatusType.InCinemas, false)]
|
[TestCase("2100/01/01 21:10:42", "2100/01/01 21:10:42", "2100/01/01 21:10:42", MovieStatusType.InCinemas, false)]
|
||||||
[TestCase("2100/01/01 21:10:42", null, "2100/01/01 21:10:42", MovieStatusType.InCinemas, false)]
|
[TestCase("2100/01/01 21:10:42", null, "2100/01/01 21:10:42", MovieStatusType.InCinemas, false)]
|
||||||
|
|
||||||
//handle the cases where InCinemas date is not known but Digital/Physical are and passed -- this refers to the issue being fixed along with these tests
|
// handle the cases where InCinemas date is not known but Digital/Physical are and passed -- this refers to the issue being fixed along with these tests
|
||||||
[TestCase(null, "2000/01/01 21:10:42", null, MovieStatusType.InCinemas, true)]
|
[TestCase(null, "2000/01/01 21:10:42", null, MovieStatusType.InCinemas, true)]
|
||||||
[TestCase(null, "2000/01/01 21:10:42", "2000/01/01 21:10:42", MovieStatusType.InCinemas, true)]
|
[TestCase(null, "2000/01/01 21:10:42", "2000/01/01 21:10:42", MovieStatusType.InCinemas, true)]
|
||||||
[TestCase(null, null, "2000/01/01 21:10:42", MovieStatusType.InCinemas, true)]
|
[TestCase(null, null, "2000/01/01 21:10:42", MovieStatusType.InCinemas, true)]
|
||||||
|
|
||||||
//same as previous but digital/physical are in future
|
// same as previous but digital/physical are in future
|
||||||
[TestCase(null, "2100/01/01 21:10:42", null, MovieStatusType.InCinemas, false)]
|
[TestCase(null, "2100/01/01 21:10:42", null, MovieStatusType.InCinemas, false)]
|
||||||
[TestCase(null, "2100/01/01 21:10:42", "2100/01/01 21:10:42", MovieStatusType.InCinemas, false)]
|
[TestCase(null, "2100/01/01 21:10:42", "2100/01/01 21:10:42", MovieStatusType.InCinemas, false)]
|
||||||
[TestCase(null, null, "2100/01/01 21:10:42", MovieStatusType.InCinemas, false)]
|
[TestCase(null, null, "2100/01/01 21:10:42", MovieStatusType.InCinemas, false)]
|
||||||
|
|
||||||
//no date values
|
// no date values
|
||||||
[TestCase(null, null, null, MovieStatusType.InCinemas, false)]
|
[TestCase(null, null, null, MovieStatusType.InCinemas, false)]
|
||||||
|
|
||||||
//minAvail = Released
|
// minAvail = Released
|
||||||
[TestCase(null, null, null, MovieStatusType.Released, false)]
|
[TestCase(null, null, null, MovieStatusType.Released, false)]
|
||||||
[TestCase("2000/01/01 21:10:42", null, null, MovieStatusType.Released, true)]
|
[TestCase("2000/01/01 21:10:42", null, null, MovieStatusType.Released, true)]
|
||||||
[TestCase("2100/01/01 21:10:42", null, null, MovieStatusType.Released, false)]
|
[TestCase("2100/01/01 21:10:42", null, null, MovieStatusType.Released, false)]
|
||||||
|
@ -7,7 +7,7 @@ namespace NzbDrone.Core.Test.MovieTests
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class MovieTitleNormalizerFixture
|
public class MovieTitleNormalizerFixture
|
||||||
{
|
{
|
||||||
//TODO: Decide on reimplementing this!
|
// TODO: Decide on reimplementing this!
|
||||||
/*
|
/*
|
||||||
[TestCase("A to Z", 281588, "a to z")]
|
[TestCase("A to Z", 281588, "a to z")]
|
||||||
[TestCase("A. D. - The Trials & Triumph of the Early Church", 266757, "ad trials triumph early church")]
|
[TestCase("A. D. - The Trials & Triumph of the Early Church", 266757, "ad trials triumph early church")]
|
||||||
|
@ -63,7 +63,7 @@ public void Setup()
|
|||||||
[TestCase("backslash \\ backlash", "backslash backlash")]
|
[TestCase("backslash \\ backlash", "backslash backlash")]
|
||||||
[TestCase("I'm the Boss", "Im the Boss")]
|
[TestCase("I'm the Boss", "Im the Boss")]
|
||||||
|
|
||||||
//[TestCase("", "")]
|
// [TestCase("", "")]
|
||||||
public void should_get_expected_title_back(string title, string expected)
|
public void should_get_expected_title_back(string title, string expected)
|
||||||
{
|
{
|
||||||
_series.Title = title;
|
_series.Title = title;
|
||||||
|
@ -332,7 +332,7 @@ public void should_be_able_to_use_original_title()
|
|||||||
.Should().Be("30 Rock - 30.Rock.S01E01.xvid-LOL");
|
.Should().Be("30 Rock - 30.Rock.S01E01.xvid-LOL");
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: Update this test or fix the underlying issue!
|
// TODO: Update this test or fix the underlying issue!
|
||||||
/*
|
/*
|
||||||
[Test]
|
[Test]
|
||||||
public void should_replace_double_period_with_single_period()
|
public void should_replace_double_period_with_single_period()
|
||||||
|
@ -110,7 +110,7 @@ public void should_parse_anime_movie_title_without_year(string postTitle, string
|
|||||||
[TestCase("Joe.Movie.2.EXTENDED.EDITION.2015.German.DL.PAL.DVDR-ETM", "Joe Movie 2", "EXTENDED EDITION", 2015)]
|
[TestCase("Joe.Movie.2.EXTENDED.EDITION.2015.German.DL.PAL.DVDR-ETM", "Joe Movie 2", "EXTENDED EDITION", 2015)]
|
||||||
[TestCase("Movie.EXTENDED.2011.HDRip.AC3.German.XviD-POE", "Movie", "EXTENDED", 2011)]
|
[TestCase("Movie.EXTENDED.2011.HDRip.AC3.German.XviD-POE", "Movie", "EXTENDED", 2011)]
|
||||||
|
|
||||||
//Special cases (see description)
|
// Special cases (see description)
|
||||||
[TestCase("Movie.Klasse.von.1999.1990.German.720p.HDTV.x264-NORETAiL", "Movie Klasse von 1999", "", 1990, Description = "year in the title")]
|
[TestCase("Movie.Klasse.von.1999.1990.German.720p.HDTV.x264-NORETAiL", "Movie Klasse von 1999", "", 1990, Description = "year in the title")]
|
||||||
[TestCase("Movie.Squad.2016.EXTENDED.German.DL.AC3.BDRip.x264-hqc", "Movie Squad", "EXTENDED", 2016, Description = "edition after year")]
|
[TestCase("Movie.Squad.2016.EXTENDED.German.DL.AC3.BDRip.x264-hqc", "Movie Squad", "EXTENDED", 2016, Description = "edition after year")]
|
||||||
[TestCase("Movie.and.Movie.2010.Extended.Cut.German.DTS.DL.720p.BluRay.x264-HDS", "Movie and Movie", "Extended Cut", 2010, Description = "edition after year")]
|
[TestCase("Movie.and.Movie.2010.Extended.Cut.German.DTS.DL.720p.BluRay.x264-HDS", "Movie and Movie", "Extended Cut", 2010, Description = "edition after year")]
|
||||||
|
@ -22,7 +22,7 @@ public override void Setup()
|
|||||||
{
|
{
|
||||||
base.Setup();
|
base.Setup();
|
||||||
|
|
||||||
//Add multi indexer
|
// Add multi indexer
|
||||||
GivenIndexerSettings(new RarbgSettings
|
GivenIndexerSettings(new RarbgSettings
|
||||||
{
|
{
|
||||||
MultiLanguages = new List<int>
|
MultiLanguages = new List<int>
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
//using FluentAssertions;
|
// using FluentAssertions;
|
||||||
//using NUnit.Framework;
|
// using NUnit.Framework;
|
||||||
//using NzbDrone.Core.CustomFormats;
|
// using NzbDrone.Core.CustomFormats;
|
||||||
//using NzbDrone.Core.MediaFiles.MediaInfo;
|
// using NzbDrone.Core.MediaFiles.MediaInfo;
|
||||||
//using NzbDrone.Core.Parser;
|
// using NzbDrone.Core.Parser;
|
||||||
//using NzbDrone.Core.Parser.Augmenters;
|
// using NzbDrone.Core.Parser.Augmenters;
|
||||||
//using NzbDrone.Core.Qualities;
|
// using NzbDrone.Core.Qualities;
|
||||||
|
|
||||||
//namespace NzbDrone.Core.Test.ParserTests.ParsingServiceTests.AugmentersTests
|
// namespace NzbDrone.Core.Test.ParserTests.ParsingServiceTests.AugmentersTests
|
||||||
//{
|
// {
|
||||||
// [TestFixture]
|
// [TestFixture]
|
||||||
// public class AugmentWithMediaInfoFixture : AugmentMovieInfoFixture<AugmentWithMediaInfo>
|
// public class AugmentWithMediaInfoFixture : AugmentMovieInfoFixture<AugmentWithMediaInfo>
|
||||||
// {
|
// {
|
||||||
@ -87,4 +87,4 @@
|
|||||||
// movieInfo.Quality.QualityDetectionSource.Should().BeEquivalentTo(QualityDetectionSource.Name);
|
// movieInfo.Quality.QualityDetectionSource.Should().BeEquivalentTo(QualityDetectionSource.Name);
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
//}
|
// }
|
||||||
|
@ -13,10 +13,10 @@ public class QualityParserFixture : CoreTest
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
//QualityDefinitionServiceFixture.SetupDefaultDefinitions();
|
// QualityDefinitionServiceFixture.SetupDefaultDefinitions();
|
||||||
}
|
}
|
||||||
|
|
||||||
//public static object[] SelfQualityParserCases = QualityDefinition.DefaultQualityDefinitions.ToArray();
|
// public static object[] SelfQualityParserCases = QualityDefinition.DefaultQualityDefinitions.ToArray();
|
||||||
public static object[] OtherSourceQualityParserCases =
|
public static object[] OtherSourceQualityParserCases =
|
||||||
{
|
{
|
||||||
new object[] { "SD TV", Source.TV, Resolution.R480p, Modifier.NONE },
|
new object[] { "SD TV", Source.TV, Resolution.R480p, Modifier.NONE },
|
||||||
|
@ -35,8 +35,8 @@ public void init_should_add_default_profiles()
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|
||||||
//This confirms that new profiles are added only if no other profiles exists.
|
// This confirms that new profiles are added only if no other profiles exists.
|
||||||
//We don't want to keep adding them back if a user deleted them on purpose.
|
// We don't want to keep adding them back if a user deleted them on purpose.
|
||||||
public void Init_should_skip_if_any_profiles_already_exist()
|
public void Init_should_skip_if_any_profiles_already_exist()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IProfileRepository>()
|
Mocker.GetMock<IProfileRepository>()
|
||||||
|
@ -25,7 +25,7 @@ public class QualityFixture : CoreTest
|
|||||||
new object[] { 8, Quality.WEBDL480p },
|
new object[] { 8, Quality.WEBDL480p },
|
||||||
new object[] { 9, Quality.HDTV1080p },
|
new object[] { 9, Quality.HDTV1080p },
|
||||||
|
|
||||||
//new object[] {10, Quality.RAWHD},
|
// new object[] {10, Quality.RAWHD},
|
||||||
new object[] { 16, Quality.HDTV2160p },
|
new object[] { 16, Quality.HDTV2160p },
|
||||||
new object[] { 18, Quality.WEBDL2160p },
|
new object[] { 18, Quality.WEBDL2160p },
|
||||||
new object[] { 19, Quality.Bluray2160p },
|
new object[] { 19, Quality.Bluray2160p },
|
||||||
@ -44,7 +44,7 @@ public class QualityFixture : CoreTest
|
|||||||
new object[] { Quality.WEBDL480p, 8 },
|
new object[] { Quality.WEBDL480p, 8 },
|
||||||
new object[] { Quality.HDTV1080p, 9 },
|
new object[] { Quality.HDTV1080p, 9 },
|
||||||
|
|
||||||
//new object[] {Quality.RAWHD, 10},
|
// new object[] {Quality.RAWHD, 10},
|
||||||
new object[] { Quality.HDTV2160p, 16 },
|
new object[] { Quality.HDTV2160p, 16 },
|
||||||
new object[] { Quality.WEBDL2160p, 18 },
|
new object[] { Quality.WEBDL2160p, 18 },
|
||||||
new object[] { Quality.Bluray2160p, 19 },
|
new object[] { Quality.Bluray2160p, 19 },
|
||||||
|
@ -272,13 +272,13 @@ public string GetValue(string key, object defaultValue, bool persist = true)
|
|||||||
return valueHolder.First().Value.Trim();
|
return valueHolder.First().Value.Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Save the value
|
// Save the value
|
||||||
if (persist)
|
if (persist)
|
||||||
{
|
{
|
||||||
SetValue(key, defaultValue);
|
SetValue(key, defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
//return the default value
|
// return the default value
|
||||||
return defaultValue.ToString();
|
return defaultValue.ToString();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -13,17 +13,17 @@ public interface IConfigService
|
|||||||
|
|
||||||
bool IsDefined(string key);
|
bool IsDefined(string key);
|
||||||
|
|
||||||
//Download Client
|
// Download Client
|
||||||
string DownloadClientWorkingFolders { get; set; }
|
string DownloadClientWorkingFolders { get; set; }
|
||||||
int DownloadClientHistoryLimit { get; set; }
|
int DownloadClientHistoryLimit { get; set; }
|
||||||
int CheckForFinishedDownloadInterval { get; set; }
|
int CheckForFinishedDownloadInterval { get; set; }
|
||||||
|
|
||||||
//Completed/Failed Download Handling (Download client)
|
// Completed/Failed Download Handling (Download client)
|
||||||
bool EnableCompletedDownloadHandling { get; set; }
|
bool EnableCompletedDownloadHandling { get; set; }
|
||||||
|
|
||||||
bool AutoRedownloadFailed { get; set; }
|
bool AutoRedownloadFailed { get; set; }
|
||||||
|
|
||||||
//Media Management
|
// Media Management
|
||||||
bool AutoUnmonitorPreviouslyDownloadedMovies { get; set; }
|
bool AutoUnmonitorPreviouslyDownloadedMovies { get; set; }
|
||||||
string RecycleBin { get; set; }
|
string RecycleBin { get; set; }
|
||||||
int RecycleBinCleanupDays { get; set; }
|
int RecycleBinCleanupDays { get; set; }
|
||||||
@ -40,12 +40,12 @@ public interface IConfigService
|
|||||||
RescanAfterRefreshType RescanAfterRefresh { get; set; }
|
RescanAfterRefreshType RescanAfterRefresh { get; set; }
|
||||||
bool AutoRenameFolders { get; set; }
|
bool AutoRenameFolders { get; set; }
|
||||||
|
|
||||||
//Permissions (Media Management)
|
// Permissions (Media Management)
|
||||||
bool SetPermissionsLinux { get; set; }
|
bool SetPermissionsLinux { get; set; }
|
||||||
string ChmodFolder { get; set; }
|
string ChmodFolder { get; set; }
|
||||||
string ChownGroup { get; set; }
|
string ChownGroup { get; set; }
|
||||||
|
|
||||||
//Indexers
|
// Indexers
|
||||||
int Retention { get; set; }
|
int Retention { get; set; }
|
||||||
int RssSyncInterval { get; set; }
|
int RssSyncInterval { get; set; }
|
||||||
int MaximumSize { get; set; }
|
int MaximumSize { get; set; }
|
||||||
@ -62,10 +62,10 @@ public interface IConfigService
|
|||||||
string ListSyncLevel { get; set; }
|
string ListSyncLevel { get; set; }
|
||||||
string ImportExclusions { get; set; }
|
string ImportExclusions { get; set; }
|
||||||
|
|
||||||
//Metadata Provider
|
// Metadata Provider
|
||||||
TMDbCountryCode CertificationCountry { get; set; }
|
TMDbCountryCode CertificationCountry { get; set; }
|
||||||
|
|
||||||
//UI
|
// UI
|
||||||
int FirstDayOfWeek { get; set; }
|
int FirstDayOfWeek { get; set; }
|
||||||
string CalendarWeekColumnHeader { get; set; }
|
string CalendarWeekColumnHeader { get; set; }
|
||||||
MovieRuntimeFormatType MovieRuntimeFormat { get; set; }
|
MovieRuntimeFormatType MovieRuntimeFormat { get; set; }
|
||||||
@ -78,17 +78,17 @@ public interface IConfigService
|
|||||||
int MovieInfoLanguage { get; set; }
|
int MovieInfoLanguage { get; set; }
|
||||||
int UILanguage { get; set; }
|
int UILanguage { get; set; }
|
||||||
|
|
||||||
//Internal
|
// Internal
|
||||||
bool CleanupMetadataImages { get; set; }
|
bool CleanupMetadataImages { get; set; }
|
||||||
string PlexClientIdentifier { get; }
|
string PlexClientIdentifier { get; }
|
||||||
|
|
||||||
//Forms Auth
|
// Forms Auth
|
||||||
string RijndaelPassphrase { get; }
|
string RijndaelPassphrase { get; }
|
||||||
string HmacPassphrase { get; }
|
string HmacPassphrase { get; }
|
||||||
string RijndaelSalt { get; }
|
string RijndaelSalt { get; }
|
||||||
string HmacSalt { get; }
|
string HmacSalt { get; }
|
||||||
|
|
||||||
//Proxy
|
// Proxy
|
||||||
bool ProxyEnabled { get; }
|
bool ProxyEnabled { get; }
|
||||||
ProxyType ProxyType { get; }
|
ProxyType ProxyType { get; }
|
||||||
string ProxyHostname { get; }
|
string ProxyHostname { get; }
|
||||||
|
@ -64,7 +64,7 @@ public Version Version
|
|||||||
{
|
{
|
||||||
version = db.QueryFirstOrDefault<string>("SHOW server_version");
|
version = db.QueryFirstOrDefault<string>("SHOW server_version");
|
||||||
|
|
||||||
//Postgres can return extra info about operating system on version call, ignore this
|
// Postgres can return extra info about operating system on version call, ignore this
|
||||||
version = Regex.Replace(version, @"\(.*?\)", "");
|
version = Regex.Replace(version, @"\(.*?\)", "");
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
namespace NzbDrone.Core.Datastore.Migration
|
namespace NzbDrone.Core.Datastore.Migration
|
||||||
{
|
{
|
||||||
//Migrations 002 - 103 were squashed in to 001, do not use these migration numbers, versions will be present in V1 migrated Radarr DBs
|
// Migrations 002 - 103 were squashed in to 001, do not use these migration numbers, versions will be present in V1 migrated Radarr DBs
|
||||||
public class sonarr_squashed
|
public class sonarr_squashed
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ public class fix_movie_files : NzbDroneMigrationBase
|
|||||||
{
|
{
|
||||||
protected override void MainDbUpgrade()
|
protected override void MainDbUpgrade()
|
||||||
{
|
{
|
||||||
Alter.Table("MovieFiles").AlterColumn("Path").AsString().Nullable(); //Should be deleted, but to much work, ¯\_(ツ)_/¯
|
Alter.Table("MovieFiles").AlterColumn("Path").AsString().Nullable(); // Should be deleted, but to much work, ¯\_(ツ)_/¯
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ protected override void MainDbUpgrade()
|
|||||||
{
|
{
|
||||||
Create.Column("Edition").OnTable("MovieFiles").AsString().Nullable();
|
Create.Column("Edition").OnTable("MovieFiles").AsString().Nullable();
|
||||||
|
|
||||||
//Execute.WithConnection(SetSortTitles);
|
// Execute.WithConnection(SetSortTitles);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetSortTitles(IDbConnection conn, IDbTransaction tran)
|
private void SetSortTitles(IDbConnection conn, IDbTransaction tran)
|
||||||
|
@ -42,23 +42,23 @@ private void SetTitleSlug(IDbConnection conn, IDbTransaction tran)
|
|||||||
|
|
||||||
public static string ToUrlSlug(string value)
|
public static string ToUrlSlug(string value)
|
||||||
{
|
{
|
||||||
//First to lower case
|
// First to lower case
|
||||||
value = value.ToLowerInvariant();
|
value = value.ToLowerInvariant();
|
||||||
|
|
||||||
//Remove all accents
|
// Remove all accents
|
||||||
var bytes = Encoding.GetEncoding("Cyrillic").GetBytes(value);
|
var bytes = Encoding.GetEncoding("Cyrillic").GetBytes(value);
|
||||||
value = Encoding.ASCII.GetString(bytes);
|
value = Encoding.ASCII.GetString(bytes);
|
||||||
|
|
||||||
//Replace spaces
|
// Replace spaces
|
||||||
value = Regex.Replace(value, @"\s", "-", RegexOptions.Compiled);
|
value = Regex.Replace(value, @"\s", "-", RegexOptions.Compiled);
|
||||||
|
|
||||||
//Remove invalid chars
|
// Remove invalid chars
|
||||||
value = Regex.Replace(value, @"[^a-z0-9\s-_]", "", RegexOptions.Compiled);
|
value = Regex.Replace(value, @"[^a-z0-9\s-_]", "", RegexOptions.Compiled);
|
||||||
|
|
||||||
//Trim dashes from end
|
// Trim dashes from end
|
||||||
value = value.Trim('-', '_');
|
value = value.Trim('-', '_');
|
||||||
|
|
||||||
//Replace double occurences of - or _
|
// Replace double occurences of - or _
|
||||||
value = Regex.Replace(value, @"([-_]){2,}", "$1", RegexOptions.Compiled);
|
value = Regex.Replace(value, @"([-_]){2,}", "$1", RegexOptions.Compiled);
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using FluentMigrator;
|
using FluentMigrator;
|
||||||
|
|
||||||
//using FluentMigrator.Expressions;
|
// using FluentMigrator.Expressions;
|
||||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||||
using NzbDrone.Core.Movies;
|
using NzbDrone.Core.Movies;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ public class add_custom_formats : NzbDroneMigrationBase
|
|||||||
{
|
{
|
||||||
protected override void MainDbUpgrade()
|
protected override void MainDbUpgrade()
|
||||||
{
|
{
|
||||||
//Execute.WithConnection(RenameUrlToBaseUrl);
|
// Execute.WithConnection(RenameUrlToBaseUrl);
|
||||||
Create.TableForModel("CustomFormats")
|
Create.TableForModel("CustomFormats")
|
||||||
.WithColumn("Name").AsString().Unique()
|
.WithColumn("Name").AsString().Unique()
|
||||||
.WithColumn("FormatTags").AsString();
|
.WithColumn("FormatTags").AsString();
|
||||||
|
@ -8,7 +8,7 @@ public class indexer_client_status_search_changes : NzbDroneMigrationBase
|
|||||||
{
|
{
|
||||||
protected override void MainDbUpgrade()
|
protected override void MainDbUpgrade()
|
||||||
{
|
{
|
||||||
//Cleanup cases of Sonarr Interference with Radarr db
|
// Cleanup cases of Sonarr Interference with Radarr db
|
||||||
if (Schema.Table("PendingReleases").Column("Reason").Exists())
|
if (Schema.Table("PendingReleases").Column("Reason").Exists())
|
||||||
{
|
{
|
||||||
Delete.Column("Reason").FromTable("PendingReleases");
|
Delete.Column("Reason").FromTable("PendingReleases");
|
||||||
|
@ -14,7 +14,7 @@ protected override void MainDbUpgrade()
|
|||||||
|
|
||||||
Alter.Table("MovieFiles").AddColumn("OriginalFilePath").AsString().Nullable();
|
Alter.Table("MovieFiles").AddColumn("OriginalFilePath").AsString().Nullable();
|
||||||
|
|
||||||
//This is Ignored in mapping, should not be in DB
|
// This is Ignored in mapping, should not be in DB
|
||||||
Delete.Column("Path").FromTable("MovieFiles");
|
Delete.Column("Path").FromTable("MovieFiles");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ protected override void MainDbUpgrade()
|
|||||||
Execute.Sql("UPDATE \"NamingConfig\" SET \"RenameMovies\"=\"RenameEpisodes\"");
|
Execute.Sql("UPDATE \"NamingConfig\" SET \"RenameMovies\"=\"RenameEpisodes\"");
|
||||||
Delete.Column("RenameEpisodes").FromTable("NamingConfig");
|
Delete.Column("RenameEpisodes").FromTable("NamingConfig");
|
||||||
|
|
||||||
//Manual SQL, Fluent Migrator doesn't support multi-column unique contraint on table creation, SQLite doesn't support adding it after creation
|
// Manual SQL, Fluent Migrator doesn't support multi-column unique contraint on table creation, SQLite doesn't support adding it after creation
|
||||||
IfDatabase("sqlite").Execute.Sql("CREATE TABLE \"MovieTranslations\"(" +
|
IfDatabase("sqlite").Execute.Sql("CREATE TABLE \"MovieTranslations\"(" +
|
||||||
"\"Id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
|
"\"Id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
|
||||||
"\"MovieId\" INTEGER NOT NULL, " +
|
"\"MovieId\" INTEGER NOT NULL, " +
|
||||||
@ -70,7 +70,7 @@ protected override void MainDbUpgrade()
|
|||||||
Execute.WithConnection(FixLanguagesMoveFile);
|
Execute.WithConnection(FixLanguagesMoveFile);
|
||||||
Execute.WithConnection(FixLanguagesHistory);
|
Execute.WithConnection(FixLanguagesHistory);
|
||||||
|
|
||||||
//Force refresh all movies in library
|
// Force refresh all movies in library
|
||||||
Update.Table("ScheduledTasks")
|
Update.Table("ScheduledTasks")
|
||||||
.Set(new { LastExecution = "2014-01-01 00:00:00" })
|
.Set(new { LastExecution = "2014-01-01 00:00:00" })
|
||||||
.Where(new { TypeName = "NzbDrone.Core.Movies.Commands.RefreshMovieCommand" });
|
.Where(new { TypeName = "NzbDrone.Core.Movies.Commands.RefreshMovieCommand" });
|
||||||
|
@ -27,7 +27,7 @@ private void FixMovies(IDbConnection conn, IDbTransaction tran)
|
|||||||
// Only process if there are lists or movies existing in the DB
|
// Only process if there are lists or movies existing in the DB
|
||||||
if (movieRows.Any() || listRows.Any())
|
if (movieRows.Any() || listRows.Any())
|
||||||
{
|
{
|
||||||
//If there are no Profiles lets add the defaults
|
// If there are no Profiles lets add the defaults
|
||||||
if (!profiles.Any())
|
if (!profiles.Any())
|
||||||
{
|
{
|
||||||
InsertDefaultQualityProfiles(conn, tran);
|
InsertDefaultQualityProfiles(conn, tran);
|
||||||
@ -36,7 +36,7 @@ private void FixMovies(IDbConnection conn, IDbTransaction tran)
|
|||||||
|
|
||||||
var mostCommonProfileId = 0;
|
var mostCommonProfileId = 0;
|
||||||
|
|
||||||
//If we have some movies, lets determine the most common profile used and use it for the bad entries
|
// If we have some movies, lets determine the most common profile used and use it for the bad entries
|
||||||
if (movieRows.Any())
|
if (movieRows.Any())
|
||||||
{
|
{
|
||||||
mostCommonProfileId = movieRows.Select(x => x.ProfileId)
|
mostCommonProfileId = movieRows.Select(x => x.ProfileId)
|
||||||
@ -53,11 +53,11 @@ private void FixMovies(IDbConnection conn, IDbTransaction tran)
|
|||||||
mostCommonProfileId = profiles.First();
|
mostCommonProfileId = profiles.First();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Correct any Movies that reference profiles that are null
|
// Correct any Movies that reference profiles that are null
|
||||||
var sql = $"UPDATE \"Movies\" SET \"ProfileId\" = {mostCommonProfileId} WHERE \"Id\" IN(SELECT \"Movies\".\"Id\" FROM \"Movies\" LEFT OUTER JOIN \"Profiles\" ON \"Movies\".\"ProfileId\" = \"Profiles\".\"Id\" WHERE \"Profiles\".\"Id\" IS NULL)";
|
var sql = $"UPDATE \"Movies\" SET \"ProfileId\" = {mostCommonProfileId} WHERE \"Id\" IN(SELECT \"Movies\".\"Id\" FROM \"Movies\" LEFT OUTER JOIN \"Profiles\" ON \"Movies\".\"ProfileId\" = \"Profiles\".\"Id\" WHERE \"Profiles\".\"Id\" IS NULL)";
|
||||||
conn.Execute(sql, transaction: tran);
|
conn.Execute(sql, transaction: tran);
|
||||||
|
|
||||||
//Correct any Lists that reference profiles that are null
|
// Correct any Lists that reference profiles that are null
|
||||||
sql = $"UPDATE \"NetImport\" SET \"ProfileId\" = {mostCommonProfileId} WHERE \"Id\" IN(SELECT \"NetImport\".\"Id\" FROM \"NetImport\" LEFT OUTER JOIN \"Profiles\" ON \"NetImport\".\"ProfileId\" = \"Profiles\".\"Id\" WHERE \"Profiles\".\"Id\" IS NULL)";
|
sql = $"UPDATE \"NetImport\" SET \"ProfileId\" = {mostCommonProfileId} WHERE \"Id\" IN(SELECT \"NetImport\".\"Id\" FROM \"NetImport\" LEFT OUTER JOIN \"Profiles\" ON \"NetImport\".\"ProfileId\" = \"Profiles\".\"Id\" WHERE \"Profiles\".\"Id\" IS NULL)";
|
||||||
conn.Execute(sql, transaction: tran);
|
conn.Execute(sql, transaction: tran);
|
||||||
}
|
}
|
||||||
@ -119,7 +119,7 @@ private List<QualityProfile180> GetDefaultQualityProfiles(IDbConnection conn)
|
|||||||
{
|
{
|
||||||
var profiles = new List<QualityProfile180>();
|
var profiles = new List<QualityProfile180>();
|
||||||
|
|
||||||
//Grab custom formats if any exist and add them to the new profiles
|
// Grab custom formats if any exist and add them to the new profiles
|
||||||
var formats = conn.Query<CustomFormat180>($"SELECT \"Id\" FROM \"CustomFormats\"").ToList();
|
var formats = conn.Query<CustomFormat180>($"SELECT \"Id\" FROM \"CustomFormats\"").ToList();
|
||||||
|
|
||||||
profiles.Add(GetDefaultProfile("Any",
|
profiles.Add(GetDefaultProfile("Any",
|
||||||
|
@ -35,7 +35,7 @@ private void FixMovies(IDbConnection conn, IDbTransaction tran)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Process duplicates to pick which to purge
|
// Process duplicates to pick which to purge
|
||||||
foreach (var problemGroup in problemMovies)
|
foreach (var problemGroup in problemMovies)
|
||||||
{
|
{
|
||||||
var moviesWithFiles = problemGroup.Where(m => m.MovieFileId > 0);
|
var moviesWithFiles = problemGroup.Where(m => m.MovieFileId > 0);
|
||||||
|
@ -11,7 +11,7 @@ protected override void MainDbUpgrade()
|
|||||||
Execute.Sql("UPDATE \"MovieFiles\" SET \"MediaInfo\" = Replace(\"MediaInfo\", '\"audioChannels\"', '\"audioChannelsContainer\"');");
|
Execute.Sql("UPDATE \"MovieFiles\" SET \"MediaInfo\" = Replace(\"MediaInfo\", '\"audioChannels\"', '\"audioChannelsContainer\"');");
|
||||||
Execute.Sql("UPDATE \"MovieFiles\" SET \"MediaInfo\" = Replace(\"MediaInfo\", '\"audioChannelPositionsText\"', '\"audioChannelPositionsTextContainer\"');");
|
Execute.Sql("UPDATE \"MovieFiles\" SET \"MediaInfo\" = Replace(\"MediaInfo\", '\"audioChannelPositionsText\"', '\"audioChannelPositionsTextContainer\"');");
|
||||||
|
|
||||||
//Change List Interval from Min to Hour
|
// Change List Interval from Min to Hour
|
||||||
IfDatabase("sqlite").Execute.Sql("UPDATE \"Config\" SET \"Value\" = max((\"Value\" / 60) + 1, 6) WHERE \"Key\" = 'importlistsyncinterval'");
|
IfDatabase("sqlite").Execute.Sql("UPDATE \"Config\" SET \"Value\" = max((\"Value\" / 60) + 1, 6) WHERE \"Key\" = 'importlistsyncinterval'");
|
||||||
IfDatabase("postgres").Execute.Sql("UPDATE \"Config\" SET \"Value\" = greatest((\"Value\"::int / 60) + 1, 6) WHERE \"Key\" = 'importlistsyncinterval'");
|
IfDatabase("postgres").Execute.Sql("UPDATE \"Config\" SET \"Value\" = greatest((\"Value\"::int / 60) + 1, 6) WHERE \"Key\" = 'importlistsyncinterval'");
|
||||||
}
|
}
|
||||||
|
@ -682,7 +682,7 @@ private void MigrateAudioChannelPositions(MediaInfo198 mediaInfo, MediaInfo199 m
|
|||||||
var audioChannelsContainer = mediaInfo.AudioChannelsContainer;
|
var audioChannelsContainer = mediaInfo.AudioChannelsContainer;
|
||||||
var audioChannelsStream = mediaInfo.AudioChannelsStream;
|
var audioChannelsStream = mediaInfo.AudioChannelsStream;
|
||||||
|
|
||||||
//Skip if the positions texts give us nothing
|
// Skip if the positions texts give us nothing
|
||||||
if ((audioChannelPositionsTextContainer.IsNullOrWhiteSpace() || audioChannelPositionsTextContainer == "Object Based") &&
|
if ((audioChannelPositionsTextContainer.IsNullOrWhiteSpace() || audioChannelPositionsTextContainer == "Object Based") &&
|
||||||
(audioChannelPositionsTextStream.IsNullOrWhiteSpace() || audioChannelPositionsTextStream == "Object Based"))
|
(audioChannelPositionsTextStream.IsNullOrWhiteSpace() || audioChannelPositionsTextStream == "Object Based"))
|
||||||
{
|
{
|
||||||
|
@ -8,15 +8,15 @@ public class remove_predb : NzbDroneMigrationBase
|
|||||||
{
|
{
|
||||||
protected override void MainDbUpgrade()
|
protected override void MainDbUpgrade()
|
||||||
{
|
{
|
||||||
//Set PreDb entries to Released
|
// Set PreDb entries to Released
|
||||||
Update.Table("Movies").Set(new { MinimumAvailability = 3 }).Where(new { MinimumAvailability = 4 });
|
Update.Table("Movies").Set(new { MinimumAvailability = 3 }).Where(new { MinimumAvailability = 4 });
|
||||||
Update.Table("ImportLists").Set(new { MinimumAvailability = 3 }).Where(new { MinimumAvailability = 4 });
|
Update.Table("ImportLists").Set(new { MinimumAvailability = 3 }).Where(new { MinimumAvailability = 4 });
|
||||||
|
|
||||||
//Should never be set, but just in case
|
// Should never be set, but just in case
|
||||||
Update.Table("Movies").Set(new { Status = 3 }).Where(new { Status = 4 });
|
Update.Table("Movies").Set(new { Status = 3 }).Where(new { Status = 4 });
|
||||||
Update.Table("ImportListMovies").Set(new { Status = 3 }).Where(new { Status = 4 });
|
Update.Table("ImportListMovies").Set(new { Status = 3 }).Where(new { Status = 4 });
|
||||||
|
|
||||||
//Remove unused column
|
// Remove unused column
|
||||||
Delete.Column("HasPreDBEntry").FromTable("Movies");
|
Delete.Column("HasPreDBEntry").FromTable("Movies");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ public class ensure_identity_on_id_columns : NzbDroneMigrationBase
|
|||||||
{
|
{
|
||||||
protected override void MainDbUpgrade()
|
protected override void MainDbUpgrade()
|
||||||
{
|
{
|
||||||
//Purge Commands before reworking tables
|
// Purge Commands before reworking tables
|
||||||
Delete.FromTable("Commands").AllRows();
|
Delete.FromTable("Commands").AllRows();
|
||||||
|
|
||||||
IfDatabase("sqlite").Alter.Column("Id").OnTable("Movies").AsInt32().PrimaryKey().Identity();
|
IfDatabase("sqlite").Alter.Column("Id").OnTable("Movies").AsInt32().PrimaryKey().Identity();
|
||||||
|
@ -206,7 +206,7 @@ public virtual IList<TableDefinition> ReadDbSchema()
|
|||||||
{
|
{
|
||||||
table.Indexes = ReadIndexes(table.SchemaName, table.Name);
|
table.Indexes = ReadIndexes(table.SchemaName, table.Name);
|
||||||
|
|
||||||
//table.ForeignKeys = ReadForeignKeys(table.SchemaName, table.Name);
|
// table.ForeignKeys = ReadForeignKeys(table.SchemaName, table.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return tables;
|
return tables;
|
||||||
|
@ -93,7 +93,7 @@ private IEnumerable<DownloadDecision> GetDecisions(List<ReleaseInfo> reports, Se
|
|||||||
if (result == null)
|
if (result == null)
|
||||||
{
|
{
|
||||||
result = new MappingResult { MappingResultType = MappingResultType.NotParsable };
|
result = new MappingResult { MappingResultType = MappingResultType.NotParsable };
|
||||||
result.Movie = null; //To ensure we have a remote movie, else null exception on next line!
|
result.Movie = null; // To ensure we have a remote movie, else null exception on next line!
|
||||||
result.RemoteMovie.ParsedMovieInfo = parsedMovieInfo;
|
result.RemoteMovie.ParsedMovieInfo = parsedMovieInfo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -118,7 +118,7 @@ private IEnumerable<DownloadDecision> GetDecisions(List<ReleaseInfo> reports, Se
|
|||||||
{
|
{
|
||||||
if (parsedMovieInfo.Quality.HardcodedSubs.IsNotNullOrWhiteSpace())
|
if (parsedMovieInfo.Quality.HardcodedSubs.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
//remoteMovie.DownloadAllowed = true;
|
// remoteMovie.DownloadAllowed = true;
|
||||||
if (_configService.AllowHardcodedSubs)
|
if (_configService.AllowHardcodedSubs)
|
||||||
{
|
{
|
||||||
decision = GetDecisionForReport(remoteMovie, searchCriteria);
|
decision = GetDecisionForReport(remoteMovie, searchCriteria);
|
||||||
|
@ -44,10 +44,10 @@ public Decision IsSatisfiedBy(RemoteMovie subject, SearchCriteriaBase searchCrit
|
|||||||
{
|
{
|
||||||
var minSize = qualityDefinition.MinSize.Value.Megabytes();
|
var minSize = qualityDefinition.MinSize.Value.Megabytes();
|
||||||
|
|
||||||
//Multiply maxSize by Series.Runtime
|
// Multiply maxSize by Series.Runtime
|
||||||
minSize = minSize * subject.Movie.MovieMetadata.Value.Runtime;
|
minSize = minSize * subject.Movie.MovieMetadata.Value.Runtime;
|
||||||
|
|
||||||
//If the parsed size is smaller than minSize we don't want it
|
// If the parsed size is smaller than minSize we don't want it
|
||||||
if (subject.Release.Size < minSize)
|
if (subject.Release.Size < minSize)
|
||||||
{
|
{
|
||||||
var runtimeMessage = subject.Movie.Title;
|
var runtimeMessage = subject.Movie.Title;
|
||||||
@ -70,10 +70,10 @@ public Decision IsSatisfiedBy(RemoteMovie subject, SearchCriteriaBase searchCrit
|
|||||||
{
|
{
|
||||||
var maxSize = qualityDefinition.MaxSize.Value.Megabytes();
|
var maxSize = qualityDefinition.MaxSize.Value.Megabytes();
|
||||||
|
|
||||||
//Multiply maxSize by Series.Runtime
|
// Multiply maxSize by Series.Runtime
|
||||||
maxSize = maxSize * subject.Movie.MovieMetadata.Value.Runtime;
|
maxSize = maxSize * subject.Movie.MovieMetadata.Value.Runtime;
|
||||||
|
|
||||||
//If the parsed size is greater than maxSize we don't want it
|
// If the parsed size is greater than maxSize we don't want it
|
||||||
if (subject.Release.Size > maxSize)
|
if (subject.Release.Size > maxSize)
|
||||||
{
|
{
|
||||||
_logger.Debug("Item: {0}, Size: {1} is greater than maximum allowed size ({2} for {3}), rejecting", subject, subject.Release.Size, maxSize, subject.Movie.Title);
|
_logger.Debug("Item: {0}, Size: {1} is greater than maximum allowed size ({2} for {3}), rejecting", subject, subject.Release.Size, maxSize, subject.Movie.Title);
|
||||||
|
@ -12,7 +12,7 @@ public class TorrentBlackholeSettingsValidator : AbstractValidator<TorrentBlackh
|
|||||||
{
|
{
|
||||||
public TorrentBlackholeSettingsValidator()
|
public TorrentBlackholeSettingsValidator()
|
||||||
{
|
{
|
||||||
//Todo: Validate that the path actually exists
|
// Todo: Validate that the path actually exists
|
||||||
RuleFor(c => c.TorrentFolder).IsValidPath();
|
RuleFor(c => c.TorrentFolder).IsValidPath();
|
||||||
RuleFor(c => c.MagnetFileExtension).NotEmpty();
|
RuleFor(c => c.MagnetFileExtension).NotEmpty();
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ public DelugeTorrent[] GetTorrents(DelugeSettings settings)
|
|||||||
var filter = new Dictionary<string, object>();
|
var filter = new Dictionary<string, object>();
|
||||||
|
|
||||||
// TODO: get_torrents_status returns the files as well, which starts to cause deluge timeouts when you get enough season packs.
|
// TODO: get_torrents_status returns the files as well, which starts to cause deluge timeouts when you get enough season packs.
|
||||||
//var response = ProcessRequest<Dictionary<String, DelugeTorrent>>(settings, "core.get_torrents_status", filter, new String[0]);
|
// var response = ProcessRequest<Dictionary<String, DelugeTorrent>>(settings, "core.get_torrents_status", filter, new String[0]);
|
||||||
var response = ProcessRequest<DelugeUpdateUIResult>(settings, "web.update_ui", RequiredProperties, filter);
|
var response = ProcessRequest<DelugeUpdateUIResult>(settings, "web.update_ui", RequiredProperties, filter);
|
||||||
|
|
||||||
return GetTorrents(response);
|
return GetTorrents(response);
|
||||||
@ -93,7 +93,7 @@ public DelugeTorrent[] GetTorrentsByLabel(string label, DelugeSettings settings)
|
|||||||
var filter = new Dictionary<string, object>();
|
var filter = new Dictionary<string, object>();
|
||||||
filter.Add("label", label);
|
filter.Add("label", label);
|
||||||
|
|
||||||
//var response = ProcessRequest<Dictionary<String, DelugeTorrent>>(settings, "core.get_torrents_status", filter, new String[0]);
|
// var response = ProcessRequest<Dictionary<String, DelugeTorrent>>(settings, "core.get_torrents_status", filter, new String[0]);
|
||||||
var response = ProcessRequest<DelugeUpdateUIResult>(settings, "web.update_ui", RequiredProperties, filter);
|
var response = ProcessRequest<DelugeUpdateUIResult>(settings, "web.update_ui", RequiredProperties, filter);
|
||||||
|
|
||||||
return GetTorrents(response);
|
return GetTorrents(response);
|
||||||
|
@ -39,13 +39,13 @@ public override string Download(RemoteMovie remoteMovie)
|
|||||||
var title = remoteMovie.Release.Title;
|
var title = remoteMovie.Release.Title;
|
||||||
|
|
||||||
// We don't have full seasons in movies.
|
// We don't have full seasons in movies.
|
||||||
//if (remoteMovie.ParsedEpisodeInfo.FullSeason)
|
// if (remoteMovie.ParsedEpisodeInfo.FullSeason)
|
||||||
//{
|
// {
|
||||||
// throw new NotSupportedException("Full season releases are not supported with Pneumatic.");
|
// throw new NotSupportedException("Full season releases are not supported with Pneumatic.");
|
||||||
//}
|
// }
|
||||||
title = FileNameBuilder.CleanFileName(title);
|
title = FileNameBuilder.CleanFileName(title);
|
||||||
|
|
||||||
//Save to the Pneumatic directory (The user will need to ensure its accessible by XBMC)
|
// Save to the Pneumatic directory (The user will need to ensure its accessible by XBMC)
|
||||||
var nzbFile = Path.Combine(Settings.NzbFolder, title + ".nzb");
|
var nzbFile = Path.Combine(Settings.NzbFolder, title + ".nzb");
|
||||||
|
|
||||||
_logger.Debug("Downloading NZB from: {0} to: {1}", url, nzbFile);
|
_logger.Debug("Downloading NZB from: {0} to: {1}", url, nzbFile);
|
||||||
|
@ -209,7 +209,7 @@ private void CheckForError(HttpResponse response)
|
|||||||
|
|
||||||
if (!Json.TryDeserialize<SabnzbdJsonError>(response.Content, out result))
|
if (!Json.TryDeserialize<SabnzbdJsonError>(response.Content, out result))
|
||||||
{
|
{
|
||||||
//Handle plain text responses from SAB
|
// Handle plain text responses from SAB
|
||||||
result = new SabnzbdJsonError();
|
result = new SabnzbdJsonError();
|
||||||
|
|
||||||
if (response.Content.StartsWith("error", StringComparison.InvariantCultureIgnoreCase))
|
if (response.Content.StartsWith("error", StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
@ -55,7 +55,7 @@ public List<RTorrentTorrent> GetTorrents(RTorrentSettings settings)
|
|||||||
"d.ratio=", // long
|
"d.ratio=", // long
|
||||||
"d.is_open=", // long
|
"d.is_open=", // long
|
||||||
"d.is_active=", // long
|
"d.is_active=", // long
|
||||||
"d.complete=", //long
|
"d.complete=", // long
|
||||||
"d.timestamp.finished="); // long (unix timestamp)
|
"d.timestamp.finished="); // long (unix timestamp)
|
||||||
|
|
||||||
var torrents = document.XPathSelectElement("./methodResponse/params/param/value/array/data")
|
var torrents = document.XPathSelectElement("./methodResponse/params/param/value/array/data")
|
||||||
|
@ -13,7 +13,7 @@ public class PendingRelease : ModelBase
|
|||||||
public ReleaseInfo Release { get; set; }
|
public ReleaseInfo Release { get; set; }
|
||||||
public PendingReleaseReason Reason { get; set; }
|
public PendingReleaseReason Reason { get; set; }
|
||||||
|
|
||||||
//Not persisted
|
// Not persisted
|
||||||
public RemoteMovie RemoteMovie { get; set; }
|
public RemoteMovie RemoteMovie { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ public List<RemoteMovie> GetPendingRemoteMovies(int movieId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Return best quality release for each movie
|
// Return best quality release for each movie
|
||||||
var deduped = queued.GroupBy(q => q.Movie.Id).Select(g =>
|
var deduped = queued.GroupBy(q => q.Movie.Id).Select(g =>
|
||||||
{
|
{
|
||||||
var movies = g.First().Movie;
|
var movies = g.First().Movie;
|
||||||
@ -359,8 +359,8 @@ private void RemoveGrabbed(RemoteMovie remoteMovie)
|
|||||||
var compare = new QualityModelComparer(profile).Compare(remoteMovie.ParsedMovieInfo.Quality,
|
var compare = new QualityModelComparer(profile).Compare(remoteMovie.ParsedMovieInfo.Quality,
|
||||||
existingReport.RemoteMovie.ParsedMovieInfo.Quality);
|
existingReport.RemoteMovie.ParsedMovieInfo.Quality);
|
||||||
|
|
||||||
//Only remove lower/equal quality pending releases
|
// Only remove lower/equal quality pending releases
|
||||||
//It is safer to retry these releases on the next round than remove it and try to re-add it (if its still in the feed)
|
// It is safer to retry these releases on the next round than remove it and try to re-add it (if its still in the feed)
|
||||||
if (compare >= 0)
|
if (compare >= 0)
|
||||||
{
|
{
|
||||||
_logger.Debug("Removing previously pending release, as it was grabbed.");
|
_logger.Debug("Removing previously pending release, as it was grabbed.");
|
||||||
|
@ -114,7 +114,7 @@ public ProcessedDecisions ProcessDecisions(List<DownloadDecision> decisions)
|
|||||||
|
|
||||||
internal List<DownloadDecision> GetQualifiedReports(IEnumerable<DownloadDecision> decisions)
|
internal List<DownloadDecision> GetQualifiedReports(IEnumerable<DownloadDecision> decisions)
|
||||||
{
|
{
|
||||||
//Process both approved and temporarily rejected
|
// Process both approved and temporarily rejected
|
||||||
return decisions.Where(c => (c.Approved || c.TemporarilyRejected) && c.RemoteMovie.Movie != null).ToList();
|
return decisions.Where(c => (c.Approved || c.TemporarilyRejected) && c.RemoteMovie.Movie != null).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ public TrackedDownload TrackDownload(DownloadClientDefinition downloadClient, Do
|
|||||||
.ToList();
|
.ToList();
|
||||||
var grabbedHistoryItem = historyItems.FirstOrDefault(h => h.EventType == MovieHistoryEventType.Grabbed);
|
var grabbedHistoryItem = historyItems.FirstOrDefault(h => h.EventType == MovieHistoryEventType.Grabbed);
|
||||||
|
|
||||||
//TODO: Create release info from history and use that here, so we don't loose indexer flags!
|
// TODO: Create release info from history and use that here, so we don't loose indexer flags!
|
||||||
var parsedMovieInfo = _parsingService.ParseMovieInfo(trackedDownload.DownloadItem.Title, new List<object> { grabbedHistoryItem });
|
var parsedMovieInfo = _parsingService.ParseMovieInfo(trackedDownload.DownloadItem.Title, new List<object> { grabbedHistoryItem });
|
||||||
|
|
||||||
if (parsedMovieInfo != null)
|
if (parsedMovieInfo != null)
|
||||||
|
@ -19,7 +19,7 @@ public TrackedDownloadStatusMessage(string title, string message)
|
|||||||
Messages = new List<string> { message };
|
Messages = new List<string> { message };
|
||||||
}
|
}
|
||||||
|
|
||||||
//Constructor for use when deserializing JSON
|
// Constructor for use when deserializing JSON
|
||||||
private TrackedDownloadStatusMessage()
|
private TrackedDownloadStatusMessage()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -30,8 +30,8 @@ public RoksboxMetadata(IMapCoversToLocal mediaCoverService,
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Re-enable when/if we store and use mpaa certification
|
// Re-enable when/if we store and use mpaa certification
|
||||||
//private static List<string> ValidCertification = new List<string> { "G", "NC-17", "PG", "PG-13", "R", "UR", "UNRATED", "NR", "TV-Y", "TV-Y7", "TV-Y7-FV", "TV-G", "TV-PG", "TV-14", "TV-MA" };
|
// private static List<string> ValidCertification = new List<string> { "G", "NC-17", "PG", "PG-13", "R", "UR", "UNRATED", "NR", "TV-Y", "TV-Y7", "TV-Y7-FV", "TV-G", "TV-PG", "TV-14", "TV-MA" };
|
||||||
public override string Name => "Roksbox";
|
public override string Name => "Roksbox";
|
||||||
|
|
||||||
public override string GetFilenameAfterMove(Movie movie, MovieFile movieFile, MetadataFile metadataFile)
|
public override string GetFilenameAfterMove(Movie movie, MovieFile movieFile, MetadataFile metadataFile)
|
||||||
|
@ -135,7 +135,7 @@ public override List<ImageFileResult> MovieImages(Movie movie)
|
|||||||
return new List<ImageFileResult>();
|
return new List<ImageFileResult>();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Because we only support one image, attempt to get the Poster type, then if that fails grab the first
|
// Because we only support one image, attempt to get the Poster type, then if that fails grab the first
|
||||||
var image = movie.MovieMetadata.Value.Images.SingleOrDefault(c => c.CoverType == MediaCoverTypes.Poster) ?? movie.MovieMetadata.Value.Images.FirstOrDefault();
|
var image = movie.MovieMetadata.Value.Images.SingleOrDefault(c => c.CoverType == MediaCoverTypes.Poster) ?? movie.MovieMetadata.Value.Images.FirstOrDefault();
|
||||||
if (image == null)
|
if (image == null)
|
||||||
{
|
{
|
||||||
|
@ -340,7 +340,7 @@ private MetadataFile GetMetadataFile(Movie movie, List<MetadataFile> existingMet
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Remove duplicate metadata files from DB and disk
|
// Remove duplicate metadata files from DB and disk
|
||||||
foreach (var file in matchingMetadataFiles.Skip(1))
|
foreach (var file in matchingMetadataFiles.Skip(1))
|
||||||
{
|
{
|
||||||
var path = Path.Combine(movie.Path, file.RelativePath);
|
var path = Path.Combine(movie.Path, file.RelativePath);
|
||||||
|
@ -182,7 +182,7 @@ public void Handle(MovieFileImportedEvent message)
|
|||||||
|
|
||||||
if (downloadId.IsNullOrWhiteSpace())
|
if (downloadId.IsNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
downloadId = FindDownloadId(message); //For now fuck off.
|
downloadId = FindDownloadId(message); // For now fuck off.
|
||||||
}
|
}
|
||||||
|
|
||||||
var movie = message.MovieInfo.Movie;
|
var movie = message.MovieInfo.Movie;
|
||||||
|
@ -49,7 +49,7 @@ public HttpProxySettings GetProxySettings()
|
|||||||
|
|
||||||
public bool ShouldProxyBeBypassed(HttpProxySettings proxySettings, HttpUri url)
|
public bool ShouldProxyBeBypassed(HttpProxySettings proxySettings, HttpUri url)
|
||||||
{
|
{
|
||||||
//We are utilizing the WebProxy implementation here to save us having to re-implement it. This way we use Microsofts implementation
|
// We are utilizing the WebProxy implementation here to save us having to re-implement it. This way we use Microsofts implementation
|
||||||
var proxy = new WebProxy(proxySettings.Host + ":" + proxySettings.Port, proxySettings.BypassLocalAddress, proxySettings.BypassListAsArray);
|
var proxy = new WebProxy(proxySettings.Host + ":" + proxySettings.Port, proxySettings.BypassLocalAddress, proxySettings.BypassListAsArray);
|
||||||
|
|
||||||
return proxy.IsBypassed((Uri)url);
|
return proxy.IsBypassed((Uri)url);
|
||||||
|
@ -41,7 +41,7 @@ public class Info
|
|||||||
public string[] actors { get; set; }
|
public string[] actors { get; set; }
|
||||||
public string[] writers { get; set; }
|
public string[] writers { get; set; }
|
||||||
|
|
||||||
//public int? runtime { get; set; }
|
// public int? runtime { get; set; }
|
||||||
public string type { get; set; }
|
public string type { get; set; }
|
||||||
public string released { get; set; }
|
public string released { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ public ImportListFetchResult Fetch()
|
|||||||
if (blockedLists.TryGetValue(importList.Definition.Id, out ImportListStatus blockedListStatus))
|
if (blockedLists.TryGetValue(importList.Definition.Id, out ImportListStatus blockedListStatus))
|
||||||
{
|
{
|
||||||
_logger.Debug("Temporarily ignoring list {0} till {1} due to recent failures.", importList.Definition.Name, blockedListStatus.DisabledTill.Value.ToLocalTime());
|
_logger.Debug("Temporarily ignoring list {0} till {1} due to recent failures.", importList.Definition.Name, blockedListStatus.DisabledTill.Value.ToLocalTime());
|
||||||
result.AnyFailure |= true; //Ensure we don't clean if a list is down
|
result.AnyFailure |= true; // Ensure we don't clean if a list is down
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ public virtual IList<ImportListMovie> ParseResponse(ImportListResponse importRes
|
|||||||
}
|
}
|
||||||
catch (Exception itemEx)
|
catch (Exception itemEx)
|
||||||
{
|
{
|
||||||
//itemEx.Data.Add("Item", item.Title());
|
// itemEx.Data.Add("Item", item.Title());
|
||||||
_logger.Error(itemEx, "An error occurred while processing list feed item from {0}", importResponse.Request.Url);
|
_logger.Error(itemEx, "An error occurred while processing list feed item from {0}", importResponse.Request.Url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -127,7 +127,7 @@ protected ImportListMovie ProcessItem(XElement item)
|
|||||||
|
|
||||||
releaseInfo = ProcessItem(item, releaseInfo);
|
releaseInfo = ProcessItem(item, releaseInfo);
|
||||||
|
|
||||||
//_logger.Trace("Parsed: {0}", releaseInfo.Title);
|
// _logger.Trace("Parsed: {0}", releaseInfo.Title);
|
||||||
return PostProcess(item, releaseInfo);
|
return PostProcess(item, releaseInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ protected virtual ImportListMovie ProcessItem(XElement item, ImportListMovie rel
|
|||||||
}
|
}
|
||||||
|
|
||||||
releaseInfo.Title = title;
|
releaseInfo.Title = title;
|
||||||
var result = Parser.Parser.ParseMovieTitle(title); //Depreciated anyways
|
var result = Parser.Parser.ParseMovieTitle(title); // Depreciated anyways
|
||||||
|
|
||||||
if (result != null)
|
if (result != null)
|
||||||
{
|
{
|
||||||
|
@ -16,10 +16,10 @@ public virtual ImportListPageableRequestChain GetMovies()
|
|||||||
return pageableRequests;
|
return pageableRequests;
|
||||||
}
|
}
|
||||||
|
|
||||||
//public ImportListPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
|
// public ImportListPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
|
||||||
//{
|
// {
|
||||||
// return new ImportListPageableRequestChain();
|
// return new ImportListPageableRequestChain();
|
||||||
//}
|
// }
|
||||||
private IEnumerable<ImportListRequest> GetMovies(string searchParameters)
|
private IEnumerable<ImportListRequest> GetMovies(string searchParameters)
|
||||||
{
|
{
|
||||||
var request = new ImportListRequest($"{Settings.Link.Trim()}", HttpAccept.Rss);
|
var request = new ImportListRequest($"{Settings.Link.Trim()}", HttpAccept.Rss);
|
||||||
|
@ -48,7 +48,7 @@ protected virtual bool PreProcess(ImportListResponse importListResponse)
|
|||||||
}
|
}
|
||||||
catch (JsonSerializationException)
|
catch (JsonSerializationException)
|
||||||
{
|
{
|
||||||
//No error!
|
// No error!
|
||||||
}
|
}
|
||||||
|
|
||||||
if (importListResponse.HttpResponse.StatusCode != System.Net.HttpStatusCode.OK)
|
if (importListResponse.HttpResponse.StatusCode != System.Net.HttpStatusCode.OK)
|
||||||
|
@ -31,7 +31,7 @@ public override IList<ImportListMovie> ParseResponse(ImportListResponse importLi
|
|||||||
|
|
||||||
if (_settings.ListId.StartsWith("ls", StringComparison.OrdinalIgnoreCase))
|
if (_settings.ListId.StartsWith("ls", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
//Parse TSV response from IMDB export
|
// Parse TSV response from IMDB export
|
||||||
var rows = importResponse.Content.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
var rows = importResponse.Content.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
|
||||||
movies = rows.Skip(1).SelectList(m => m.Split(',')).Where(m => m.Length > 1).SelectList(i => new ImportListMovie { ImdbId = i[1] });
|
movies = rows.Skip(1).SelectList(m => m.Split(',')).Where(m => m.Length > 1).SelectList(i => new ImportListMovie { ImdbId = i[1] });
|
||||||
|
@ -9,7 +9,7 @@ public class IMDbListRequestGenerator : RadarrList2RequestGeneratorBase
|
|||||||
|
|
||||||
protected override HttpRequest GetHttpRequest()
|
protected override HttpRequest GetHttpRequest()
|
||||||
{
|
{
|
||||||
//Use IMDb list Export for user lists to bypass RadarrAPI caching
|
// Use IMDb list Export for user lists to bypass RadarrAPI caching
|
||||||
if (Settings.ListId.StartsWith("ls", StringComparison.OrdinalIgnoreCase))
|
if (Settings.ListId.StartsWith("ls", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return new HttpRequest($"https://www.imdb.com/list/{Settings.ListId}/export", new HttpAccept("*/*"));
|
return new HttpRequest($"https://www.imdb.com/list/{Settings.ListId}/export", new HttpAccept("*/*"));
|
||||||
|
@ -26,7 +26,7 @@ public override IList<ImportListMovie> ParseResponse(ImportListResponse importRe
|
|||||||
|
|
||||||
foreach (var movie in jsonResponse.Results)
|
foreach (var movie in jsonResponse.Results)
|
||||||
{
|
{
|
||||||
//Media Type is not Movie
|
// Media Type is not Movie
|
||||||
if (movie.MediaType != "movie")
|
if (movie.MediaType != "movie")
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -31,7 +31,7 @@ public static string GetCleanSceneTitle(string title)
|
|||||||
cleanTitle = SpecialCharacter.Replace(cleanTitle, "");
|
cleanTitle = SpecialCharacter.Replace(cleanTitle, "");
|
||||||
cleanTitle = NonWord.Replace(cleanTitle, "+");
|
cleanTitle = NonWord.Replace(cleanTitle, "+");
|
||||||
|
|
||||||
//remove any repeating +s
|
// remove any repeating +s
|
||||||
cleanTitle = Regex.Replace(cleanTitle, @"\+{2,}", "+");
|
cleanTitle = Regex.Replace(cleanTitle, @"\+{2,}", "+");
|
||||||
cleanTitle = cleanTitle.RemoveAccent();
|
cleanTitle = cleanTitle.RemoveAccent();
|
||||||
return cleanTitle.Trim('+', ' ');
|
return cleanTitle.Trim('+', ' ');
|
||||||
|
@ -85,7 +85,7 @@ private TSpec Get<TSpec>(Movie movie, bool userInvokedSearch, bool interactiveSe
|
|||||||
movie.MovieMetadata.Value.OriginalTitle
|
movie.MovieMetadata.Value.OriginalTitle
|
||||||
};
|
};
|
||||||
|
|
||||||
//Add Translation of wanted languages to search query
|
// Add Translation of wanted languages to search query
|
||||||
foreach (var translation in translations.Where(a => wantedLanguages.Contains(a.Language)))
|
foreach (var translation in translations.Where(a => wantedLanguages.Contains(a.Language)))
|
||||||
{
|
{
|
||||||
queryTranlations.Add(translation.Title);
|
queryTranlations.Add(translation.Title);
|
||||||
|
@ -62,7 +62,7 @@ protected IndexerPageableRequestChain GetRequestChain(SearchCriteriaBase searchC
|
|||||||
{
|
{
|
||||||
var generator = GetRequestGenerator();
|
var generator = GetRequestGenerator();
|
||||||
|
|
||||||
//A func ensures cookies are always updated to the latest. This way, the first page could update the cookies and then can be reused by the second page.
|
// A func ensures cookies are always updated to the latest. This way, the first page could update the cookies and then can be reused by the second page.
|
||||||
generator.GetCookies = () =>
|
generator.GetCookies = () =>
|
||||||
{
|
{
|
||||||
var cookies = _indexerStatusService.GetIndexerCookies(Definition.Id);
|
var cookies = _indexerStatusService.GetIndexerCookies(Definition.Id);
|
||||||
|
@ -34,7 +34,7 @@ protected override bool PreProcess(IndexerResponse indexerResponse)
|
|||||||
|
|
||||||
protected override string GetInfoUrl(XElement item)
|
protected override string GetInfoUrl(XElement item)
|
||||||
{
|
{
|
||||||
//Todo: Me thinks I need to parse details to get this...
|
// Todo: Me thinks I need to parse details to get this...
|
||||||
var match = Regex.Match(item.Description(),
|
var match = Regex.Match(item.Description(),
|
||||||
@"(?:\<b\>View NZB\:\<\/b\>\s\<a\shref\=\"")(?<URL>.+?)(?:\"")",
|
@"(?:\<b\>View NZB\:\<\/b\>\s\<a\shref\=\"")(?<URL>.+?)(?:\"")",
|
||||||
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||||
|
@ -67,12 +67,12 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
|||||||
|
|
||||||
if (torrent.GoldenPopcorn)
|
if (torrent.GoldenPopcorn)
|
||||||
{
|
{
|
||||||
flags |= IndexerFlags.PTP_Golden; //title = $"{title} 🍿";
|
flags |= IndexerFlags.PTP_Golden; // title = $"{title} 🍿";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (torrent.Checked)
|
if (torrent.Checked)
|
||||||
{
|
{
|
||||||
flags |= IndexerFlags.PTP_Approved; //title = $"{title} ✔";
|
flags |= IndexerFlags.PTP_Approved; // title = $"{title} ✔";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (torrent.FreeleechType == "Freeleech")
|
if (torrent.FreeleechType == "Freeleech")
|
||||||
|
@ -20,7 +20,7 @@ public class RarbgTorrent
|
|||||||
public long size { get; set; }
|
public long size { get; set; }
|
||||||
public DateTime pubdate { get; set; }
|
public DateTime pubdate { get; set; }
|
||||||
|
|
||||||
//This is named episode_info for movies as well as shows
|
// This is named episode_info for movies as well as shows
|
||||||
public RarbgTorrentInfo episode_info { get; set; }
|
public RarbgTorrentInfo episode_info { get; set; }
|
||||||
public int? ranked { get; set; }
|
public int? ranked { get; set; }
|
||||||
public string info_page { get; set; }
|
public string info_page { get; set; }
|
||||||
|
@ -87,7 +87,7 @@ protected override void Write(LogEventInfo logEvent)
|
|||||||
|
|
||||||
var connectionString = _connectionStringFactory.LogDbConnectionString;
|
var connectionString = _connectionStringFactory.LogDbConnectionString;
|
||||||
|
|
||||||
//TODO: Probably need more robust way to differentiate what's being used
|
// TODO: Probably need more robust way to differentiate what's being used
|
||||||
if (connectionString.Contains(".db"))
|
if (connectionString.Contains(".db"))
|
||||||
{
|
{
|
||||||
WriteSqliteLog(log, connectionString);
|
WriteSqliteLog(log, connectionString);
|
||||||
|
@ -50,19 +50,19 @@ public void Reconfigure()
|
|||||||
|
|
||||||
var rules = LogManager.Configuration.LoggingRules;
|
var rules = LogManager.Configuration.LoggingRules;
|
||||||
|
|
||||||
//Console
|
// Console
|
||||||
SetMinimumLogLevel(rules, "consoleLogger", minimumConsoleLogLevel);
|
SetMinimumLogLevel(rules, "consoleLogger", minimumConsoleLogLevel);
|
||||||
|
|
||||||
//Log Files
|
// Log Files
|
||||||
SetMinimumLogLevel(rules, "appFileInfo", minimumLogLevel <= LogLevel.Info ? LogLevel.Info : LogLevel.Off);
|
SetMinimumLogLevel(rules, "appFileInfo", minimumLogLevel <= LogLevel.Info ? LogLevel.Info : LogLevel.Off);
|
||||||
SetMinimumLogLevel(rules, "appFileDebug", minimumLogLevel <= LogLevel.Debug ? LogLevel.Debug : LogLevel.Off);
|
SetMinimumLogLevel(rules, "appFileDebug", minimumLogLevel <= LogLevel.Debug ? LogLevel.Debug : LogLevel.Off);
|
||||||
SetMinimumLogLevel(rules, "appFileTrace", minimumLogLevel <= LogLevel.Trace ? LogLevel.Trace : LogLevel.Off);
|
SetMinimumLogLevel(rules, "appFileTrace", minimumLogLevel <= LogLevel.Trace ? LogLevel.Trace : LogLevel.Off);
|
||||||
SetLogRotation();
|
SetLogRotation();
|
||||||
|
|
||||||
//Log Sql
|
// Log Sql
|
||||||
SqlBuilderExtensions.LogSql = _configFileProvider.LogSql;
|
SqlBuilderExtensions.LogSql = _configFileProvider.LogSql;
|
||||||
|
|
||||||
//Sentry
|
// Sentry
|
||||||
ReconfigureSentry();
|
ReconfigureSentry();
|
||||||
|
|
||||||
LogManager.ReconfigExistingLoggers();
|
LogManager.ReconfigExistingLoggers();
|
||||||
|
@ -212,7 +212,7 @@ private int GetRefreshMonitoredInterval()
|
|||||||
|
|
||||||
private int GetImportListSyncInterval()
|
private int GetImportListSyncInterval()
|
||||||
{
|
{
|
||||||
//Enforce 6 hour min on list sync
|
// Enforce 6 hour min on list sync
|
||||||
var interval = Math.Max(_configService.ImportListSyncInterval, 6);
|
var interval = Math.Max(_configService.ImportListSyncInterval, 6);
|
||||||
|
|
||||||
return interval * 60;
|
return interval * 60;
|
||||||
|
@ -33,7 +33,7 @@ public void SetFilePermissions(string path)
|
|||||||
{
|
{
|
||||||
if (OsInfo.IsWindows)
|
if (OsInfo.IsWindows)
|
||||||
{
|
{
|
||||||
//Wrapped in Try/Catch to prevent this from causing issues with remote NAS boxes
|
// Wrapped in Try/Catch to prevent this from causing issues with remote NAS boxes
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_diskProvider.InheritFolderPermissions(path);
|
_diskProvider.InheritFolderPermissions(path);
|
||||||
|
@ -12,10 +12,10 @@ static MediaFileExtensions()
|
|||||||
{
|
{
|
||||||
_fileExtensions = new Dictionary<string, Quality>(StringComparer.OrdinalIgnoreCase)
|
_fileExtensions = new Dictionary<string, Quality>(StringComparer.OrdinalIgnoreCase)
|
||||||
{
|
{
|
||||||
//Unknown
|
// Unknown
|
||||||
{ ".webm", Quality.Unknown },
|
{ ".webm", Quality.Unknown },
|
||||||
|
|
||||||
//SDTV
|
// SDTV
|
||||||
{ ".m4v", Quality.SDTV },
|
{ ".m4v", Quality.SDTV },
|
||||||
{ ".3gp", Quality.SDTV },
|
{ ".3gp", Quality.SDTV },
|
||||||
{ ".nsv", Quality.SDTV },
|
{ ".nsv", Quality.SDTV },
|
||||||
@ -55,18 +55,18 @@ static MediaFileExtensions()
|
|||||||
{ ".flv", Quality.SDTV },
|
{ ".flv", Quality.SDTV },
|
||||||
{ ".wpl", Quality.SDTV },
|
{ ".wpl", Quality.SDTV },
|
||||||
|
|
||||||
//DVD
|
// DVD
|
||||||
{ ".img", Quality.DVD },
|
{ ".img", Quality.DVD },
|
||||||
{ ".iso", Quality.DVD },
|
{ ".iso", Quality.DVD },
|
||||||
{ ".vob", Quality.DVD },
|
{ ".vob", Quality.DVD },
|
||||||
|
|
||||||
//HD
|
// HD
|
||||||
{ ".mkv", Quality.WEBDL720p },
|
{ ".mkv", Quality.WEBDL720p },
|
||||||
{ ".mk3d", Quality.WEBDL720p },
|
{ ".mk3d", Quality.WEBDL720p },
|
||||||
{ ".ts", Quality.SDTV },
|
{ ".ts", Quality.SDTV },
|
||||||
{ ".wtv", Quality.SDTV },
|
{ ".wtv", Quality.SDTV },
|
||||||
|
|
||||||
//Bluray
|
// Bluray
|
||||||
{ ".m2ts", Quality.Bluray720p }
|
{ ".m2ts", Quality.Bluray720p }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ public void Update(List<MovieFile> movieFiles)
|
|||||||
|
|
||||||
public void Delete(MovieFile movieFile, DeleteMediaFileReason reason)
|
public void Delete(MovieFile movieFile, DeleteMediaFileReason reason)
|
||||||
{
|
{
|
||||||
//Little hack so we have the movie attached for the event consumers
|
// Little hack so we have the movie attached for the event consumers
|
||||||
if (movieFile.Movie == null)
|
if (movieFile.Movie == null)
|
||||||
{
|
{
|
||||||
movieFile.Movie = _movieRepository.Get(movieFile.MovieId);
|
movieFile.Movie = _movieRepository.Get(movieFile.MovieId);
|
||||||
|
@ -77,25 +77,25 @@ public DetectSampleResult IsSample(MovieMetadata movie, string path)
|
|||||||
|
|
||||||
private int GetMinimumAllowedRuntime(MovieMetadata movie)
|
private int GetMinimumAllowedRuntime(MovieMetadata movie)
|
||||||
{
|
{
|
||||||
//Anime short - 15 seconds
|
// Anime short - 15 seconds
|
||||||
if (movie.Runtime <= 3)
|
if (movie.Runtime <= 3)
|
||||||
{
|
{
|
||||||
return 15;
|
return 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Webisodes - 90 seconds
|
// Webisodes - 90 seconds
|
||||||
if (movie.Runtime <= 10)
|
if (movie.Runtime <= 10)
|
||||||
{
|
{
|
||||||
return 90;
|
return 90;
|
||||||
}
|
}
|
||||||
|
|
||||||
//30 minute episodes - 5 minutes
|
// 30 minute episodes - 5 minutes
|
||||||
if (movie.Runtime <= 30)
|
if (movie.Runtime <= 30)
|
||||||
{
|
{
|
||||||
return 300;
|
return 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
//60 minute episodes - 10 minutes
|
// 60 minute episodes - 10 minutes
|
||||||
return 600;
|
return 600;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public List<ImportResult> Import(List<ImportDecision> decisions, bool newDownloa
|
|||||||
{
|
{
|
||||||
_logger.Debug("Decisions: {0}", decisions.Count);
|
_logger.Debug("Decisions: {0}", decisions.Count);
|
||||||
|
|
||||||
//I added a null op for the rare case that the quality is null. TODO: find out why that would even happen in the first place.
|
// I added a null op for the rare case that the quality is null. TODO: find out why that would even happen in the first place.
|
||||||
var qualifiedImports = decisions.Where(c => c.Approved)
|
var qualifiedImports = decisions.Where(c => c.Approved)
|
||||||
.GroupBy(c => c.LocalMovie.Movie.Id, (i, s) => s
|
.GroupBy(c => c.LocalMovie.Movie.Id, (i, s) => s
|
||||||
.OrderByDescending(c => c.LocalMovie.Quality ?? new QualityModel { Quality = Quality.Unknown }, new QualityModelComparer(s.First().LocalMovie.Movie.Profile))
|
.OrderByDescending(c => c.LocalMovie.Quality ?? new QualityModel { Quality = Quality.Unknown }, new QualityModelComparer(s.First().LocalMovie.Movie.Profile))
|
||||||
@ -69,7 +69,7 @@ public List<ImportResult> Import(List<ImportDecision> decisions, bool newDownloa
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//check if already imported
|
// check if already imported
|
||||||
if (importResults.Select(r => r.ImportDecision.LocalMovie.Movie)
|
if (importResults.Select(r => r.ImportDecision.LocalMovie.Movie)
|
||||||
.Select(m => m.Id).Contains(localMovie.Movie.Id))
|
.Select(m => m.Id).Contains(localMovie.Movie.Id))
|
||||||
{
|
{
|
||||||
@ -120,7 +120,7 @@ public List<ImportResult> Import(List<ImportDecision> decisions, bool newDownloa
|
|||||||
{
|
{
|
||||||
movieFile.SceneName = localMovie.SceneName;
|
movieFile.SceneName = localMovie.SceneName;
|
||||||
movieFile.OriginalFilePath = GetOriginalFilePath(downloadClientItem, localMovie);
|
movieFile.OriginalFilePath = GetOriginalFilePath(downloadClientItem, localMovie);
|
||||||
var moveResult = _movieFileUpgrader.UpgradeMovieFile(movieFile, localMovie, copyOnly); //TODO: Check if this works
|
var moveResult = _movieFileUpgrader.UpgradeMovieFile(movieFile, localMovie, copyOnly); // TODO: Check if this works
|
||||||
oldFiles = moveResult.OldFiles;
|
oldFiles = moveResult.OldFiles;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -165,7 +165,7 @@ public List<ImportResult> Import(List<ImportDecision> decisions, bool newDownloa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Adding all the rejected decisions
|
// Adding all the rejected decisions
|
||||||
importResults.AddRange(decisions.Where(c => !c.Approved)
|
importResults.AddRange(decisions.Where(c => !c.Approved)
|
||||||
.Select(d => new ImportResult(d, d.Rejections.Select(r => r.Reason).ToArray())));
|
.Select(d => new ImportResult(d, d.Rejections.Select(r => r.Reason).ToArray())));
|
||||||
|
|
||||||
|
@ -18,15 +18,15 @@ public ImportDecision(LocalMovie localMovie, params Rejection[] rejections)
|
|||||||
LocalMovie = localMovie;
|
LocalMovie = localMovie;
|
||||||
Rejections = rejections.ToList();
|
Rejections = rejections.ToList();
|
||||||
|
|
||||||
//LocalMovie = new LocalMovie
|
// LocalMovie = new LocalMovie
|
||||||
//{
|
// {
|
||||||
// Quality = localMovie.Quality,
|
// Quality = localMovie.Quality,
|
||||||
// ExistingFile = localMovie.ExistingFile,
|
// ExistingFile = localMovie.ExistingFile,
|
||||||
// MediaInfo = localMovie.MediaInfo,
|
// MediaInfo = localMovie.MediaInfo,
|
||||||
// ParsedMovieInfo = localMovie.ParsedMovieInfo,
|
// ParsedMovieInfo = localMovie.ParsedMovieInfo,
|
||||||
// Path = localMovie.Path,
|
// Path = localMovie.Path,
|
||||||
// Size = localMovie.Size
|
// Size = localMovie.Size
|
||||||
//};
|
// };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -349,7 +349,7 @@ public void Execute(ManualImportCommand message)
|
|||||||
localMovie.Languages = file.Languages;
|
localMovie.Languages = file.Languages;
|
||||||
localMovie.ReleaseGroup = file.ReleaseGroup;
|
localMovie.ReleaseGroup = file.ReleaseGroup;
|
||||||
|
|
||||||
//TODO: Cleanup non-tracked downloads
|
// TODO: Cleanup non-tracked downloads
|
||||||
var importDecision = new ImportDecision(localMovie);
|
var importDecision = new ImportDecision(localMovie);
|
||||||
|
|
||||||
if (trackedDownload == null)
|
if (trackedDownload == null)
|
||||||
|
@ -29,7 +29,7 @@ public Decision IsSatisfiedBy(LocalMovie localMovie, DownloadClientItem download
|
|||||||
return Decision.Accept();
|
return Decision.Accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: Actually implement this!!!!
|
// TODO: Actually implement this!!!!
|
||||||
/*var folderInfo = Parser.Parser.ParseMovieTitle(dirInfo.Name, false);
|
/*var folderInfo = Parser.Parser.ParseMovieTitle(dirInfo.Name, false);
|
||||||
|
|
||||||
if (folderInfo == null)
|
if (folderInfo == null)
|
||||||
|
@ -185,7 +185,7 @@ public void Cleanup()
|
|||||||
}
|
}
|
||||||
catch (UnauthorizedAccessException ex)
|
catch (UnauthorizedAccessException ex)
|
||||||
{
|
{
|
||||||
//Handle and log permissions errors, move to next file
|
// Handle and log permissions errors, move to next file
|
||||||
_logger.Error(ex.Message);
|
_logger.Error(ex.Message);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ public List<RenameMovieFilePreview> GetRenamePreviews(int movieId)
|
|||||||
var movie = _movieService.GetMovie(movieId);
|
var movie = _movieService.GetMovie(movieId);
|
||||||
var file = _mediaFileService.GetFilesByMovie(movieId);
|
var file = _mediaFileService.GetFilesByMovie(movieId);
|
||||||
|
|
||||||
return GetPreviews(movie, file).OrderByDescending(m => m.MovieId).ToList(); //TODO: Would really like to not have these be lists
|
return GetPreviews(movie, file).OrderByDescending(m => m.MovieId).ToList(); // TODO: Would really like to not have these be lists
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<RenameMovieFilePreview> GetPreviews(Movie movie, List<MovieFile> files)
|
private IEnumerable<RenameMovieFilePreview> GetPreviews(Movie movie, List<MovieFile> files)
|
||||||
|
@ -84,7 +84,7 @@ public void PublishEvent<TEvent>(TEvent @event)
|
|||||||
subscribers = target as EventSubscribers<TEvent>;
|
subscribers = target as EventSubscribers<TEvent>;
|
||||||
}
|
}
|
||||||
|
|
||||||
//call synchronous handlers first.
|
// call synchronous handlers first.
|
||||||
var handlers = subscribers._syncHandlers;
|
var handlers = subscribers._syncHandlers;
|
||||||
foreach (var handler in handlers)
|
foreach (var handler in handlers)
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,7 @@ public class MovieResource
|
|||||||
public string OriginalTitle { get; set; }
|
public string OriginalTitle { get; set; }
|
||||||
public string TitleSlug { get; set; }
|
public string TitleSlug { get; set; }
|
||||||
|
|
||||||
//Depricated but left in place until cache fills new object (MovieRatings)
|
// Depricated but left in place until cache fills new object (MovieRatings)
|
||||||
public List<RatingItem> Ratings { get; set; }
|
public List<RatingItem> Ratings { get; set; }
|
||||||
public RatingResource MovieRatings { get; set; }
|
public RatingResource MovieRatings { get; set; }
|
||||||
public int? Runtime { get; set; }
|
public int? Runtime { get; set; }
|
||||||
|
@ -2,15 +2,15 @@ namespace NzbDrone.Core.MetadataSource.SkyHook.Resource
|
|||||||
{
|
{
|
||||||
public enum TMDbCountryCode
|
public enum TMDbCountryCode
|
||||||
{
|
{
|
||||||
AU, //Australia
|
AU, // Australia
|
||||||
BR, //Brazil
|
BR, // Brazil
|
||||||
CA, //Canada
|
CA, // Canada
|
||||||
FR, //France
|
FR, // France
|
||||||
DE, //Germany
|
DE, // Germany
|
||||||
GB, //Great Britain
|
GB, // Great Britain
|
||||||
IT, //Italy
|
IT, // Italy
|
||||||
ES, //Spain
|
ES, // Spain
|
||||||
US, //United States
|
US, // United States
|
||||||
NZ //New Zealand
|
NZ // New Zealand
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,7 @@ public MovieMetadata MapMovie(MovieResource resource)
|
|||||||
|
|
||||||
movie.Year = resource.Year;
|
movie.Year = resource.Year;
|
||||||
|
|
||||||
//If the premier differs from the TMDB year, use it as a secondary year.
|
// If the premier differs from the TMDB year, use it as a secondary year.
|
||||||
if (resource.Premier.HasValue && resource.Premier?.Year != movie.Year)
|
if (resource.Premier.HasValue && resource.Premier?.Year != movie.Year)
|
||||||
{
|
{
|
||||||
movie.SecondaryYear = resource.Premier?.Year;
|
movie.SecondaryYear = resource.Premier?.Year;
|
||||||
@ -244,10 +244,10 @@ public MovieMetadata MapMovie(MovieResource resource)
|
|||||||
movie.Genres = resource.Genres;
|
movie.Genres = resource.Genres;
|
||||||
movie.Images = resource.Images.Select(MapImage).ToList();
|
movie.Images = resource.Images.Select(MapImage).ToList();
|
||||||
|
|
||||||
//movie.Genres = resource.Genres;
|
// movie.Genres = resource.Genres;
|
||||||
movie.Recommendations = resource.Recommendations?.Select(r => r.TmdbId).ToList() ?? new List<int>();
|
movie.Recommendations = resource.Recommendations?.Select(r => r.TmdbId).ToList() ?? new List<int>();
|
||||||
|
|
||||||
//Workaround due to metadata change until cache cleans up
|
// Workaround due to metadata change until cache cleans up
|
||||||
if (movie.Ratings.Tmdb == null)
|
if (movie.Ratings.Tmdb == null)
|
||||||
{
|
{
|
||||||
var tmdbRating = resource.Ratings.FirstOrDefault();
|
var tmdbRating = resource.Ratings.FirstOrDefault();
|
||||||
@ -387,8 +387,8 @@ public List<Movie> SearchForNewMovie(string title)
|
|||||||
|
|
||||||
if (parserResult != null && parserResult.PrimaryMovieTitle != title)
|
if (parserResult != null && parserResult.PrimaryMovieTitle != title)
|
||||||
{
|
{
|
||||||
//Parser found something interesting!
|
// Parser found something interesting!
|
||||||
parserTitle = parserResult.PrimaryMovieTitle.ToLower().Replace(".", " "); //TODO Update so not every period gets replaced (e.g. R.I.P.D.)
|
parserTitle = parserResult.PrimaryMovieTitle.ToLower().Replace(".", " "); // TODO Update so not every period gets replaced (e.g. R.I.P.D.)
|
||||||
if (parserResult.Year > 1800)
|
if (parserResult.Year > 1800)
|
||||||
{
|
{
|
||||||
yearTerm = parserResult.Year.ToString();
|
yearTerm = parserResult.Year.ToString();
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user