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 | |
| parent | 57c92fa948bdcefa6b224094ca21f04a8cde6737 (diff) | |
switch to generic lookup type
74 files changed, 458 insertions, 202 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 6f4a0c4d2..139d8c6fb 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Configuration; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; using System; using System.Collections.Generic; using System.Linq; @@ -9,7 +10,7 @@ namespace MediaBrowser.Controller.Entities.Audio /// <summary> /// Class Audio /// </summary> - public class Audio : BaseItem, IHasMediaStreams, IHasAlbumArtist, IHasArtist, IHasMusicGenres + public class Audio : BaseItem, IHasMediaStreams, IHasAlbumArtist, IHasArtist, IHasMusicGenres, IHasLookupInfo<SongInfo> { public Audio() { @@ -127,5 +128,16 @@ namespace MediaBrowser.Controller.Entities.Audio { return config.BlockUnratedMusic; } + + public SongInfo GetLookupInfo() + { + var info = GetItemLookupInfo<SongInfo>(); + + info.AlbumArtist = AlbumArtist; + info.Album = Album; + info.Artists = Artists; + + return info; + } } } diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index b3bf0d2b6..6dda902c9 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Configuration; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; @@ -10,10 +11,10 @@ namespace MediaBrowser.Controller.Entities.Audio /// <summary> /// Class MusicAlbum /// </summary> - public class MusicAlbum : Folder, IHasAlbumArtist, IHasArtist, IHasMusicGenres, IHasTags + public class MusicAlbum : Folder, IHasAlbumArtist, IHasArtist, IHasMusicGenres, IHasTags, IHasLookupInfo<AlbumInfo> { public List<Guid> SoundtrackIds { get; set; } - + public MusicAlbum() { Artists = new List<string>(); @@ -112,6 +113,26 @@ namespace MediaBrowser.Controller.Entities.Audio { return config.BlockUnratedMusic; } + + public AlbumInfo GetLookupInfo() + { + var id = GetItemLookupInfo<AlbumInfo>(); + + id.AlbumArtist = AlbumArtist; + + var artist = Parents.OfType<MusicArtist>().FirstOrDefault(); + + if (artist != null) + { + id.ArtistProviderIds = artist.ProviderIds; + } + + id.SongInfos = RecursiveChildren.OfType<Audio>() + .Select(i => i.GetLookupInfo()) + .ToList(); + + return id; + } } public class MusicAlbumDisc : Folder diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index f7dbb43c0..570a011c2 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -15,7 +15,7 @@ namespace MediaBrowser.Controller.Entities.Audio /// <summary> /// Class MusicArtist /// </summary> - public class MusicArtist : Folder, IMetadataContainer, IItemByName, IHasMusicGenres, IHasDualAccess, IHasTags, IHasProductionLocations + public class MusicArtist : Folder, IMetadataContainer, IItemByName, IHasMusicGenres, IHasDualAccess, IHasTags, IHasProductionLocations, IHasLookupInfo<ArtistInfo> { [IgnoreDataMember] public List<ItemByNameCounts> UserItemCountList { get; set; } @@ -201,5 +201,16 @@ namespace MediaBrowser.Controller.Entities.Audio progress.Report(100); } + + public ArtistInfo GetLookupInfo() + { + var info = GetItemLookupInfo<ArtistInfo>(); + + info.SongInfos = RecursiveChildren.OfType<Audio>() + .Select(i => i.GetLookupInfo()) + .ToList(); + + return info; + } } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index d878619b8..1962921e7 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -21,7 +21,7 @@ namespace MediaBrowser.Controller.Entities /// <summary> /// Class BaseItem /// </summary> - public abstract class BaseItem : IHasProviderIds, ILibraryItem, IHasImages, IHasUserData, IHasMetadata + public abstract class BaseItem : IHasProviderIds, ILibraryItem, IHasImages, IHasUserData, IHasMetadata, IHasLookupInfo<ItemLookupInfo> { protected BaseItem() { @@ -236,7 +236,7 @@ namespace MediaBrowser.Controller.Entities { var locationType = LocationType; - if (locationType != LocationType.Remote && locationType != LocationType.Virtual) + if (locationType == LocationType.Remote || locationType == LocationType.Virtual) { return new string[] { }; } @@ -610,7 +610,7 @@ namespace MediaBrowser.Controller.Entities localTrailersChanged = await RefreshLocalTrailers(hasTrailers, options, fileSystemChildren, cancellationToken).ConfigureAwait(false); } } - + if (themeSongsChanged || themeVideosChanged || localTrailersChanged) { options.ForceSave = true; @@ -1455,5 +1455,24 @@ namespace MediaBrowser.Controller.Entities return userdata == null || !userdata.Played; } + + ItemLookupInfo IHasLookupInfo<ItemLookupInfo>.GetLookupInfo() + { + return GetItemLookupInfo<ItemLookupInfo>(); + } + + protected T GetItemLookupInfo<T>() + where T : ItemLookupInfo, new() + { + return new T + { + MetadataCountryCode = GetPreferredMetadataCountryCode(), + MetadataLanguage = GetPreferredMetadataLanguage(), + Name = Name, + ProviderIds = ProviderIds, + IndexNumber = IndexNumber, + ParentIndexNumber = ParentIndexNumber + }; + } } } diff --git a/MediaBrowser.Controller/Entities/Book.cs b/MediaBrowser.Controller/Entities/Book.cs index 28ccf687c..211067f9d 100644 --- a/MediaBrowser.Controller/Entities/Book.cs +++ b/MediaBrowser.Controller/Entities/Book.cs @@ -1,9 +1,10 @@ -using MediaBrowser.Model.Configuration; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; using System.Collections.Generic; namespace MediaBrowser.Controller.Entities { - public class Book : BaseItem, IHasTags, IHasPreferredMetadataLanguage + public class Book : BaseItem, IHasTags, IHasPreferredMetadataLanguage, IHasLookupInfo<BookInfo> { public override string MediaType { @@ -38,5 +39,10 @@ namespace MediaBrowser.Controller.Entities { return config.BlockUnratedBooks; } + + public BookInfo GetLookupInfo() + { + return GetItemLookupInfo<BookInfo>(); + } } } diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs index 1b5176362..1e11bdbb3 100644 --- a/MediaBrowser.Controller/Entities/Game.cs +++ b/MediaBrowser.Controller/Entities/Game.cs @@ -1,11 +1,12 @@ -using MediaBrowser.Model.Configuration; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; namespace MediaBrowser.Controller.Entities { - public class Game : BaseItem, IHasSoundtracks, IHasTrailers, IHasThemeMedia, IHasTags, IHasScreenshots, IHasPreferredMetadataLanguage + public class Game : BaseItem, IHasSoundtracks, IHasTrailers, IHasThemeMedia, IHasTags, IHasScreenshots, IHasPreferredMetadataLanguage, IHasLookupInfo<GameInfo> { public List<Guid> SoundtrackIds { get; set; } @@ -115,5 +116,14 @@ namespace MediaBrowser.Controller.Entities { return config.BlockUnratedGames; } + + public GameInfo GetLookupInfo() + { + var id = GetItemLookupInfo<GameInfo>(); + + id.GameSystem = GameSystem; + + return id; + } } } diff --git a/MediaBrowser.Controller/Entities/GameSystem.cs b/MediaBrowser.Controller/Entities/GameSystem.cs index 69cb5e974..f2fec4397 100644 --- a/MediaBrowser.Controller/Entities/GameSystem.cs +++ b/MediaBrowser.Controller/Entities/GameSystem.cs @@ -1,4 +1,5 @@ using System.Runtime.Serialization; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using System; @@ -7,7 +8,7 @@ namespace MediaBrowser.Controller.Entities /// <summary> /// Class GameSystem /// </summary> - public class GameSystem : Folder + public class GameSystem : Folder, IHasLookupInfo<GameSystemInfo> { /// <summary> /// Return the id that should be used to key display prefs for this item. @@ -47,5 +48,14 @@ namespace MediaBrowser.Controller.Entities // Don't block. Determine by game return false; } + + public GameSystemInfo GetLookupInfo() + { + var id = GetItemLookupInfo<GameSystemInfo>(); + + id.Path = Path; + + return id; + } } } diff --git a/MediaBrowser.Controller/Providers/IHasMetadata.cs b/MediaBrowser.Controller/Entities/IHasMetadata.cs index 19ab00e68..6466e18ce 100644 --- a/MediaBrowser.Controller/Providers/IHasMetadata.cs +++ b/MediaBrowser.Controller/Entities/IHasMetadata.cs @@ -1,9 +1,8 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Entities; -using System; +using System; using System.Collections.Generic; +using MediaBrowser.Model.Entities; -namespace MediaBrowser.Controller.Providers +namespace MediaBrowser.Controller.Entities { /// <summary> /// Interface IHasMetadata diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index 19d0d6682..e5fdb7ee0 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -1,15 +1,20 @@ -using MediaBrowser.Model.Configuration; +using MediaBrowser.Common.Progress; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; using System; using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; namespace MediaBrowser.Controller.Entities.Movies { /// <summary> /// Class BoxSet /// </summary> - public class BoxSet : Folder, IHasTrailers, IHasTags, IHasKeywords, IHasPreferredMetadataLanguage, IHasDisplayOrder + public class BoxSet : Folder, IHasTrailers, IHasTags, IHasKeywords, IHasPreferredMetadataLanguage, IHasDisplayOrder, IHasLookupInfo<BoxSetInfo>, IMetadataContainer { public BoxSet() { @@ -74,5 +79,67 @@ namespace MediaBrowser.Controller.Entities.Movies // Default sorting return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending); } + + public BoxSetInfo GetLookupInfo() + { + return GetItemLookupInfo<BoxSetInfo>(); + } + + public async Task RefreshAllMetadata(MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken) + { + // Refresh bottom up, children first, then the boxset + // By then hopefully the movies within will have Tmdb collection values + var items = RecursiveChildren.ToList(); + + var totalItems = items.Count; + var percentages = new Dictionary<Guid, double>(totalItems); + + var tasks = new List<Task>(); + + // Refresh songs + foreach (var item in items) + { + if (tasks.Count > 3) + { + await Task.WhenAll(tasks).ConfigureAwait(false); + tasks.Clear(); + } + + cancellationToken.ThrowIfCancellationRequested(); + var innerProgress = new ActionableProgress<double>(); + + // Avoid implicitly captured closure + var currentChild = item; + innerProgress.RegisterAction(p => + { + lock (percentages) + { + percentages[currentChild.Id] = p / 100; + + var percent = percentages.Values.Sum(); + percent /= totalItems; + percent *= 100; + progress.Report(percent); + } + }); + + tasks.Add(RefreshItem(item, refreshOptions, innerProgress, cancellationToken)); + } + + await Task.WhenAll(tasks).ConfigureAwait(false); + tasks.Clear(); + + // Refresh current item + await RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); + + progress.Report(100); + } + + private async Task RefreshItem(BaseItem item, MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken) + { + await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false); + + progress.Report(100); + } } } diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index b3145e496..4d01c6a96 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -13,7 +13,7 @@ namespace MediaBrowser.Controller.Entities.Movies /// <summary> /// Class Movie /// </summary> - public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasBudget, IHasKeywords, IHasTrailers, IHasThemeMedia, IHasTaglines, IHasTags, IHasPreferredMetadataLanguage, IHasAwards, IHasMetascore + public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasBudget, IHasKeywords, IHasTrailers, IHasThemeMedia, IHasTaglines, IHasTags, IHasPreferredMetadataLanguage, IHasAwards, IHasMetascore, IHasLookupInfo<MovieInfo> { public List<Guid> SpecialFeatureIds { get; set; } @@ -166,5 +166,10 @@ namespace MediaBrowser.Controller.Entities.Movies { return config.BlockUnratedMovies; } + + public MovieInfo GetLookupInfo() + { + return GetItemLookupInfo<MovieInfo>(); + } } } diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs index d9eff8fbe..56cd71d49 100644 --- a/MediaBrowser.Controller/Entities/MusicVideo.cs +++ b/MediaBrowser.Controller/Entities/MusicVideo.cs @@ -1,11 +1,12 @@ using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using System; namespace MediaBrowser.Controller.Entities { - public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasBudget + public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasBudget, IHasLookupInfo<MusicVideoInfo> { /// <summary> /// Gets or sets the artist. @@ -54,5 +55,10 @@ namespace MediaBrowser.Controller.Entities { return config.BlockUnratedMusic; } + + public MusicVideoInfo GetLookupInfo() + { + return GetItemLookupInfo<MusicVideoInfo>(); + } } } diff --git a/MediaBrowser.Controller/Entities/Person.cs b/MediaBrowser.Controller/Entities/Person.cs index 832586ab9..acf750870 100644 --- a/MediaBrowser.Controller/Entities/Person.cs +++ b/MediaBrowser.Controller/Entities/Person.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Dto; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Dto; using System.Collections.Generic; using System.Runtime.Serialization; @@ -7,7 +8,7 @@ namespace MediaBrowser.Controller.Entities /// <summary> /// This is the full Person object that can be retrieved with all of it's data. /// </summary> - public class Person : BaseItem, IItemByName + public class Person : BaseItem, IItemByName, IHasLookupInfo<Providers.PersonLookupInfo> { public Person() { @@ -31,6 +32,11 @@ namespace MediaBrowser.Controller.Entities { return "Person-" + Name; } + + public Providers.PersonLookupInfo GetLookupInfo() + { + return GetItemLookupInfo<Providers.PersonLookupInfo>(); + } } /// <summary> diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs index c1535bde0..515f802e9 100644 --- a/MediaBrowser.Controller/Entities/TV/Episode.cs +++ b/MediaBrowser.Controller/Entities/TV/Episode.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Configuration; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; using System; using System.Collections.Generic; using System.Linq; @@ -9,7 +10,7 @@ namespace MediaBrowser.Controller.Entities.TV /// <summary> /// Class Episode /// </summary> - public class Episode : Video + public class Episode : Video, IHasLookupInfo<EpisodeInfo> { /// <summary> /// Gets the season in which it aired. @@ -41,7 +42,7 @@ namespace MediaBrowser.Controller.Entities.TV /// </summary> /// <value>The index number.</value> public int? IndexNumberEnd { get; set; } - + /// <summary> /// We want to group into series not show individually in an index /// </summary> @@ -233,5 +234,21 @@ namespace MediaBrowser.Controller.Entities.TV { return config.BlockUnratedSeries; } + + public EpisodeInfo GetLookupInfo() + { + var id = GetItemLookupInfo<EpisodeInfo>(); + + var series = Series; + + if (series != null) + { + id.SeriesProviderIds = series.ProviderIds; + } + + id.IndexNumberEnd = IndexNumberEnd; + + return id; + } } } diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index efb3c393b..0e07654d6 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -1,5 +1,6 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; @@ -14,7 +15,7 @@ namespace MediaBrowser.Controller.Entities.TV /// <summary> /// Class Series /// </summary> - public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage, IHasDisplayOrder + public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage, IHasDisplayOrder, IHasLookupInfo<SeriesInfo> { public List<Guid> SpecialFeatureIds { get; set; } public List<Guid> SoundtrackIds { get; set; } @@ -222,5 +223,10 @@ namespace MediaBrowser.Controller.Entities.TV } public string PreferredMetadataLanguage { get; set; } + + public SeriesInfo GetLookupInfo() + { + return GetItemLookupInfo<SeriesInfo>(); + } } } diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index d6d193442..9b3104037 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Configuration; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; @@ -9,7 +10,7 @@ namespace MediaBrowser.Controller.Entities /// <summary> /// Class Trailer /// </summary> - public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasBudget, IHasTrailers, IHasKeywords, IHasTaglines, IHasTags, IHasPreferredMetadataLanguage, IHasMetascore + public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasBudget, IHasTrailers, IHasKeywords, IHasTaglines, IHasTags, IHasPreferredMetadataLanguage, IHasMetascore, IHasLookupInfo<TrailerInfo> { public List<Guid> SoundtrackIds { get; set; } @@ -105,5 +106,10 @@ namespace MediaBrowser.Controller.Entities { return config.BlockUnratedTrailers; } + + public TrailerInfo GetLookupInfo() + { + return GetItemLookupInfo<TrailerInfo>(); + } } } diff --git a/MediaBrowser.Controller/Library/IMetadataSaver.cs b/MediaBrowser.Controller/Library/IMetadataSaver.cs index 75d318057..cfee9d206 100644 --- a/MediaBrowser.Controller/Library/IMetadataSaver.cs +++ b/MediaBrowser.Controller/Library/IMetadataSaver.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Providers; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Providers; using System.Threading; namespace MediaBrowser.Controller.Library diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 84d95c8e2..f5b43c2ab 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -146,7 +146,7 @@ <Compile Include="Persistence\MediaStreamQuery.cs" /> <Compile Include="Providers\ICustomMetadataProvider.cs" /> <Compile Include="Providers\IHasChangeMonitor.cs" /> - <Compile Include="Providers\IHasMetadata.cs" /> + <Compile Include="Entities\IHasMetadata.cs" /> <Compile Include="Providers\IImageProvider.cs" /> <Compile Include="Providers\ILocalMetadataProvider.cs" /> <Compile Include="Providers\IProviderRepository.cs" /> @@ -155,7 +155,7 @@ <Compile Include="Providers\IMetadataProvider.cs" /> <Compile Include="Providers\IMetadataService.cs" /> <Compile Include="Providers\IRemoteMetadataProvider.cs" /> - <Compile Include="Providers\ItemId.cs" /> + <Compile Include="Providers\ItemLookupInfo.cs" /> <Compile Include="Providers\MetadataRefreshOptions.cs" /> <Compile Include="Providers\NameParser.cs" /> <Compile Include="Providers\MetadataStatus.cs" /> diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 5d3d9dbca..76530d7dd 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -479,7 +479,7 @@ namespace MediaBrowser.Controller.Providers case "Director": { - foreach (var p in SplitNames(reader.ReadElementContentAsString()).Select(v => new PersonInfo { Name = v.Trim(), Type = PersonType.Director })) + foreach (var p in SplitNames(reader.ReadElementContentAsString()).Select(v => new Entities.PersonInfo { Name = v.Trim(), Type = PersonType.Director })) { if (string.IsNullOrWhiteSpace(p.Name)) { @@ -491,7 +491,7 @@ namespace MediaBrowser.Controller.Providers } case "Writer": { - foreach (var p in SplitNames(reader.ReadElementContentAsString()).Select(v => new PersonInfo { Name = v.Trim(), Type = PersonType.Writer })) + foreach (var p in SplitNames(reader.ReadElementContentAsString()).Select(v => new Entities.PersonInfo { Name = v.Trim(), Type = PersonType.Writer })) { if (string.IsNullOrWhiteSpace(p.Name)) { @@ -516,7 +516,7 @@ namespace MediaBrowser.Controller.Providers else { // Old-style piped string - foreach (var p in SplitNames(actors).Select(v => new PersonInfo { Name = v.Trim(), Type = PersonType.Actor })) + foreach (var p in SplitNames(actors).Select(v => new Entities.PersonInfo { Name = v.Trim(), Type = PersonType.Actor })) { if (string.IsNullOrWhiteSpace(p.Name)) { @@ -530,7 +530,7 @@ namespace MediaBrowser.Controller.Providers case "GuestStars": { - foreach (var p in SplitNames(reader.ReadElementContentAsString()).Select(v => new PersonInfo { Name = v.Trim(), Type = PersonType.GuestStar })) + foreach (var p in SplitNames(reader.ReadElementContentAsString()).Select(v => new Entities.PersonInfo { Name = v.Trim(), Type = PersonType.GuestStar })) { if (string.IsNullOrWhiteSpace(p.Name)) { @@ -1195,7 +1195,7 @@ namespace MediaBrowser.Controller.Providers /// </summary> /// <param name="reader">The reader.</param> /// <returns>IEnumerable{PersonInfo}.</returns> - private IEnumerable<PersonInfo> GetPersonsFromXmlNode(XmlReader reader) + private IEnumerable<Entities.PersonInfo> GetPersonsFromXmlNode(XmlReader reader) { var name = string.Empty; var type = "Actor"; // If type is not specified assume actor @@ -1257,7 +1257,7 @@ namespace MediaBrowser.Controller.Providers } } - var personInfo = new PersonInfo + var personInfo = new Entities.PersonInfo { Name = name.Trim(), Role = role, diff --git a/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs b/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs index de75c62e9..7cf9e961e 100644 --- a/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using System.Threading; using System.Threading.Tasks; diff --git a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs b/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs index 41313da3d..6428bfd3d 100644 --- a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs +++ b/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs @@ -1,4 +1,5 @@ using System; +using MediaBrowser.Controller.Entities; namespace MediaBrowser.Controller.Providers { diff --git a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs index 91ef22b2c..ccb8c1c5f 100644 --- a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Entities; namespace MediaBrowser.Controller.Providers { diff --git a/MediaBrowser.Controller/Providers/IMetadataProvider.cs b/MediaBrowser.Controller/Providers/IMetadataProvider.cs index 910c88e53..70bc06059 100644 --- a/MediaBrowser.Controller/Providers/IMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/IMetadataProvider.cs @@ -1,4 +1,5 @@ using System; +using MediaBrowser.Controller.Entities; namespace MediaBrowser.Controller.Providers { diff --git a/MediaBrowser.Controller/Providers/IMetadataService.cs b/MediaBrowser.Controller/Providers/IMetadataService.cs index c4314c15f..786a7147c 100644 --- a/MediaBrowser.Controller/Providers/IMetadataService.cs +++ b/MediaBrowser.Controller/Providers/IMetadataService.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Entities; namespace MediaBrowser.Controller.Providers { diff --git a/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs b/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs index 6007a5af6..cbbd62557 100644 --- a/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs @@ -1,5 +1,6 @@ using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Entities; namespace MediaBrowser.Controller.Providers { @@ -7,15 +8,10 @@ namespace MediaBrowser.Controller.Providers { } - public interface IRemoteMetadataProvider<TItemType> : IMetadataProvider<TItemType>, IRemoteMetadataProvider - where TItemType : IHasMetadata + public interface IRemoteMetadataProvider<TItemType, in TLookupInfoType> : IMetadataProvider<TItemType>, IRemoteMetadataProvider + where TItemType : IHasMetadata, IHasLookupInfo<TLookupInfoType> + where TLookupInfoType : ItemLookupInfo, new() { - /// <summary> - /// Gets the metadata. - /// </summary> - /// <param name="id">The identifier.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task{MetadataResult{`0}}.</returns> - Task<MetadataResult<TItemType>> GetMetadata(ItemId id, CancellationToken cancellationToken); + Task<MetadataResult<TItemType>> GetMetadata(TLookupInfoType info, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/Providers/ItemId.cs b/MediaBrowser.Controller/Providers/ItemLookupInfo.cs index 9be6b783c..d8dd03847 100644 --- a/MediaBrowser.Controller/Providers/ItemId.cs +++ b/MediaBrowser.Controller/Providers/ItemLookupInfo.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; namespace MediaBrowser.Controller.Providers { - public class ItemId : IHasProviderIds + public class ItemLookupInfo : IHasProviderIds { /// <summary> /// Gets or sets the name. @@ -34,13 +34,29 @@ namespace MediaBrowser.Controller.Providers public int? IndexNumber { get; set; } public int? ParentIndexNumber { get; set; } - public ItemId() + public ItemLookupInfo() { ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); } } - public class AlbumId : ItemId + public interface IHasLookupInfo<out TLookupInfoType> + where TLookupInfoType : ItemLookupInfo, new() + { + TLookupInfoType GetLookupInfo(); + } + + public class ArtistInfo : ItemLookupInfo + { + public List<SongInfo> SongInfos { get; set; } + + public ArtistInfo() + { + SongInfos = new List<SongInfo>(); + } + } + + public class AlbumInfo : ItemLookupInfo { /// <summary> /// Gets or sets the album artist. @@ -53,14 +69,16 @@ namespace MediaBrowser.Controller.Providers /// </summary> /// <value>The artist provider ids.</value> public Dictionary<string, string> ArtistProviderIds { get; set; } + public List<SongInfo> SongInfos { get; set; } - public AlbumId() + public AlbumInfo() { ArtistProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); + SongInfos = new List<SongInfo>(); } } - public class GameId : ItemId + public class GameInfo : ItemLookupInfo { /// <summary> /// Gets or sets the game system. @@ -69,7 +87,7 @@ namespace MediaBrowser.Controller.Providers public string GameSystem { get; set; } } - public class GameSystemId : ItemId + public class GameSystemInfo : ItemLookupInfo { /// <summary> /// Gets or sets the path. @@ -78,15 +96,57 @@ namespace MediaBrowser.Controller.Providers public string Path { get; set; } } - public class EpisodeId : ItemId + public class EpisodeInfo : ItemLookupInfo { public Dictionary<string, string> SeriesProviderIds { get; set; } public int? IndexNumberEnd { get; set; } - public EpisodeId() + public EpisodeInfo() { SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); } } + + public class SongInfo : ItemLookupInfo + { + public string AlbumArtist { get; set; } + public string Album { get; set; } + public List<string> Artists { get; set; } + } + + public class SeriesInfo : ItemLookupInfo + { + + } + + public class PersonLookupInfo : ItemLookupInfo + { + + } + + public class MovieInfo : ItemLookupInfo + { + + } + + public class BoxSetInfo : ItemLookupInfo + { + + } + + public class MusicVideoInfo : ItemLookupInfo + { + + } + + public class TrailerInfo : ItemLookupInfo + { + + } + + public class BookInfo : ItemLookupInfo + { + + } } 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; diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index d38e020fa..344d34cfb 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common.Internal</id> - <version>3.0.318</version> + <version>3.0.320</version> <title>MediaBrowser.Common.Internal</title> <authors>Luke</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description> <copyright>Copyright © Media Browser 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.318" /> + <dependency id="MediaBrowser.Common" version="3.0.320" /> <dependency id="NLog" version="2.1.0" /> <dependency id="SimpleInjector" version="2.4.1" /> <dependency id="sharpcompress" version="0.10.2" /> diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index 5ad30a09f..eeae8b1e7 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>MediaBrowser.Common</id> - <version>3.0.318</version> + <version>3.0.320</version> <title>MediaBrowser.Common</title> <authors>Media Browser Team</authors> <owners>ebr,Luke,scottisafool</owners> diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index a24d6c3ac..8d468352a 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata> <id>MediaBrowser.Server.Core</id> - <version>3.0.318</version> + <version>3.0.320</version> <title>Media Browser.Server.Core</title> <authors>Media Browser Team</authors> <owners>ebr,Luke,scottisafool</owners> @@ -12,7 +12,7 @@ <description>Contains core components required to build plugins for Media Browser Server.</description> <copyright>Copyright © Media Browser 2013</copyright> <dependencies> - <dependency id="MediaBrowser.Common" version="3.0.318" /> + <dependency id="MediaBrowser.Common" version="3.0.320" /> </dependencies> </metadata> <files> |
