From 61d5c9a27b0b987e0c5930cc05d519402f12deff Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 6 May 2013 11:49:14 -0400 Subject: [PATCH] support fanart for trailers --- .../Providers/Movies/FanArtMovieProvider.cs | 56 ++++++++++++++----- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs index 5453973698..fc50254cf6 100644 --- a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs @@ -69,6 +69,13 @@ namespace MediaBrowser.Controller.Providers.Movies /// true if XXXX, false otherwise public override bool Supports(BaseItem item) { + var trailer = item as Trailer; + + if (trailer != null) + { + return !trailer.IsLocalTrailer; + } + return item is Movie || item is BoxSet; } @@ -125,11 +132,19 @@ namespace MediaBrowser.Controller.Providers.Movies cancellationToken.ThrowIfCancellationRequested(); + var saveLocal = ConfigurationManager.Configuration.SaveLocalMeta && + item.LocationType == LocationType.FileSystem; + if (doc.HasChildNodes) { string path; var hd = ConfigurationManager.Configuration.DownloadHDFanArt ? "hd" : ""; - if (ConfigurationManager.Configuration.DownloadMovieImages.Logo && !item.ResolveArgs.ContainsMetaFileByName(LOGO_FILE)) + + var hasLogo = item.LocationType == LocationType.FileSystem ? + item.ResolveArgs.ContainsMetaFileByName(LOGO_FILE) + : item.HasImage(ImageType.Logo); + + if (ConfigurationManager.Configuration.DownloadMovieImages.Logo && !hasLogo) { var node = doc.SelectSingleNode("//fanart/movie/movielogos/" + hd + "movielogo[@lang = \"" + language + "\"]/@url") ?? @@ -142,10 +157,9 @@ namespace MediaBrowser.Controller.Providers.Movies path = node != null ? node.Value : null; if (!string.IsNullOrEmpty(path)) { - Logger.Debug("FanArtProvider getting ClearLogo for " + movie.Name); try { - movie.SetImage(ImageType.Logo, await _providerManager.DownloadAndSaveImage(movie, path, LOGO_FILE, ConfigurationManager.Configuration.SaveLocalMeta, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); + movie.SetImage(ImageType.Logo, await _providerManager.DownloadAndSaveImage(movie, path, LOGO_FILE, saveLocal, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); } catch (HttpException) { @@ -158,7 +172,11 @@ namespace MediaBrowser.Controller.Providers.Movies } cancellationToken.ThrowIfCancellationRequested(); - if (ConfigurationManager.Configuration.DownloadMovieImages.Art && !item.ResolveArgs.ContainsMetaFileByName(ART_FILE)) + var hasArt = item.LocationType == LocationType.FileSystem ? + item.ResolveArgs.ContainsMetaFileByName(ART_FILE) + : item.HasImage(ImageType.Art); + + if (ConfigurationManager.Configuration.DownloadMovieImages.Art && !hasArt) { var node = doc.SelectSingleNode("//fanart/movie/moviearts/" + hd + "movieart[@lang = \"" + language + "\"]/@url") ?? @@ -168,10 +186,9 @@ namespace MediaBrowser.Controller.Providers.Movies path = node != null ? node.Value : null; if (!string.IsNullOrEmpty(path)) { - Logger.Debug("FanArtProvider getting ClearArt for " + movie.Name); try { - movie.SetImage(ImageType.Art, await _providerManager.DownloadAndSaveImage(movie, path, ART_FILE, ConfigurationManager.Configuration.SaveLocalMeta, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); + movie.SetImage(ImageType.Art, await _providerManager.DownloadAndSaveImage(movie, path, ART_FILE, saveLocal, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); } catch (HttpException) { @@ -184,17 +201,20 @@ namespace MediaBrowser.Controller.Providers.Movies } cancellationToken.ThrowIfCancellationRequested(); - if (ConfigurationManager.Configuration.DownloadMovieImages.Disc && !item.ResolveArgs.ContainsMetaFileByName(DISC_FILE)) + var hasDisc = item.LocationType == LocationType.FileSystem ? + item.ResolveArgs.ContainsMetaFileByName(DISC_FILE) + : item.HasImage(ImageType.Disc); + + if (ConfigurationManager.Configuration.DownloadMovieImages.Disc && !hasDisc) { var node = doc.SelectSingleNode("//fanart/movie/moviediscs/moviedisc[@lang = \"" + language + "\"]/@url") ?? doc.SelectSingleNode("//fanart/movie/moviediscs/moviedisc/@url"); path = node != null ? node.Value : null; if (!string.IsNullOrEmpty(path)) { - Logger.Debug("FanArtProvider getting DiscArt for " + movie.Name); try { - movie.SetImage(ImageType.Disc, await _providerManager.DownloadAndSaveImage(movie, path, DISC_FILE, ConfigurationManager.Configuration.SaveLocalMeta, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); + movie.SetImage(ImageType.Disc, await _providerManager.DownloadAndSaveImage(movie, path, DISC_FILE, saveLocal, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); } catch (HttpException) { @@ -208,17 +228,20 @@ namespace MediaBrowser.Controller.Providers.Movies cancellationToken.ThrowIfCancellationRequested(); - if (ConfigurationManager.Configuration.DownloadMovieImages.Banner && !item.ResolveArgs.ContainsMetaFileByName(BANNER_FILE)) + var hasBanner = item.LocationType == LocationType.FileSystem ? + item.ResolveArgs.ContainsMetaFileByName(BANNER_FILE) + : item.HasImage(ImageType.Banner); + + if (ConfigurationManager.Configuration.DownloadMovieImages.Banner && !hasBanner) { var node = doc.SelectSingleNode("//fanart/movie/moviebanners/moviebanner[@lang = \"" + language + "\"]/@url") ?? doc.SelectSingleNode("//fanart/movie/moviebanners/moviebanner/@url"); path = node != null ? node.Value : null; if (!string.IsNullOrEmpty(path)) { - Logger.Debug("FanArtProvider getting Banner for " + movie.Name); try { - movie.SetImage(ImageType.Banner, await _providerManager.DownloadAndSaveImage(movie, path, BANNER_FILE, ConfigurationManager.Configuration.SaveLocalMeta, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); + movie.SetImage(ImageType.Banner, await _providerManager.DownloadAndSaveImage(movie, path, BANNER_FILE, saveLocal, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); } catch (HttpException) { @@ -232,17 +255,20 @@ namespace MediaBrowser.Controller.Providers.Movies cancellationToken.ThrowIfCancellationRequested(); - if (ConfigurationManager.Configuration.DownloadMovieImages.Thumb && !item.ResolveArgs.ContainsMetaFileByName(THUMB_FILE)) + var hasThumb = item.LocationType == LocationType.FileSystem ? + item.ResolveArgs.ContainsMetaFileByName(THUMB_FILE) + : item.HasImage(ImageType.Thumb); + + if (ConfigurationManager.Configuration.DownloadMovieImages.Thumb && !hasThumb) { var node = doc.SelectSingleNode("//fanart/movie/moviethumbs/moviethumb[@lang = \"" + language + "\"]/@url") ?? doc.SelectSingleNode("//fanart/movie/moviethumbs/moviethumb/@url"); path = node != null ? node.Value : null; if (!string.IsNullOrEmpty(path)) { - Logger.Debug("FanArtProvider getting Banner for " + movie.Name); try { - movie.SetImage(ImageType.Thumb, await _providerManager.DownloadAndSaveImage(movie, path, THUMB_FILE, ConfigurationManager.Configuration.SaveLocalMeta, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); + movie.SetImage(ImageType.Thumb, await _providerManager.DownloadAndSaveImage(movie, path, THUMB_FILE, saveLocal, FanArtResourcePool, cancellationToken).ConfigureAwait(false)); } catch (HttpException) {