fixed media cover download issue

pull/4/head
kay.one 12 years ago
parent 287dedadea
commit e5d35d7f59

@ -1,21 +1,24 @@
using NzbDrone.Common; using NLog;
using NzbDrone.Common;
namespace NzbDrone.Core.MediaCover namespace NzbDrone.Core.MediaCover
{ {
public interface ICoverExistsSpecification public interface ICoverExistsSpecification
{ {
bool AlreadyExists(string url, string paht); bool AlreadyExists(string url, string path);
} }
public class CoverAlreadyExistsSpecification : ICoverExistsSpecification public class CoverAlreadyExistsSpecification : ICoverExistsSpecification
{ {
private readonly IDiskProvider _diskProvider; private readonly IDiskProvider _diskProvider;
private readonly IHttpProvider _httpProvider; private readonly IHttpProvider _httpProvider;
private readonly Logger _logger;
public CoverAlreadyExistsSpecification(IDiskProvider diskProvider, IHttpProvider httpProvider) public CoverAlreadyExistsSpecification(IDiskProvider diskProvider, IHttpProvider httpProvider, Logger logger)
{ {
_diskProvider = diskProvider; _diskProvider = diskProvider;
_httpProvider = httpProvider; _httpProvider = httpProvider;
_logger = logger;
} }
public bool AlreadyExists(string url, string path) public bool AlreadyExists(string url, string path)
@ -27,21 +30,20 @@ namespace NzbDrone.Core.MediaCover
var headers = _httpProvider.DownloadHeader(url); var headers = _httpProvider.DownloadHeader(url);
string sizeString = null; string sizeString;
if (headers.TryGetValue(HttpProvider.ContentLenghtHeader, out sizeString)) if (headers.TryGetValue(headers[HttpProvider.ContentLenghtHeader], out sizeString))
{ {
int size; int size;
int.TryParse(sizeString, out size); int.TryParse(sizeString, out size);
var fileSize = _diskProvider.GetFileSize(path); var fileSize = _diskProvider.GetFileSize(path);
if (fileSize != size) return fileSize == size;
{
return false;
}
} }
return true; _logger.Warn("Couldn't read content length header {0}", headers[HttpProvider.ContentLenghtHeader]);
return false;
} }
} }
} }

@ -361,6 +361,7 @@
<Compile Include="Tv\Events\SeriesDeletedEvent.cs" /> <Compile Include="Tv\Events\SeriesDeletedEvent.cs" />
<Compile Include="Tv\Events\SeriesUpdatedEvent.cs" /> <Compile Include="Tv\Events\SeriesUpdatedEvent.cs" />
<Compile Include="Datastore\ResultSet.cs" /> <Compile Include="Datastore\ResultSet.cs" />
<Compile Include="Tv\Commands\RefreshSeriesCommand.cs" />
<Compile Include="Tv\SeasonRepository.cs" /> <Compile Include="Tv\SeasonRepository.cs" />
<Compile Include="Tv\SeriesRepository.cs" /> <Compile Include="Tv\SeriesRepository.cs" />
<Compile Include="Tv\QualityModel.cs" /> <Compile Include="Tv\QualityModel.cs" />

@ -0,0 +1,14 @@
using NzbDrone.Common.Messaging;
namespace NzbDrone.Core.Tv.Commands
{
public class RefreshSeriesCommand : ICommand
{
public int? SeriesId { get; private set; }
public RefreshSeriesCommand(int? seriesId)
{
SeriesId = seriesId;
}
}
}

@ -4,6 +4,7 @@ using System.Linq;
using NLog; using NLog;
using NzbDrone.Common.Messaging; using NzbDrone.Common.Messaging;
using NzbDrone.Core.MetadataSource; using NzbDrone.Core.MetadataSource;
using NzbDrone.Core.Tv.Commands;
using NzbDrone.Core.Tv.Events; using NzbDrone.Core.Tv.Events;
namespace NzbDrone.Core.Tv namespace NzbDrone.Core.Tv
@ -33,15 +34,16 @@ namespace NzbDrone.Core.Tv
{ {
if (message.SeriesId.HasValue) if (message.SeriesId.HasValue)
{ {
RefreshSeriesInfo(message.SeriesId.Value); var series = _seriesService.GetSeries(message.SeriesId.Value);
RefreshSeriesInfo(series);
} }
else else
{ {
var ids = _seriesService.GetAllSeries().OrderBy(c => c.LastInfoSync).Select(c => c.Id).ToList(); var allSeries = _seriesService.GetAllSeries().OrderBy(c => c.LastInfoSync).ToList();
foreach (var id in ids) foreach (var series in allSeries)
{ {
RefreshSeriesInfo(id); RefreshSeriesInfo(series);
} }
} }
@ -49,14 +51,15 @@ namespace NzbDrone.Core.Tv
public void HandleAsync(SeriesAddedEvent message) public void HandleAsync(SeriesAddedEvent message)
{ {
RefreshSeriesInfo(message.Series.Id); RefreshSeriesInfo(message.Series);
} }
private Series RefreshSeriesInfo(int seriesId) private void RefreshSeriesInfo(Series series)
{ {
var series = _seriesService.GetSeries(seriesId);
var tuple = _seriesInfo.GetSeriesInfo(series.TvdbId); var tuple = _seriesInfo.GetSeriesInfo(series.TvdbId);
RefreshEpisodeInfo(series, tuple.Item2);
var seriesInfo = tuple.Item1; var seriesInfo = tuple.Item1;
series.Title = seriesInfo.Title; series.Title = seriesInfo.Title;
@ -64,7 +67,7 @@ namespace NzbDrone.Core.Tv
series.Overview = seriesInfo.Overview; series.Overview = seriesInfo.Overview;
series.Status = seriesInfo.Status; series.Status = seriesInfo.Status;
series.CleanTitle = Parser.Parser.NormalizeTitle(seriesInfo.Title); series.CleanTitle = Parser.Parser.NormalizeTitle(seriesInfo.Title);
series.LastInfoSync = DateTime.Now; series.LastInfoSync = DateTime.UtcNow;
series.Runtime = seriesInfo.Runtime; series.Runtime = seriesInfo.Runtime;
series.Images = seriesInfo.Images; series.Images = seriesInfo.Images;
series.Network = seriesInfo.Network; series.Network = seriesInfo.Network;
@ -73,13 +76,10 @@ namespace NzbDrone.Core.Tv
//Todo: We need to get the UtcOffset from TVRage, since its not available from trakt //Todo: We need to get the UtcOffset from TVRage, since its not available from trakt
RefreshEpisodeInfo(series, tuple.Item2);
_messageAggregator.PublishEvent(new SeriesUpdatedEvent(series)); _messageAggregator.PublishEvent(new SeriesUpdatedEvent(series));
return series;
} }
private void RefreshEpisodeInfo(Series series, List<Episode> remoteEpisodes) private void RefreshEpisodeInfo(Series series, IEnumerable<Episode> remoteEpisodes)
{ {
_logger.Trace("Starting episode info refresh for series: {0}", series.Title.WithDefault(series.Id)); _logger.Trace("Starting episode info refresh for series: {0}", series.Title.WithDefault(series.Id));
var successCount = 0; var successCount = 0;
@ -205,14 +205,4 @@ namespace NzbDrone.Core.Tv
_logger.Trace("Deleted episodes that no longer exist in TVDB for {0}", series.Id); _logger.Trace("Deleted episodes that no longer exist in TVDB for {0}", series.Id);
}*/ }*/
} }
public class RefreshSeriesCommand : ICommand
{
public int? SeriesId { get; private set; }
public RefreshSeriesCommand(int? seriesId)
{
SeriesId = seriesId;
}
}
} }
Loading…
Cancel
Save