mirror of https://github.com/lidarr/Lidarr
Fixed issues that came up after making changes to Episode and EpisodeFile.
This commit is contained in:
parent
738700537e
commit
891acfff44
|
@ -51,10 +51,9 @@ namespace NzbDrone.Core.Test
|
||||||
HistoryId = new int(),
|
HistoryId = new int(),
|
||||||
Date = DateTime.Now,
|
Date = DateTime.Now,
|
||||||
IsProper = false,
|
IsProper = false,
|
||||||
Quality = 1,
|
Quality = QualityTypes.TV,
|
||||||
Indexer = indexer,
|
IndexerName = indexer.IndexerName,
|
||||||
Episode = episode,
|
EpisodeId = episode.EpisodeId
|
||||||
EpisodeId = 1234
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var repo = new Mock<IRepository>();
|
var repo = new Mock<IRepository>();
|
||||||
|
@ -105,10 +104,9 @@ namespace NzbDrone.Core.Test
|
||||||
HistoryId = new int(),
|
HistoryId = new int(),
|
||||||
Date = DateTime.Now,
|
Date = DateTime.Now,
|
||||||
IsProper = false,
|
IsProper = false,
|
||||||
Quality = 1,
|
Quality = QualityTypes.TV,
|
||||||
Indexer = indexer,
|
IndexerName = indexer.IndexerName,
|
||||||
Episode = episode,
|
EpisodeId = episode.EpisodeId
|
||||||
EpisodeId = 1234
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var proper = false;
|
var proper = false;
|
||||||
|
@ -162,10 +160,9 @@ namespace NzbDrone.Core.Test
|
||||||
HistoryId = new int(),
|
HistoryId = new int(),
|
||||||
Date = DateTime.Now,
|
Date = DateTime.Now,
|
||||||
IsProper = false,
|
IsProper = false,
|
||||||
Quality = 1,
|
Quality = QualityTypes.TV,
|
||||||
Indexer = indexer,
|
IndexerName = indexer.IndexerName,
|
||||||
Episode = episode,
|
EpisodeId = episode.EpisodeId
|
||||||
EpisodeId = 1234
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var repo = new Mock<IRepository>();
|
var repo = new Mock<IRepository>();
|
||||||
|
|
|
@ -66,7 +66,7 @@ namespace NzbDrone.Core.Test
|
||||||
Assert.IsNotNull(result);
|
Assert.IsNotNull(result);
|
||||||
repository.Verify(r => r.Add<EpisodeFile>(result), Times.Once());
|
repository.Verify(r => r.Add<EpisodeFile>(result), Times.Once());
|
||||||
|
|
||||||
Assert.AreEqual(fakeEpisode.EpisodeId, result.EpisodeId);
|
Assert.AreEqual(fakeEpisode, result.Episodes[0]);
|
||||||
Assert.AreEqual(fakeEpisode.SeriesId, result.SeriesId);
|
Assert.AreEqual(fakeEpisode.SeriesId, result.SeriesId);
|
||||||
Assert.AreEqual(QualityTypes.DVD, result.Quality);
|
Assert.AreEqual(QualityTypes.DVD, result.Quality);
|
||||||
Assert.AreEqual(Parser.NormalizePath(fileName), result.Path);
|
Assert.AreEqual(Parser.NormalizePath(fileName), result.Path);
|
||||||
|
|
|
@ -164,6 +164,8 @@
|
||||||
<Compile Include="Instrumentation\NlogWriter.cs" />
|
<Compile Include="Instrumentation\NlogWriter.cs" />
|
||||||
<Compile Include="Model\EpisodeParseResult.cs" />
|
<Compile Include="Model\EpisodeParseResult.cs" />
|
||||||
<Compile Include="Model\EpisodeModel.cs" />
|
<Compile Include="Model\EpisodeModel.cs" />
|
||||||
|
<Compile Include="Model\EpisodeRenameModel.cs" />
|
||||||
|
<Compile Include="Model\EpisodeStatusType.cs" />
|
||||||
<Compile Include="Model\FeedInfoModel.cs" />
|
<Compile Include="Model\FeedInfoModel.cs" />
|
||||||
<Compile Include="Model\NzbInfoModel.cs" />
|
<Compile Include="Model\NzbInfoModel.cs" />
|
||||||
<Compile Include="Model\NzbSiteModel.cs" />
|
<Compile Include="Model\NzbSiteModel.cs" />
|
||||||
|
@ -173,10 +175,12 @@
|
||||||
<Compile Include="Providers\IIndexerProvider.cs" />
|
<Compile Include="Providers\IIndexerProvider.cs" />
|
||||||
<Compile Include="Providers\IndexerProvider.cs" />
|
<Compile Include="Providers\IndexerProvider.cs" />
|
||||||
<Compile Include="Providers\IQualityProvider.cs" />
|
<Compile Include="Providers\IQualityProvider.cs" />
|
||||||
|
<Compile Include="Providers\IRenameProvider.cs" />
|
||||||
<Compile Include="Providers\IRssSyncProvider.cs" />
|
<Compile Include="Providers\IRssSyncProvider.cs" />
|
||||||
<Compile Include="Providers\IRssProvider.cs" />
|
<Compile Include="Providers\IRssProvider.cs" />
|
||||||
<Compile Include="Providers\ITimerProvider.cs" />
|
<Compile Include="Providers\ITimerProvider.cs" />
|
||||||
<Compile Include="Providers\QualityProvider.cs" />
|
<Compile Include="Providers\QualityProvider.cs" />
|
||||||
|
<Compile Include="Providers\RenameProvider.cs" />
|
||||||
<Compile Include="Providers\RssSyncProvider.cs" />
|
<Compile Include="Providers\RssSyncProvider.cs" />
|
||||||
<Compile Include="Providers\RssProvider.cs" />
|
<Compile Include="Providers\RssProvider.cs" />
|
||||||
<Compile Include="Providers\TimerProvider.cs" />
|
<Compile Include="Providers\TimerProvider.cs" />
|
||||||
|
|
|
@ -94,37 +94,34 @@ namespace NzbDrone.Core.Providers
|
||||||
|
|
||||||
episode.EpisodeId = dbEpisode.EpisodeId;
|
episode.EpisodeId = dbEpisode.EpisodeId;
|
||||||
|
|
||||||
var epWithFiles = _sonicRepo.All<EpisodeFile>().Where(c => c.EpisodeId == episode.EpisodeId);
|
var file = _sonicRepo.Single<EpisodeFile>(c => c.FileId == dbEpisode.FileId);
|
||||||
|
|
||||||
if (epWithFiles != null)
|
if (file != null)
|
||||||
{
|
{
|
||||||
//If not null we need to see if this episode has the quality as the download (or if it is better)
|
//If not null we need to see if this episode has the quality as the download (or if it is better)
|
||||||
foreach (var file in epWithFiles)
|
if (file.Quality == episode.Quality)
|
||||||
{
|
{
|
||||||
if (file.Quality == episode.Quality)
|
//If the episodeFile is a Proper we don't need to download again
|
||||||
|
if (file.Proper)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//There will never be a time when the episode quality is less than what we have and we want it... ever.... I think.
|
||||||
|
if (file.Quality > episode.Quality)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
//Now we need to handle upgrades and actually pay attention to the Cutoff Value
|
||||||
|
if (file.Quality < episode.Quality)
|
||||||
|
{
|
||||||
|
var series = _series.GetSeries(episode.SeriesId);
|
||||||
|
var quality = _quality.Find(series.QualityProfileId);
|
||||||
|
|
||||||
|
if (quality.Cutoff <= file.Quality)
|
||||||
{
|
{
|
||||||
//If the episodeFile is a Proper we don't need to download again
|
//If the episodeFile is a Proper we don't need to download again
|
||||||
if (file.Proper)
|
if (file.Proper)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//There will never be a time when the episode quality is less than what we have and we want it... ever.... I think.
|
|
||||||
if (file.Quality > episode.Quality)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
//Now we need to handle upgrades and actually pay attention to the Cutoff Value
|
|
||||||
if (file.Quality < episode.Quality)
|
|
||||||
{
|
|
||||||
var series = _series.GetSeries(episode.SeriesId);
|
|
||||||
var quality = _quality.Find(series.QualityProfileId);
|
|
||||||
|
|
||||||
if (quality.Cutoff <= file.Quality)
|
|
||||||
{
|
|
||||||
//If the episodeFile is a Proper we don't need to download again
|
|
||||||
if (file.Proper)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,16 +51,19 @@ namespace NzbDrone.Core.Providers
|
||||||
{
|
{
|
||||||
var episodesInFile = Parser.ParseEpisodeInfo(filePath);
|
var episodesInFile = Parser.ParseEpisodeInfo(filePath);
|
||||||
|
|
||||||
|
var episodes = new List<Episode>();
|
||||||
foreach (var parsedEpisode in episodesInFile)
|
foreach (var parsedEpisode in episodesInFile)
|
||||||
{
|
{
|
||||||
EpisodeParseResult closureEpisode = parsedEpisode;
|
EpisodeParseResult closureEpisode = parsedEpisode;
|
||||||
var episode = _episodeProvider.GetEpisode(series.SeriesId, closureEpisode.SeasonNumber, closureEpisode.EpisodeNumber);
|
var episode = _episodeProvider.GetEpisode(series.SeriesId, closureEpisode.SeasonNumber,
|
||||||
|
closureEpisode.EpisodeNumber);
|
||||||
|
episodes.Add(episode);
|
||||||
if (episode != null)
|
if (episode != null)
|
||||||
{
|
{
|
||||||
var episodeFile = new EpisodeFile();
|
var episodeFile = new EpisodeFile();
|
||||||
episodeFile.DateAdded = DateTime.Now;
|
episodeFile.DateAdded = DateTime.Now;
|
||||||
episodeFile.SeriesId = series.SeriesId;
|
episodeFile.SeriesId = series.SeriesId;
|
||||||
episodeFile.EpisodeId = episode.EpisodeId;
|
episodeFile.Episodes = episodes;
|
||||||
episodeFile.Path = Parser.NormalizePath(filePath);
|
episodeFile.Path = Parser.NormalizePath(filePath);
|
||||||
episodeFile.Size = _diskProvider.GetSize(filePath);
|
episodeFile.Size = _diskProvider.GetSize(filePath);
|
||||||
episodeFile.Quality = Parser.ParseQuality(filePath);
|
episodeFile.Quality = Parser.ParseQuality(filePath);
|
||||||
|
|
Loading…
Reference in New Issue