diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-06 22:10:13 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-06 22:10:13 -0500 |
| commit | b1713a16cdac471f7921b0fa5706ace6a368e140 (patch) | |
| tree | f0bbaebcb72fa984ec502e0c5b10ee75f2447612 /MediaBrowser.Providers | |
| parent | 57c92fa948bdcefa6b224094ca21f04a8cde6737 (diff) | |
switch to generic lookup type
Diffstat (limited to 'MediaBrowser.Providers')
46 files changed, 133 insertions, 140 deletions
diff --git a/MediaBrowser.Providers/AdultVideos/AdultVideoMetadataService.cs b/MediaBrowser.Providers/AdultVideos/AdultVideoMetadataService.cs index 23f370974..4a713e735 100644 --- a/MediaBrowser.Providers/AdultVideos/AdultVideoMetadataService.cs +++ b/MediaBrowser.Providers/AdultVideos/AdultVideoMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.AdultVideos { - class AdultVideoMetadataService : MetadataService<AdultVideo, ItemId> + class AdultVideoMetadataService : MetadataService<AdultVideo, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/BaseXmlProvider.cs b/MediaBrowser.Providers/BaseXmlProvider.cs index 521198e96..c0629392d 100644 --- a/MediaBrowser.Providers/BaseXmlProvider.cs +++ b/MediaBrowser.Providers/BaseXmlProvider.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; using System; using System.IO; @@ -64,7 +65,7 @@ namespace MediaBrowser.Providers return false; } - return FileSystem.GetLastWriteTimeUtc(file) > date; + return file.Exists && FileSystem.GetLastWriteTimeUtc(file) > date; } public string Name diff --git a/MediaBrowser.Providers/Books/BookMetadataService.cs b/MediaBrowser.Providers/Books/BookMetadataService.cs index 6a06e3c8c..c314b0a08 100644 --- a/MediaBrowser.Providers/Books/BookMetadataService.cs +++ b/MediaBrowser.Providers/Books/BookMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Books { - public class BookMetadataService : MetadataService<Book, ItemId> + public class BookMetadataService : MetadataService<Book, BookInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs index e4701a116..b1b5c7580 100644 --- a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs +++ b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs @@ -16,7 +16,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.BoxSets { - public class BoxSetMetadataService : MetadataService<BoxSet, ItemId> + public class BoxSetMetadataService : MetadataService<BoxSet, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; private readonly ILocalizationManager _iLocalizationManager; diff --git a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs index b04687350..8514c1932 100644 --- a/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs +++ b/MediaBrowser.Providers/BoxSets/MovieDbBoxSetProvider.cs @@ -17,7 +17,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.BoxSets { - public class MovieDbBoxSetProvider : IRemoteMetadataProvider<BoxSet> + public class MovieDbBoxSetProvider : IRemoteMetadataProvider<BoxSet, BoxSetInfo> { private readonly CultureInfo _enUs = new CultureInfo("en-US"); private const string GetCollectionInfo3 = @"http://api.themoviedb.org/3/collection/{0}?api_key={1}&append_to_response=images"; @@ -38,7 +38,7 @@ namespace MediaBrowser.Providers.BoxSets Current = this; } - public async Task<MetadataResult<BoxSet>> GetMetadata(ItemId id, CancellationToken cancellationToken) + public async Task<MetadataResult<BoxSet>> GetMetadata(BoxSetInfo id, CancellationToken cancellationToken) { var tmdbId = id.GetProviderId(MetadataProviders.Tmdb); @@ -188,7 +188,7 @@ namespace MediaBrowser.Providers.BoxSets return DownloadInfo(tmdbId, preferredMetadataLanguage, cancellationToken); } - private Task<string> GetTmdbId(ItemId id, CancellationToken cancellationToken) + private Task<string> GetTmdbId(ItemLookupInfo id, CancellationToken cancellationToken) { return new MovieDbSearch(_logger, _json).FindCollectionId(id, cancellationToken); } diff --git a/MediaBrowser.Providers/Folders/FolderMetadataService.cs b/MediaBrowser.Providers/Folders/FolderMetadataService.cs index cc688d91a..5ce23aa76 100644 --- a/MediaBrowser.Providers/Folders/FolderMetadataService.cs +++ b/MediaBrowser.Providers/Folders/FolderMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Folders { - public class FolderMetadataService : MetadataService<Folder, ItemId> + public class FolderMetadataService : MetadataService<Folder, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs b/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs index 2e0e21a46..0f2862846 100644 --- a/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs +++ b/MediaBrowser.Providers/GameGenres/GameGenreMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.GameGenres { - public class GameGenreMetadataService : MetadataService<GameGenre, ItemId> + public class GameGenreMetadataService : MetadataService<GameGenre, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Games/GameMetadataService.cs b/MediaBrowser.Providers/Games/GameMetadataService.cs index 8ca34eb05..3a786385b 100644 --- a/MediaBrowser.Providers/Games/GameMetadataService.cs +++ b/MediaBrowser.Providers/Games/GameMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Games { - public class GameMetadataService : MetadataService<Game, GameId> + public class GameMetadataService : MetadataService<Game, GameInfo> { private readonly ILibraryManager _libraryManager; @@ -44,14 +44,5 @@ namespace MediaBrowser.Providers.Games { return _libraryManager.UpdateItem(item, reason, cancellationToken); } - - protected override GameId GetId(Game item) - { - var id = base.GetId(item); - - id.GameSystem = item.GameSystem; - - return id; - } } } diff --git a/MediaBrowser.Providers/Games/GameSystemMetadataService.cs b/MediaBrowser.Providers/Games/GameSystemMetadataService.cs index 6dd1b1bbc..9fb539d98 100644 --- a/MediaBrowser.Providers/Games/GameSystemMetadataService.cs +++ b/MediaBrowser.Providers/Games/GameSystemMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Games { - public class GameSystemMetadataService : MetadataService<GameSystem, GameSystemId> + public class GameSystemMetadataService : MetadataService<GameSystem, GameSystemInfo> { private readonly ILibraryManager _libraryManager; @@ -44,14 +44,5 @@ namespace MediaBrowser.Providers.Games { return _libraryManager.UpdateItem(item, reason, cancellationToken); } - - protected override GameSystemId GetId(GameSystem item) - { - var id = base.GetId(item); - - id.Path = item.Path; - - return id; - } } } diff --git a/MediaBrowser.Providers/Genres/GenreMetadataService.cs b/MediaBrowser.Providers/Genres/GenreMetadataService.cs index da88457bd..199f79baf 100644 --- a/MediaBrowser.Providers/Genres/GenreMetadataService.cs +++ b/MediaBrowser.Providers/Genres/GenreMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Genres { - public class GenreMetadataService : MetadataService<Genre, ItemId> + public class GenreMetadataService : MetadataService<Genre, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs b/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs index 01adb3ac3..fecee3ae2 100644 --- a/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs +++ b/MediaBrowser.Providers/LiveTv/ChannelMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.LiveTv { - public class ChannelMetadataService : MetadataService<LiveTvChannel, ItemId> + public class ChannelMetadataService : MetadataService<LiveTvChannel, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs b/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs index 037fedd79..e6f020323 100644 --- a/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs +++ b/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.LiveTv { - public class ProgramMetadataService : MetadataService<LiveTvProgram, ItemId> + public class ProgramMetadataService : MetadataService<LiveTvProgram, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 2517740de..bf186acc1 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -16,8 +16,8 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Manager { public abstract class MetadataService<TItemType, TIdType> : IMetadataService - where TItemType : IHasMetadata, new() - where TIdType : ItemId, new() + where TItemType : IHasMetadata, IHasLookupInfo<TIdType>, new() + where TIdType : ItemLookupInfo, new() { protected readonly IServerConfigurationManager ServerConfigurationManager; protected readonly ILogger Logger; @@ -238,27 +238,6 @@ namespace MediaBrowser.Providers.Manager protected abstract Task SaveItem(TItemType item, ItemUpdateType reason, CancellationToken cancellationToken); - protected virtual TIdType GetId(TItemType item) - { - var id = new TIdType - { - MetadataCountryCode = item.GetPreferredMetadataCountryCode(), - MetadataLanguage = item.GetPreferredMetadataLanguage(), - Name = item.Name, - ProviderIds = item.ProviderIds - }; - - var baseItem = item as BaseItem; - - if (baseItem != null) - { - id.IndexNumber = baseItem.IndexNumber; - id.ParentIndexNumber = baseItem.ParentIndexNumber; - } - - return id; - } - public bool CanRefresh(IHasMetadata item) { return item is TItemType; @@ -278,7 +257,7 @@ namespace MediaBrowser.Providers.Manager // If replacing all metadata, run internet providers first if (options.ReplaceAllMetadata) { - await ExecuteRemoteProviders(item, temp, providers.OfType<IRemoteMetadataProvider<TItemType>>(), refreshResult, cancellationToken).ConfigureAwait(false); + await ExecuteRemoteProviders(item, temp, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), refreshResult, cancellationToken).ConfigureAwait(false); } var hasLocalMetadata = false; @@ -326,7 +305,7 @@ namespace MediaBrowser.Providers.Manager if (!options.ReplaceAllMetadata && !hasLocalMetadata) { - await ExecuteRemoteProviders(item, temp, providers.OfType<IRemoteMetadataProvider<TItemType>>(), refreshResult, cancellationToken).ConfigureAwait(false); + await ExecuteRemoteProviders(item, temp, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), refreshResult, cancellationToken).ConfigureAwait(false); } if (refreshResult.UpdateType > ItemUpdateType.Unspecified) @@ -367,14 +346,16 @@ namespace MediaBrowser.Providers.Manager return new TItemType(); } - private async Task ExecuteRemoteProviders(TItemType item, TItemType temp, IEnumerable<IRemoteMetadataProvider<TItemType>> providers, RefreshResult refreshResult, CancellationToken cancellationToken) + private async Task ExecuteRemoteProviders(TItemType item, TItemType temp, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, RefreshResult refreshResult, CancellationToken cancellationToken) { - var id = GetId(item); + TIdType id = null; foreach (var provider in providers) { Logger.Debug("Running {0} for {1}", provider.GetType().Name, item.Path ?? item.Name); + id = id ?? item.GetLookupInfo(); + try { var result = await provider.GetMetadata(id, cancellationToken).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 4bd9fc530..8e459bdc6 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -93,6 +93,7 @@ <Compile Include="MediaInfo\FFProbeHelpers.cs" /> <Compile Include="MediaInfo\FFProbeProvider.cs" /> <Compile Include="MediaInfo\FFProbeVideoInfo.cs" /> + <Compile Include="Movies\MovieDbTrailerProvider.cs" /> <Compile Include="Movies\TrailerMetadataService.cs" /> <Compile Include="Movies\GenericMovieDbInfo.cs" /> <Compile Include="Movies\MovieDbSearch.cs" /> @@ -115,6 +116,7 @@ <Compile Include="Music\ArtistMetadataService.cs" /> <Compile Include="Music\AudioMetadataService.cs" /> <Compile Include="Music\LastfmArtistProvider.cs" /> + <Compile Include="Music\MovieDbMusicVideoProvider.cs" /> <Compile Include="Music\MusicBrainzArtistProvider.cs" /> <Compile Include="Music\MusicVideoMetadataService.cs" /> <Compile Include="Music\MusicVideoXmlProvider.cs" /> diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs index d06d12a49..ebed0c203 100644 --- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs +++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs @@ -12,6 +12,7 @@ using System.Linq; using System.Net; using System.Threading; using System.Threading.Tasks; +using PersonInfo = MediaBrowser.Controller.Entities.PersonInfo; namespace MediaBrowser.Providers.Movies { @@ -29,7 +30,7 @@ namespace MediaBrowser.Providers.Movies _jsonSerializer = jsonSerializer; } - public async Task<MetadataResult<T>> GetMetadata(ItemId itemId, CancellationToken cancellationToken) + public async Task<MetadataResult<T>> GetMetadata(ItemLookupInfo itemId, CancellationToken cancellationToken) { var result = new MetadataResult<T>(); diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs index 33092b6c9..a9526787c 100644 --- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs @@ -19,7 +19,7 @@ namespace MediaBrowser.Providers.Movies /// <summary> /// Class MovieDbProvider /// </summary> - public class MovieDbProvider : IRemoteMetadataProvider<Movie>, IDisposable, IHasChangeMonitor + public class MovieDbProvider : IRemoteMetadataProvider<Movie, MovieInfo>, IDisposable, IHasChangeMonitor { internal readonly SemaphoreSlim MovieDbResourcePool = new SemaphoreSlim(1, 1); @@ -41,12 +41,12 @@ namespace MediaBrowser.Providers.Movies Current = this; } - public Task<MetadataResult<Movie>> GetMetadata(ItemId id, CancellationToken cancellationToken) + public Task<MetadataResult<Movie>> GetMetadata(MovieInfo info, CancellationToken cancellationToken) { - return GetItemMetadata<Movie>(id, cancellationToken); + return GetItemMetadata<Movie>(info, cancellationToken); } - public Task<MetadataResult<T>> GetItemMetadata<T>(ItemId id, CancellationToken cancellationToken) + public Task<MetadataResult<T>> GetItemMetadata<T>(ItemLookupInfo id, CancellationToken cancellationToken) where T : Video, new () { var movieDb = new GenericMovieDbInfo<T>(_logger, _jsonSerializer); diff --git a/MediaBrowser.Providers/Movies/MovieDbSearch.cs b/MediaBrowser.Providers/Movies/MovieDbSearch.cs index d4c6c6ff8..a15e03aac 100644 --- a/MediaBrowser.Providers/Movies/MovieDbSearch.cs +++ b/MediaBrowser.Providers/Movies/MovieDbSearch.cs @@ -29,17 +29,17 @@ namespace MediaBrowser.Providers.Movies _json = json; } - public Task<string> FindMovieId(ItemId idInfo, CancellationToken cancellationToken) + public Task<string> FindMovieId(ItemLookupInfo idInfo, CancellationToken cancellationToken) { return FindId(idInfo, "movie", cancellationToken); } - public Task<string> FindCollectionId(ItemId idInfo, CancellationToken cancellationToken) + public Task<string> FindCollectionId(ItemLookupInfo idInfo, CancellationToken cancellationToken) { return FindId(idInfo, "collection", cancellationToken); } - private async Task<string> FindId(ItemId idInfo, string searchType, CancellationToken cancellationToken) + private async Task<string> FindId(ItemLookupInfo idInfo, string searchType, CancellationToken cancellationToken) { int? yearInName; var name = idInfo.Name; diff --git a/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs b/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs new file mode 100644 index 000000000..df786cffc --- /dev/null +++ b/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs @@ -0,0 +1,26 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Providers; +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Providers.Movies +{ + public class MovieDbTrailerProvider : IRemoteMetadataProvider<Trailer, TrailerInfo>, IHasChangeMonitor + { + public Task<MetadataResult<Trailer>> GetMetadata(TrailerInfo info, CancellationToken cancellationToken) + { + return MovieDbProvider.Current.GetItemMetadata<Trailer>(info, cancellationToken); + } + + public string Name + { + get { return MovieDbProvider.Current.Name; } + } + + public bool HasChanged(IHasMetadata item, DateTime date) + { + return MovieDbProvider.Current.HasChanged(item, date); + } + } +} diff --git a/MediaBrowser.Providers/Movies/MovieMetadataService.cs b/MediaBrowser.Providers/Movies/MovieMetadataService.cs index cc513b395..674b36422 100644 --- a/MediaBrowser.Providers/Movies/MovieMetadataService.cs +++ b/MediaBrowser.Providers/Movies/MovieMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Movies { - public class MovieMetadataService : MetadataService<Movie, ItemId> + public class MovieMetadataService : MetadataService<Movie, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Movies/TrailerMetadataService.cs b/MediaBrowser.Providers/Movies/TrailerMetadataService.cs index ad9cf5231..620799a18 100644 --- a/MediaBrowser.Providers/Movies/TrailerMetadataService.cs +++ b/MediaBrowser.Providers/Movies/TrailerMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Movies { - public class TrailerMetadataService : MetadataService<Trailer, ItemId> + public class TrailerMetadataService : MetadataService<Trailer, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs index a0e2cc81b..d4bbe5a28 100644 --- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs +++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs @@ -14,7 +14,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Music { - public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumId> + public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumInfo> { private readonly ILibraryManager _libraryManager; @@ -102,23 +102,6 @@ namespace MediaBrowser.Providers.Music return updateType; } - protected override AlbumId GetId(MusicAlbum item) - { - var id = base.GetId(item); - - id.AlbumArtist = item.AlbumArtist; - - var artist = item.Parents.OfType<MusicArtist>().FirstOrDefault(); - - if (artist != null) - { - id.ArtistProviderIds = artist.ProviderIds; - id.AlbumArtist = id.AlbumArtist ?? artist.Name; - } - - return id; - } - private ItemUpdateType SetAlbumArtistFromSongs(MusicAlbum item, IEnumerable<Audio> songs) { var updateType = ItemUpdateType.Unspecified; diff --git a/MediaBrowser.Providers/Music/ArtistMetadataService.cs b/MediaBrowser.Providers/Music/ArtistMetadataService.cs index 1642cdfaa..9cc4406ac 100644 --- a/MediaBrowser.Providers/Music/ArtistMetadataService.cs +++ b/MediaBrowser.Providers/Music/ArtistMetadataService.cs @@ -14,7 +14,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Music { - public class ArtistMetadataService : MetadataService<MusicArtist, ItemId> + public class ArtistMetadataService : MetadataService<MusicArtist, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Music/AudioMetadataService.cs b/MediaBrowser.Providers/Music/AudioMetadataService.cs index c056fdabf..408f499dc 100644 --- a/MediaBrowser.Providers/Music/AudioMetadataService.cs +++ b/MediaBrowser.Providers/Music/AudioMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Music { - public class AudioMetadataService : MetadataService<Audio, ItemId> + public class AudioMetadataService : MetadataService<Audio, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs b/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs index f0663cee0..88be04a7e 100644 --- a/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/LastfmAlbumProvider.cs @@ -14,7 +14,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Music { - public class LastfmAlbumProvider : IRemoteMetadataProvider<MusicAlbum>, IHasOrder + public class LastfmAlbumProvider : IRemoteMetadataProvider<MusicAlbum, AlbumInfo>, IHasOrder { private readonly IJsonSerializer _json; private readonly IHttpClient _httpClient; @@ -30,11 +30,11 @@ namespace MediaBrowser.Providers.Music _logger = logger; } - public async Task<MetadataResult<MusicAlbum>> GetMetadata(ItemId id, CancellationToken cancellationToken) + public async Task<MetadataResult<MusicAlbum>> GetMetadata(AlbumInfo id, CancellationToken cancellationToken) { var result = new MetadataResult<MusicAlbum>(); - var lastFmData = await GetAlbumResult((AlbumId)id, cancellationToken).ConfigureAwait(false); + var lastFmData = await GetAlbumResult(id, cancellationToken).ConfigureAwait(false); if (lastFmData != null && lastFmData.album != null) { @@ -45,7 +45,7 @@ namespace MediaBrowser.Providers.Music return result; } - private async Task<LastfmGetAlbumResult> GetAlbumResult(AlbumId item, CancellationToken cancellationToken) + private async Task<LastfmGetAlbumResult> GetAlbumResult(AlbumInfo item, CancellationToken cancellationToken) { // Try album release Id if (!string.IsNullOrEmpty(item.GetProviderId(MetadataProviders.Musicbrainz))) diff --git a/MediaBrowser.Providers/Music/LastfmArtistProvider.cs b/MediaBrowser.Providers/Music/LastfmArtistProvider.cs index 2ae329c45..28a2935c3 100644 --- a/MediaBrowser.Providers/Music/LastfmArtistProvider.cs +++ b/MediaBrowser.Providers/Music/LastfmArtistProvider.cs @@ -17,7 +17,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Music { - public class LastfmArtistProvider : IRemoteMetadataProvider<MusicArtist>, IHasOrder + public class LastfmArtistProvider : IRemoteMetadataProvider<MusicArtist, ArtistInfo>, IHasOrder { private readonly IJsonSerializer _json; private readonly IHttpClient _httpClient; @@ -38,7 +38,7 @@ namespace MediaBrowser.Providers.Music _logger = logger; } - public async Task<MetadataResult<MusicArtist>> GetMetadata(ItemId id, CancellationToken cancellationToken) + public async Task<MetadataResult<MusicArtist>> GetMetadata(ArtistInfo id, CancellationToken cancellationToken) { var result = new MetadataResult<MusicArtist>(); diff --git a/MediaBrowser.Providers/Music/MovieDbMusicVideoProvider.cs b/MediaBrowser.Providers/Music/MovieDbMusicVideoProvider.cs new file mode 100644 index 000000000..32101260b --- /dev/null +++ b/MediaBrowser.Providers/Music/MovieDbMusicVideoProvider.cs @@ -0,0 +1,27 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Providers.Movies; +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Providers.Music +{ + public class MovieDbMusicVideoProvider : IRemoteMetadataProvider<MusicVideo, MusicVideoInfo>, IHasChangeMonitor + { + public Task<MetadataResult<MusicVideo>> GetMetadata(MusicVideoInfo info, CancellationToken cancellationToken) + { + return MovieDbProvider.Current.GetItemMetadata<MusicVideo>(info, cancellationToken); + } + + public string Name + { + get { return MovieDbProvider.Current.Name; } + } + + public bool HasChanged(IHasMetadata item, DateTime date) + { + return MovieDbProvider.Current.HasChanged(item, date); + } + } +} diff --git a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs index f5cf49f74..4ef5f3d46 100644 --- a/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs +++ b/MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs @@ -13,7 +13,7 @@ using System.Xml; namespace MediaBrowser.Providers.Music { - public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum>, IHasOrder + public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum, AlbumInfo>, IHasOrder { internal static MusicBrainzAlbumProvider Current; @@ -27,9 +27,9 @@ namespace MediaBrowser.Providers.Music Current = this; } - public async Task<MetadataResult<MusicAlbum>> GetMetadata(ItemId id, CancellationToken cancellationToken) + public async Task<MetadataResult<MusicAlbum>> GetMetadata(AlbumInfo id, CancellationToken cancellationToken) { - var albumId = (AlbumId)id; + var albumId = id; var releaseId = albumId.GetProviderId(MetadataProviders.Musicbrainz); var releaseGroupId = albumId.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup); diff --git a/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs b/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs index 4cc408a00..d59ff0609 100644 --- a/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs +++ b/MediaBrowser.Providers/Music/MusicBrainzArtistProvider.cs @@ -12,9 +12,9 @@ using System.Xml; namespace MediaBrowser.Providers.Music { - public class MusicBrainzArtistProvider : IRemoteMetadataProvider<MusicArtist> + public class MusicBrainzArtistProvider : IRemoteMetadataProvider<MusicArtist, ArtistInfo> { - public async Task<MetadataResult<MusicArtist>> GetMetadata(ItemId id, CancellationToken cancellationToken) + public async Task<MetadataResult<MusicArtist>> GetMetadata(ArtistInfo id, CancellationToken cancellationToken) { var result = new MetadataResult<MusicArtist>(); @@ -39,7 +39,7 @@ namespace MediaBrowser.Providers.Music /// <param name="item">The item.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{System.String}.</returns> - private async Task<string> FindId(ItemId item, CancellationToken cancellationToken) + private async Task<string> FindId(ItemLookupInfo item, CancellationToken cancellationToken) { // They seem to throw bad request failures on any term with a slash var nameToSearch = item.Name.Replace('/', ' '); diff --git a/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs b/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs index 6dd16819b..5b46cb6ba 100644 --- a/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs +++ b/MediaBrowser.Providers/Music/MusicVideoMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Music { - class MusicVideoMetadataService : MetadataService<MusicVideo, ItemId> + class MusicVideoMetadataService : MetadataService<MusicVideo, MusicVideoInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs b/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs index f64f30a27..09b069c73 100644 --- a/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs +++ b/MediaBrowser.Providers/MusicGenres/MusicGenreMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.MusicGenres { - public class MusicGenreMetadataService : MetadataService<MusicGenre, ItemId> + public class MusicGenreMetadataService : MetadataService<MusicGenre, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/People/MovieDbPersonProvider.cs b/MediaBrowser.Providers/People/MovieDbPersonProvider.cs index 15a54474b..e1c3221ee 100644 --- a/MediaBrowser.Providers/People/MovieDbPersonProvider.cs +++ b/MediaBrowser.Providers/People/MovieDbPersonProvider.cs @@ -18,7 +18,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.People { - public class MovieDbPersonProvider : IRemoteMetadataProvider<Person> + public class MovieDbPersonProvider : IRemoteMetadataProvider<Person, PersonLookupInfo> { const string DataFileName = "info.json"; @@ -40,8 +40,8 @@ namespace MediaBrowser.Providers.People { get { return "TheMovieDb"; } } - - public async Task<MetadataResult<Person>> GetMetadata(ItemId id, CancellationToken cancellationToken) + + public async Task<MetadataResult<Person>> GetMetadata(PersonLookupInfo id, CancellationToken cancellationToken) { var tmdbId = id.GetProviderId(MetadataProviders.Tmdb); diff --git a/MediaBrowser.Providers/People/PersonMetadataService.cs b/MediaBrowser.Providers/People/PersonMetadataService.cs index b3d619918..de192ea2f 100644 --- a/MediaBrowser.Providers/People/PersonMetadataService.cs +++ b/MediaBrowser.Providers/People/PersonMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.People { - public class PersonMetadataService : MetadataService<Person, ItemId> + public class PersonMetadataService : MetadataService<Person, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs b/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs index bc51a5286..5d6193491 100644 --- a/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; diff --git a/MediaBrowser.Providers/Savers/ChannelXmlSaver.cs b/MediaBrowser.Providers/Savers/ChannelXmlSaver.cs index 0c857c5ec..36ee0dcc6 100644 --- a/MediaBrowser.Providers/Savers/ChannelXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/ChannelXmlSaver.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Providers; using System.Collections.Generic; diff --git a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs index e60acaa38..f662c6cbf 100644 --- a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; diff --git a/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs b/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs index 5773fc1de..6bb2855f0 100644 --- a/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; diff --git a/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs b/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs index b76167868..946c49779 100644 --- a/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; diff --git a/MediaBrowser.Providers/Studios/StudioMetadataService.cs b/MediaBrowser.Providers/Studios/StudioMetadataService.cs index 8d5184fc2..5f39031b2 100644 --- a/MediaBrowser.Providers/Studios/StudioMetadataService.cs +++ b/MediaBrowser.Providers/Studios/StudioMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Studios { - public class StudioMetadataService : MetadataService<Studio, ItemId> + public class StudioMetadataService : MetadataService<Studio, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/TV/EpisodeMetadataService.cs b/MediaBrowser.Providers/TV/EpisodeMetadataService.cs index ddb89bd42..039a4750d 100644 --- a/MediaBrowser.Providers/TV/EpisodeMetadataService.cs +++ b/MediaBrowser.Providers/TV/EpisodeMetadataService.cs @@ -1,5 +1,4 @@ -using System.IO; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; @@ -8,12 +7,13 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; using System.Collections.Generic; +using System.IO; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Providers.TV { - public class EpisodeMetadataService : MetadataService<Episode, EpisodeId> + public class EpisodeMetadataService : MetadataService<Episode, EpisodeInfo> { private readonly ILibraryManager _libraryManager; @@ -76,22 +76,6 @@ namespace MediaBrowser.Providers.TV return _libraryManager.UpdateItem(item, reason, cancellationToken); } - protected override EpisodeId GetId(Episode item) - { - var id = base.GetId(item); - - var series = item.Series; - - if (series != null) - { - id.SeriesProviderIds = series.ProviderIds; - } - - id.IndexNumberEnd = item.IndexNumberEnd; - - return id; - } - protected override ItemUpdateType BeforeMetadataRefresh(Episode item) { var updateType = base.BeforeMetadataRefresh(item); diff --git a/MediaBrowser.Providers/TV/SeasonMetadataService.cs b/MediaBrowser.Providers/TV/SeasonMetadataService.cs index da276221b..5173e03e4 100644 --- a/MediaBrowser.Providers/TV/SeasonMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeasonMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.TV { - public class SeasonMetadataService : MetadataService<Season, ItemId> + public class SeasonMetadataService : MetadataService<Season, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs index afe2abf2b..b858c3784 100644 --- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs @@ -13,7 +13,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.TV { - public class SeriesMetadataService : MetadataService<Series, ItemId> + public class SeriesMetadataService : MetadataService<Series, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; @@ -59,7 +59,6 @@ namespace MediaBrowser.Providers.TV if (dateLastEpisodeAdded != item.DateLastEpisodeAdded) { - Logger.Debug("DateLastEpisodeAdded changed for {0}", item.Path); updateType = updateType | ItemUpdateType.MetadataImport; } diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs index 657cd0b2e..41e375bac 100644 --- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs @@ -16,6 +16,7 @@ using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Xml; +using PersonInfo = MediaBrowser.Controller.Entities.PersonInfo; namespace MediaBrowser.Providers.TV { @@ -23,7 +24,7 @@ namespace MediaBrowser.Providers.TV /// <summary> /// Class RemoteEpisodeProvider /// </summary> - class TvdbEpisodeProvider : IRemoteMetadataProvider<Episode>, IHasChangeMonitor + class TvdbEpisodeProvider : IRemoteMetadataProvider<Episode, EpisodeInfo>, IHasChangeMonitor { internal static TvdbEpisodeProvider Current; private readonly IFileSystem _fileSystem; @@ -41,9 +42,9 @@ namespace MediaBrowser.Providers.TV get { return "TheTVDB"; } } - public Task<MetadataResult<Episode>> GetMetadata(ItemId id, CancellationToken cancellationToken) + public Task<MetadataResult<Episode>> GetMetadata(EpisodeInfo id, CancellationToken cancellationToken) { - var episodeId = (EpisodeId)id; + var episodeId = id; string seriesTvdbId; episodeId.SeriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out seriesTvdbId); @@ -172,7 +173,7 @@ namespace MediaBrowser.Providers.TV /// <param name="seriesDataPath">The series data path.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{System.Boolean}.</returns> - private Episode FetchEpisodeData(EpisodeId id, string seriesDataPath, CancellationToken cancellationToken) + private Episode FetchEpisodeData(EpisodeInfo id, string seriesDataPath, CancellationToken cancellationToken) { if (id.IndexNumber == null) { diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs index 306c3e295..57e518e85 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs @@ -19,10 +19,11 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using System.Xml; +using PersonInfo = MediaBrowser.Controller.Entities.PersonInfo; namespace MediaBrowser.Providers.TV { - public class TvdbSeriesProvider : IRemoteMetadataProvider<Series>, IHasChangeMonitor + public class TvdbSeriesProvider : IRemoteMetadataProvider<Series, SeriesInfo>, IHasChangeMonitor { internal readonly SemaphoreSlim TvDbResourcePool = new SemaphoreSlim(2, 2); internal static TvdbSeriesProvider Current { get; private set; } @@ -47,7 +48,7 @@ namespace MediaBrowser.Providers.TV private const string SeriesQuery = "GetSeries.php?seriesname={0}"; private const string SeriesGetZip = "http://www.thetvdb.com/api/{0}/series/{1}/all/{2}.zip"; - public async Task<MetadataResult<Series>> GetMetadata(ItemId itemId, CancellationToken cancellationToken) + public async Task<MetadataResult<Series>> GetMetadata(SeriesInfo itemId, CancellationToken cancellationToken) { var result = new MetadataResult<Series>(); diff --git a/MediaBrowser.Providers/Users/UserMetadataService.cs b/MediaBrowser.Providers/Users/UserMetadataService.cs index 9f0b77dca..dac0c262f 100644 --- a/MediaBrowser.Providers/Users/UserMetadataService.cs +++ b/MediaBrowser.Providers/Users/UserMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Users { - public class UserMetadataService : MetadataService<User, ItemId> + public class UserMetadataService : MetadataService<User, ItemLookupInfo> { private readonly IUserManager _userManager; diff --git a/MediaBrowser.Providers/Videos/VideoMetadataService.cs b/MediaBrowser.Providers/Videos/VideoMetadataService.cs index 9aa4ba138..cce9dc6f0 100644 --- a/MediaBrowser.Providers/Videos/VideoMetadataService.cs +++ b/MediaBrowser.Providers/Videos/VideoMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Videos { - public class VideoMetadataService : MetadataService<Video, ItemId> + public class VideoMetadataService : MetadataService<Video, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; diff --git a/MediaBrowser.Providers/Years/YearMetadataService.cs b/MediaBrowser.Providers/Years/YearMetadataService.cs index 01e511177..d40b8cb65 100644 --- a/MediaBrowser.Providers/Years/YearMetadataService.cs +++ b/MediaBrowser.Providers/Years/YearMetadataService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Years { - public class YearMetadataService : MetadataService<Year, ItemId> + public class YearMetadataService : MetadataService<Year, ItemLookupInfo> { private readonly ILibraryManager _libraryManager; |
