diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-06 19:43:45 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-06 19:43:45 -0500 |
| commit | 65903c56de4247ec8b45b204fc4816ff3db95d96 (patch) | |
| tree | 8aa130ece7ed8c87e119664c5146d291b34e8a61 | |
| parent | 446232394887fb3dea1ad81906e9a3d23bf134c1 (diff) | |
get album images from songs before internet
13 files changed, 144 insertions, 18 deletions
diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index f2fa4dc29..bc5579ab6 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -63,18 +63,24 @@ namespace MediaBrowser.Providers.Manager var backdropLimit = item.HasImage(ImageType.Backdrop) ? 0 : savedOptions.GetLimit(ImageType.Backdrop); var screenshotLimit = item.HasImage(ImageType.Screenshot) ? 0 : savedOptions.GetLimit(ImageType.Screenshot); - foreach (var provider in providers.OfType<IRemoteImageProvider>()) + foreach (var provider in providers) { - await RefreshFromProvider(item, provider, refreshOptions, savedOptions, backdropLimit, screenshotLimit, result, cancellationToken).ConfigureAwait(false); + var remoteProvider = provider as IRemoteImageProvider; - providerIds.Add(provider.GetType().FullName.GetMD5()); - } + if (remoteProvider != null) + { + await RefreshFromProvider(item, remoteProvider, refreshOptions, savedOptions, backdropLimit, screenshotLimit, result, cancellationToken).ConfigureAwait(false); + providerIds.Add(provider.GetType().FullName.GetMD5()); + continue; + } - foreach (var provider in providers.OfType<IDynamicImageProvider>()) - { - await RefreshFromProvider(item, provider, savedOptions, result, cancellationToken).ConfigureAwait(false); + var dynamicImageProvider = provider as IDynamicImageProvider; - providerIds.Add(provider.GetType().FullName.GetMD5()); + if (dynamicImageProvider != null) + { + await RefreshFromProvider(item, dynamicImageProvider, savedOptions, result, cancellationToken).ConfigureAwait(false); + providerIds.Add(provider.GetType().FullName.GetMD5()); + } } result.Providers = providerIds; diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 2c710693e..4bd9fc530 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -110,6 +110,7 @@ <Compile Include="Movies\MovieDbImageProvider.cs" /> <Compile Include="Movies\FanartMovieImageProvider.cs" /> <Compile Include="MusicGenres\MusicGenreMetadataService.cs" /> + <Compile Include="Music\AlbumImageFromSongProvider.cs" /> <Compile Include="Music\AlbumMetadataService.cs" /> <Compile Include="Music\ArtistMetadataService.cs" /> <Compile Include="Music\AudioMetadataService.cs" /> diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs index 31d44f4ec..8c62f6be4 100644 --- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.MediaInfo { - public class VideoImageProvider : IDynamicImageProvider, IHasChangeMonitor + public class VideoImageProvider : IDynamicImageProvider, IHasChangeMonitor, IHasOrder { private readonly IIsoManager _isoManager; private readonly IMediaEncoder _mediaEncoder; @@ -130,5 +130,14 @@ namespace MediaBrowser.Providers.MediaInfo { return item.DateModified > date; } + + public int Order + { + get + { + // Make sure this comes after internet image providers + return 100; + } + } } } diff --git a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs index e0ed0ec25..94d8566e1 100644 --- a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs +++ b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs @@ -346,6 +346,11 @@ namespace MediaBrowser.Providers.Movies public bool HasChanged(IHasMetadata item, DateTime date) { + if (!_config.Configuration.EnableFanArtUpdates) + { + return false; + } + var id = item.GetProviderId(MetadataProviders.Tmdb); if (!string.IsNullOrEmpty(id)) @@ -355,7 +360,7 @@ namespace MediaBrowser.Providers.Movies var fileInfo = new FileInfo(xmlPath); - return fileInfo.Exists && _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; + return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; } return false; diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs index 47b92235b..33092b6c9 100644 --- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs @@ -5,6 +5,7 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using System; @@ -18,7 +19,7 @@ namespace MediaBrowser.Providers.Movies /// <summary> /// Class MovieDbProvider /// </summary> - public class MovieDbProvider : IRemoteMetadataProvider<Movie>, IDisposable + public class MovieDbProvider : IRemoteMetadataProvider<Movie>, IDisposable, IHasChangeMonitor { internal readonly SemaphoreSlim MovieDbResourcePool = new SemaphoreSlim(1, 1); @@ -314,6 +315,28 @@ namespace MediaBrowser.Providers.Movies } } + public bool HasChanged(IHasMetadata item, DateTime date) + { + if (!_configurationManager.Configuration.EnableTmdbUpdates) + { + return false; + } + + var tmdbId = item.GetProviderId(MetadataProviders.Tmdb); + + if (!String.IsNullOrEmpty(tmdbId)) + { + // Process images + var dataFilePath = GetDataFilePath(tmdbId, item.GetPreferredMetadataLanguage()); + + var fileInfo = new FileInfo(dataFilePath); + + return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; + } + + return false; + } + public void Dispose() { Dispose(true); diff --git a/MediaBrowser.Providers/Music/AlbumImageFromSongProvider.cs b/MediaBrowser.Providers/Music/AlbumImageFromSongProvider.cs new file mode 100644 index 000000000..0e073c783 --- /dev/null +++ b/MediaBrowser.Providers/Music/AlbumImageFromSongProvider.cs @@ -0,0 +1,44 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Providers.Music +{ + public class AlbumImageFromSongProvider : IDynamicImageProvider + { + public IEnumerable<ImageType> GetSupportedImages(IHasImages item) + { + return new List<ImageType> { ImageType.Primary }; + } + + public Task<DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken) + { + var album = (MusicAlbum)item; + + var image = album.RecursiveChildren.OfType<Audio>() + .Select(i => i.GetImagePath(type)) + .FirstOrDefault(i => !string.IsNullOrEmpty(i)); + + return Task.FromResult(new DynamicImageResponse + { + Path = image, + HasImage = !string.IsNullOrEmpty(image) + }); + } + + public string Name + { + get { return "Embedded Image"; } + } + + public bool Supports(IHasImages item) + { + return item is MusicAlbum; + } + } +} diff --git a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs index cd87d213b..343097639 100644 --- a/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/FanArtAlbumProvider.cs @@ -340,7 +340,11 @@ namespace MediaBrowser.Providers.Music public int Order { - get { return 0; } + get + { + // After embedded provider + return 1; + } } public Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken) @@ -355,6 +359,11 @@ namespace MediaBrowser.Providers.Music public bool HasChanged(IHasMetadata item, DateTime date) { + if (!_config.Configuration.EnableFanArtUpdates) + { + return false; + } + var album = (MusicAlbum)item; var artistMusicBrainzId = album.Parent.GetProviderId(MetadataProviders.Musicbrainz); @@ -366,7 +375,7 @@ namespace MediaBrowser.Providers.Music var fileInfo = new FileInfo(artistXmlPath); - return fileInfo.Exists && _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; + return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; } return false; diff --git a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs index 446c80920..c8f3ccfa3 100644 --- a/MediaBrowser.Providers/Music/FanArtArtistProvider.cs +++ b/MediaBrowser.Providers/Music/FanArtArtistProvider.cs @@ -376,6 +376,11 @@ namespace MediaBrowser.Providers.Music public bool HasChanged(IHasMetadata item, DateTime date) { + if (!_config.Configuration.EnableFanArtUpdates) + { + return false; + } + var id = item.GetProviderId(MetadataProviders.Musicbrainz); if (!String.IsNullOrEmpty(id)) @@ -385,7 +390,7 @@ namespace MediaBrowser.Providers.Music var fileInfo = new FileInfo(artistXmlPath); - return fileInfo.Exists && _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; + return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; } return false; diff --git a/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs b/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs index f9d7d3018..f0663cee0 100644 --- a/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs @@ -189,7 +189,11 @@ namespace MediaBrowser.Providers.Music public int Order { - get { return 1; } + get + { + // After embedded provider and fanart + return 2; + } } } diff --git a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs index b268c08a5..62f7a985a 100644 --- a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs +++ b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs @@ -277,6 +277,11 @@ namespace MediaBrowser.Providers.TV public bool HasChanged(IHasMetadata item, DateTime date) { + if (!_config.Configuration.EnableFanArtUpdates) + { + return false; + } + var season = (Season)item; var series = season.Series; @@ -294,7 +299,7 @@ namespace MediaBrowser.Providers.TV var fileInfo = new FileInfo(imagesXmlPath); - return fileInfo.Exists && _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; + return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; } return false; diff --git a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs index 66742cb99..85a2944f3 100644 --- a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs @@ -425,6 +425,11 @@ namespace MediaBrowser.Providers.TV public bool HasChanged(IHasMetadata item, DateTime date) { + if (!_config.Configuration.EnableFanArtUpdates) + { + return false; + } + var tvdbId = item.GetProviderId(MetadataProviders.Tvdb); if (!String.IsNullOrEmpty(tvdbId)) @@ -434,7 +439,7 @@ namespace MediaBrowser.Providers.TV var fileInfo = new FileInfo(imagesXmlPath); - return fileInfo.Exists && _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; + return !fileInfo.Exists || _fileSystem.GetLastWriteTimeUtc(fileInfo) > date; } return false; diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs index 178c7a265..657cd0b2e 100644 --- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs @@ -70,6 +70,11 @@ namespace MediaBrowser.Providers.TV public bool HasChanged(IHasMetadata item, DateTime date) { + if (!_config.Configuration.EnableTvDbUpdates) + { + return false; + } + var episode = (Episode)item; var series = episode.Series; diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs index b17b861a3..306c3e295 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs @@ -1082,6 +1082,11 @@ namespace MediaBrowser.Providers.TV public bool HasChanged(IHasMetadata item, DateTime date) { + if (!_config.Configuration.EnableTvDbUpdates) + { + return false; + } + var seriesId = item.GetProviderId(MetadataProviders.Tvdb); if (!string.IsNullOrEmpty(seriesId)) @@ -1094,7 +1099,7 @@ namespace MediaBrowser.Providers.TV var seriesFile = new FileInfo(filePath); - if (seriesFile.Exists && _fileSystem.GetLastWriteTimeUtc(seriesFile) > date) + if (!seriesFile.Exists || _fileSystem.GetLastWriteTimeUtc(seriesFile) > date) { return true; } |
