mirror of https://github.com/lidarr/Lidarr
New: Added raw DVD check for BTN to prevent those pesky VIDEO_TS downloads.
fixes #r1377
This commit is contained in:
parent
c4a3bc3d2f
commit
c7d445d1c1
|
@ -0,0 +1,74 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using FizzWare.NBuilder;
|
||||||
|
using FluentAssertions;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Core.DecisionEngine.Specifications;
|
||||||
|
using NzbDrone.Core.MediaFiles;
|
||||||
|
using NzbDrone.Core.Parser.Model;
|
||||||
|
using NzbDrone.Core.Profiles;
|
||||||
|
using NzbDrone.Core.Qualities;
|
||||||
|
using NzbDrone.Core.Tv;
|
||||||
|
using NzbDrone.Core.DecisionEngine;
|
||||||
|
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
using NzbDrone.Core.Indexers;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.DecisionEngineTests
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
|
||||||
|
public class DvdSpecificationFixture : CoreTest<DvdSpecification>
|
||||||
|
{
|
||||||
|
private RemoteEpisode _remoteEpisode;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
_remoteEpisode = new RemoteEpisode
|
||||||
|
{
|
||||||
|
Release = new ReleaseInfo() { DownloadProtocol = DownloadProtocol.Torrent }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WithContainer(string container)
|
||||||
|
{
|
||||||
|
_remoteEpisode.Release.Container = container;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_if_no_container_specified()
|
||||||
|
{
|
||||||
|
Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_true_if_mkv()
|
||||||
|
{
|
||||||
|
WithContainer("MKV");
|
||||||
|
Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_false_if_vob()
|
||||||
|
{
|
||||||
|
WithContainer("VOB");
|
||||||
|
Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_false_if_iso()
|
||||||
|
{
|
||||||
|
WithContainer("ISO");
|
||||||
|
Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_compare_case_insensitive()
|
||||||
|
{
|
||||||
|
WithContainer("vob");
|
||||||
|
Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -56,6 +56,12 @@ namespace NzbDrone.Core.Test.IndexerTests.BroadcastheNetTests
|
||||||
torrentInfo.MagnetUrl.Should().BeNullOrEmpty();
|
torrentInfo.MagnetUrl.Should().BeNullOrEmpty();
|
||||||
torrentInfo.Peers.Should().Be(40+9);
|
torrentInfo.Peers.Should().Be(40+9);
|
||||||
torrentInfo.Seeders.Should().Be(40);
|
torrentInfo.Seeders.Should().Be(40);
|
||||||
|
|
||||||
|
torrentInfo.Origin.Should().Be("Scene");
|
||||||
|
torrentInfo.Source.Should().Be("HDTV");
|
||||||
|
torrentInfo.Container.Should().Be("MP4");
|
||||||
|
torrentInfo.Codec.Should().Be("x264");
|
||||||
|
torrentInfo.Resolution.Should().Be("SD");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void VerifyBackOff()
|
private void VerifyBackOff()
|
||||||
|
|
|
@ -156,6 +156,7 @@
|
||||||
<Compile Include="DecisionEngineTests\RssSync\ProperSpecificationFixture.cs" />
|
<Compile Include="DecisionEngineTests\RssSync\ProperSpecificationFixture.cs" />
|
||||||
<Compile Include="DecisionEngineTests\Search\SeriesSpecificationFixture.cs" />
|
<Compile Include="DecisionEngineTests\Search\SeriesSpecificationFixture.cs" />
|
||||||
<Compile Include="DecisionEngineTests\SameEpisodesSpecificationFixture.cs" />
|
<Compile Include="DecisionEngineTests\SameEpisodesSpecificationFixture.cs" />
|
||||||
|
<Compile Include="DecisionEngineTests\DvdSpecificationFixture.cs" />
|
||||||
<Compile Include="DecisionEngineTests\UpgradeDiskSpecificationFixture.cs" />
|
<Compile Include="DecisionEngineTests\UpgradeDiskSpecificationFixture.cs" />
|
||||||
<Compile Include="Download\CompletedDownloadServiceFixture.cs" />
|
<Compile Include="Download\CompletedDownloadServiceFixture.cs" />
|
||||||
<Compile Include="Download\DownloadApprovedReportsTests\DownloadApprovedFixture.cs" />
|
<Compile Include="Download\DownloadApprovedReportsTests\DownloadApprovedFixture.cs" />
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
using System.Linq;
|
||||||
|
using NLog;
|
||||||
|
using NzbDrone.Common.Extensions;
|
||||||
|
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||||
|
using NzbDrone.Core.Parser.Model;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.DecisionEngine.Specifications
|
||||||
|
{
|
||||||
|
public class DvdSpecification : IDecisionEngineSpecification
|
||||||
|
{
|
||||||
|
private static readonly string[] _dvdContainerTypes = new[] { "vob", "iso" };
|
||||||
|
|
||||||
|
private readonly Logger _logger;
|
||||||
|
|
||||||
|
public DvdSpecification(Logger logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RejectionType Type { get { return RejectionType.Permanent; } }
|
||||||
|
|
||||||
|
public virtual Decision IsSatisfiedBy(RemoteEpisode subject, SearchCriteriaBase searchCriteria)
|
||||||
|
{
|
||||||
|
if (subject.Release == null || subject.Release.Container.IsNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
return Decision.Accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_dvdContainerTypes.Contains(subject.Release.Container.ToLower()))
|
||||||
|
{
|
||||||
|
_logger.Debug("Release contains raw DVD, rejecting.");
|
||||||
|
return Decision.Reject("Raw DVD release");
|
||||||
|
}
|
||||||
|
|
||||||
|
return Decision.Accept();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -76,6 +76,12 @@ namespace NzbDrone.Core.Indexers.BroadcastheNet
|
||||||
torrentInfo.Seeders = torrent.Seeders;
|
torrentInfo.Seeders = torrent.Seeders;
|
||||||
torrentInfo.Peers = torrent.Leechers + torrent.Seeders;
|
torrentInfo.Peers = torrent.Leechers + torrent.Seeders;
|
||||||
|
|
||||||
|
torrentInfo.Origin = torrent.Origin;
|
||||||
|
torrentInfo.Source = torrent.Source;
|
||||||
|
torrentInfo.Container = torrent.Container;
|
||||||
|
torrentInfo.Codec = torrent.Codec;
|
||||||
|
torrentInfo.Resolution = torrent.Resolution;
|
||||||
|
|
||||||
results.Add(torrentInfo);
|
results.Add(torrentInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -333,6 +333,7 @@
|
||||||
<Compile Include="DecisionEngine\Specifications\Search\SingleEpisodeSearchMatchSpecification.cs" />
|
<Compile Include="DecisionEngine\Specifications\Search\SingleEpisodeSearchMatchSpecification.cs" />
|
||||||
<Compile Include="DecisionEngine\Specifications\Search\TorrentSeedingSpecification.cs" />
|
<Compile Include="DecisionEngine\Specifications\Search\TorrentSeedingSpecification.cs" />
|
||||||
<Compile Include="DecisionEngine\Specifications\SameEpisodesGrabSpecification.cs" />
|
<Compile Include="DecisionEngine\Specifications\SameEpisodesGrabSpecification.cs" />
|
||||||
|
<Compile Include="DecisionEngine\Specifications\DvdSpecification.cs" />
|
||||||
<Compile Include="DecisionEngine\Specifications\UpgradeDiskSpecification.cs" />
|
<Compile Include="DecisionEngine\Specifications\UpgradeDiskSpecification.cs" />
|
||||||
<Compile Include="DiskSpace\DiskSpace.cs" />
|
<Compile Include="DiskSpace\DiskSpace.cs" />
|
||||||
<Compile Include="DiskSpace\DiskSpaceService.cs" />
|
<Compile Include="DiskSpace\DiskSpaceService.cs" />
|
||||||
|
|
|
@ -19,6 +19,12 @@ namespace NzbDrone.Core.Parser.Model
|
||||||
public int TvRageId { get; set; }
|
public int TvRageId { get; set; }
|
||||||
public DateTime PublishDate { get; set; }
|
public DateTime PublishDate { get; set; }
|
||||||
|
|
||||||
|
public string Origin { get; set; }
|
||||||
|
public string Source { get; set; }
|
||||||
|
public string Container { get; set; }
|
||||||
|
public string Codec { get; set; }
|
||||||
|
public string Resolution { get; set; }
|
||||||
|
|
||||||
public int Age
|
public int Age
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
Loading…
Reference in New Issue