aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-06 19:43:45 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-06 19:43:45 -0500
commit65903c56de4247ec8b45b204fc4816ff3db95d96 (patch)
tree8aa130ece7ed8c87e119664c5146d291b34e8a61
parent446232394887fb3dea1ad81906e9a3d23bf134c1 (diff)
get album images from songs before internet
-rw-r--r--MediaBrowser.Providers/Manager/ItemImageProvider.cs22
-rw-r--r--MediaBrowser.Providers/MediaBrowser.Providers.csproj1
-rw-r--r--MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs11
-rw-r--r--MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs7
-rw-r--r--MediaBrowser.Providers/Movies/MovieDbProvider.cs25
-rw-r--r--MediaBrowser.Providers/Music/AlbumImageFromSongProvider.cs44
-rw-r--r--MediaBrowser.Providers/Music/FanArtAlbumProvider.cs13
-rw-r--r--MediaBrowser.Providers/Music/FanArtArtistProvider.cs7
-rw-r--r--MediaBrowser.Providers/Music/LastfmAlbumProvider.cs6
-rw-r--r--MediaBrowser.Providers/TV/FanArtSeasonProvider.cs7
-rw-r--r--MediaBrowser.Providers/TV/FanartSeriesProvider.cs7
-rw-r--r--MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs5
-rw-r--r--MediaBrowser.Providers/TV/TvdbSeriesProvider.cs7
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;
}