Xbmc episode metadata

Fixed: An issue with episode nfo not downloading when episode did not
have a thumbnail (XBMC Metadata)
pull/2/head
Mark McDowall 12 years ago
parent 1c29d24534
commit 7bdc10c370

@ -131,6 +131,11 @@ namespace NzbDrone.Core.Test.ProviderTests.Metadata
tvdbSeries.Episodes.ForEach(e => e.Writer = new List<string>()); tvdbSeries.Episodes.ForEach(e => e.Writer = new List<string>());
} }
private void WithoutThumbnails()
{
tvdbSeries.Episodes.ForEach(e => e.BannerPath = String.Empty);
}
[Test] [Test]
public void should_not_blowup() public void should_not_blowup()
{ {
@ -177,5 +182,15 @@ namespace NzbDrone.Core.Test.ProviderTests.Metadata
WithNoWriters(); WithNoWriters();
Mocker.Resolve<Xbmc>().CreateForEpisodeFile(episodeFile, tvdbSeries); Mocker.Resolve<Xbmc>().CreateForEpisodeFile(episodeFile, tvdbSeries);
} }
[Test]
public void should_download_nfo_even_if_thumbnail_is_missing()
{
WithSingleEpisodeFile();
WithoutThumbnails();
Mocker.Resolve<Xbmc>().CreateForEpisodeFile(episodeFile, tvdbSeries);
Mocker.GetMock<DiskProvider>().Verify(v => v.WriteAllText(It.IsAny<String>(), It.IsAny<String>()), Times.Once());
}
} }
} }

@ -165,5 +165,34 @@ namespace NzbDrone.Core.Test.ProviderTests.Metadata
Mocker.Resolve<Xbmc>().CreateForSeries(series, tvdbSeries); Mocker.Resolve<Xbmc>().CreateForSeries(series, tvdbSeries);
Mocker.GetMock<BannerProvider>().Verify(v => v.Download(It.Is<string>(s => s.Contains("banners")), It.IsRegex(@"season-specials.tbn")), Times.Exactly(1)); Mocker.GetMock<BannerProvider>().Verify(v => v.Download(It.Is<string>(s => s.Contains("banners")), It.IsRegex(@"season-specials.tbn")), Times.Exactly(1));
} }
[Test]
public void should_not_try_to_download_fanart_if_fanart_path_is_empty()
{
WithUseBanners();
tvdbSeries.FanartPath = String.Empty;
Mocker.Resolve<Xbmc>().CreateForSeries(series, tvdbSeries);
Mocker.GetMock<BannerProvider>().Verify(v => v.Download(It.IsAny<String>(), Path.Combine(series.Path, "fanart.jpg")), Times.Never());
}
[Test]
public void should_not_try_to_download_banner_if_banner_path_is_empty()
{
WithUseBanners();
tvdbSeries.BannerPath = String.Empty;
Mocker.Resolve<Xbmc>().CreateForSeries(series, tvdbSeries);
Mocker.GetMock<BannerProvider>().Verify(v => v.Download(It.IsAny<String>(), Path.Combine(series.Path, "folder.jpg")), Times.Never());
}
[Test]
public void should_not_try_to_download_poster_if_poster_path_is_empty()
{
tvdbSeries.PosterPath = String.Empty;
Mocker.Resolve<Xbmc>().CreateForSeries(series, tvdbSeries);
Mocker.GetMock<BannerProvider>().Verify(v => v.Download(It.IsAny<String>(), Path.Combine(series.Path, "folder.jpg")), Times.Never());
}
} }
} }

@ -68,18 +68,28 @@ namespace NzbDrone.Core.Providers.Metadata
_diskProvider.WriteAllText(Path.Combine(series.Path, "tvshow.nfo"), doc.ToString()); _diskProvider.WriteAllText(Path.Combine(series.Path, "tvshow.nfo"), doc.ToString());
} }
if (!_diskProvider.FileExists(Path.Combine(series.Path, "fanart.jpg"))) if(String.IsNullOrWhiteSpace(tvDbSeries.FanartPath))
{ {
_logger.Debug("Downloading fanart for: {0}", series.Title); _logger.Debug("Fanart does not exist for series: {0}, skipping.", series.Title);
_bannerProvider.Download(tvDbSeries.FanartPath, Path.Combine(series.Path, "fanart.jpg")); }
else
{
if (!_diskProvider.FileExists(Path.Combine(series.Path, "fanart.jpg")))
{
_logger.Debug("Downloading fanart for: {0}", series.Title);
_bannerProvider.Download(tvDbSeries.FanartPath, Path.Combine(series.Path, "fanart.jpg"));
}
} }
if (!_diskProvider.FileExists(Path.Combine(series.Path, "folder.jpg"))) if (!_diskProvider.FileExists(Path.Combine(series.Path, "folder.jpg")))
{ {
if(_configProvider.MetadataUseBanners) if(_configProvider.MetadataUseBanners)
{ {
_logger.Debug("Downloading series banner for: {0}", series.Title); if(!String.IsNullOrWhiteSpace(tvDbSeries.BannerPath))
_bannerProvider.Download(tvDbSeries.BannerPath, Path.Combine(series.Path, "folder.jpg")); {
_logger.Debug("Downloading series banner for: {0}", series.Title);
_bannerProvider.Download(tvDbSeries.BannerPath, Path.Combine(series.Path, "folder.jpg"));
}
_logger.Debug("Downloading Season banners for {0}", series.Title); _logger.Debug("Downloading Season banners for {0}", series.Title);
DownloadSeasonThumbnails(series, tvDbSeries, TvdbSeasonBanner.Type.seasonwide); DownloadSeasonThumbnails(series, tvDbSeries, TvdbSeasonBanner.Type.seasonwide);
@ -87,8 +97,11 @@ namespace NzbDrone.Core.Providers.Metadata
else else
{ {
_logger.Debug("Downloading series thumbnail for: {0}", series.Title); if(!String.IsNullOrWhiteSpace(tvDbSeries.PosterPath))
_bannerProvider.Download(tvDbSeries.PosterPath, Path.Combine(series.Path, "folder.jpg")); {
_logger.Debug("Downloading series thumbnail for: {0}", series.Title);
_bannerProvider.Download(tvDbSeries.PosterPath, Path.Combine(series.Path, "folder.jpg"));
}
_logger.Debug("Downloading Season posters for {0}", series.Title); _logger.Debug("Downloading Season posters for {0}", series.Title);
DownloadSeasonThumbnails(series, tvDbSeries, TvdbSeasonBanner.Type.season); DownloadSeasonThumbnails(series, tvDbSeries, TvdbSeasonBanner.Type.season);
@ -112,19 +125,23 @@ namespace NzbDrone.Core.Providers.Metadata
e.SeasonNumber == episodeFile.SeasonNumber && e.SeasonNumber == episodeFile.SeasonNumber &&
e.EpisodeNumber == episodes.First().EpisodeNumber); e.EpisodeNumber == episodes.First().EpisodeNumber);
if (episodeFileThumbnail == null || String.IsNullOrWhiteSpace(episodeFileThumbnail.BannerPath)) if(episodeFileThumbnail == null || String.IsNullOrWhiteSpace(episodeFileThumbnail.BannerPath))
{ {
_logger.Debug("No thumbnail is available for this episode"); _logger.Debug("No thumbnail is available for this episode");
return;
} }
if (!_diskProvider.FileExists(episodeFile.Path.Replace(Path.GetExtension(episodeFile.Path), ".tbn"))) else
{ {
_logger.Debug("Downloading episode thumbnail for: {0}", episodeFile.EpisodeFileId); if (!_diskProvider.FileExists(episodeFile.Path.Replace(Path.GetExtension(episodeFile.Path), ".tbn")))
_bannerProvider.Download(episodeFileThumbnail.BannerPath, {
episodeFile.Path.Replace(Path.GetExtension(episodeFile.Path), ".tbn")); _logger.Debug("Downloading episode thumbnail for: {0}", episodeFile.EpisodeFileId);
_bannerProvider.Download(episodeFileThumbnail.BannerPath,
episodeFile.Path.Replace(Path.GetExtension(episodeFile.Path), ".tbn"));
}
} }
_logger.Debug("Generating filename.nfo for: {0}", episodeFile.EpisodeFileId); _logger.Debug("Generating filename.nfo for: {0}", episodeFile.EpisodeFileId);
var xmlResult = String.Empty; var xmlResult = String.Empty;

Loading…
Cancel
Save