diff options
Diffstat (limited to 'MediaBrowser.Controller')
16 files changed, 30 insertions, 191 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 25e742e7c..d413bda9b 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -38,7 +38,6 @@ namespace MediaBrowser.Controller.Entities ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); LockedFields = new List<MetadataFields>(); ImageInfos = new List<ItemImageInfo>(); - Identities = new List<IItemIdentity>(); } /// <summary> @@ -336,10 +335,7 @@ namespace MediaBrowser.Controller.Entities public bool IsLocked { get; set; } public bool IsUnidentified { get; set; } - - [IgnoreDataMember] - public List<IItemIdentity> Identities { get; set; } - + /// <summary> /// Gets or sets the locked fields. /// </summary> diff --git a/MediaBrowser.Controller/Entities/IHasMetadata.cs b/MediaBrowser.Controller/Entities/IHasMetadata.cs index 158bcb6d1..9d54541f1 100644 --- a/MediaBrowser.Controller/Entities/IHasMetadata.cs +++ b/MediaBrowser.Controller/Entities/IHasMetadata.cs @@ -49,12 +49,7 @@ namespace MediaBrowser.Controller.Entities /// </summary> /// <value><c>true</c> if this instance is unidentified; otherwise, <c>false</c>.</value> bool IsUnidentified { get; set; } - - /// <summary> - /// Gets the item identities. - /// </summary> - List<IItemIdentity> Identities { get; set; } - + /// <summary> /// Afters the metadata refresh. /// </summary> diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index ea6e98ea6..a3e00359f 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -268,7 +268,6 @@ <Compile Include="Providers\DirectoryService.cs" /> <Compile Include="Providers\DynamicImageInfo.cs" /> <Compile Include="Providers\DynamicImageResponse.cs" /> - <Compile Include="Providers\EpisodeIdentity.cs" /> <Compile Include="Providers\EpisodeInfo.cs" /> <Compile Include="Providers\ExtraInfo.cs" /> <Compile Include="Providers\ExtraSource.cs" /> @@ -282,14 +281,12 @@ <Compile Include="Providers\IForcedProvider.cs" /> <Compile Include="Providers\IHasChangeMonitor.cs" /> <Compile Include="Entities\IHasMetadata.cs" /> - <Compile Include="Providers\IHasIdentities.cs" /> <Compile Include="Providers\IHasItemChangeMonitor.cs" /> <Compile Include="Providers\IHasLookupInfo.cs" /> <Compile Include="Providers\IHasOrder.cs" /> <Compile Include="Providers\IImageFileSaver.cs" /> <Compile Include="Providers\IImageProvider.cs" /> <Compile Include="Providers\IImageSaver.cs" /> - <Compile Include="Providers\IItemIdentity.cs" /> <Compile Include="Providers\IItemIdentityConverter.cs" /> <Compile Include="Providers\IItemIdentityProvider.cs" /> <Compile Include="Providers\ILocalImageFileProvider.cs" /> @@ -314,9 +311,7 @@ <Compile Include="Providers\MusicVideoInfo.cs" /> <Compile Include="Providers\PersonLookupInfo.cs" /> <Compile Include="Providers\RemoteSearchQuery.cs" /> - <Compile Include="Providers\SeasonIdentity.cs" /> <Compile Include="Providers\SeasonInfo.cs" /> - <Compile Include="Providers\SeriesIdentity.cs" /> <Compile Include="Providers\SeriesInfo.cs" /> <Compile Include="Providers\SeriesOrderTypes.cs" /> <Compile Include="Providers\SongInfo.cs" /> diff --git a/MediaBrowser.Controller/Providers/EpisodeIdentity.cs b/MediaBrowser.Controller/Providers/EpisodeIdentity.cs deleted file mode 100644 index 53f469e95..000000000 --- a/MediaBrowser.Controller/Providers/EpisodeIdentity.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace MediaBrowser.Controller.Providers -{ - public class EpisodeIdentity : IItemIdentity - { - public string Type { get; set; } - - public string SeriesId { get; set; } - public int? SeasonIndex { get; set; } - public int IndexNumber { get; set; } - public int? IndexNumberEnd { get; set; } - } -}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/EpisodeInfo.cs b/MediaBrowser.Controller/Providers/EpisodeInfo.cs index 88a7cbab7..28abd636a 100644 --- a/MediaBrowser.Controller/Providers/EpisodeInfo.cs +++ b/MediaBrowser.Controller/Providers/EpisodeInfo.cs @@ -1,15 +1,10 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; namespace MediaBrowser.Controller.Providers { - public class EpisodeInfo : ItemLookupInfo, IHasIdentities<EpisodeIdentity> + public class EpisodeInfo : ItemLookupInfo { - private List<EpisodeIdentity> _identities = new List<EpisodeIdentity>(); - public Dictionary<string, string> SeriesProviderIds { get; set; } public int? IndexNumberEnd { get; set; } @@ -19,16 +14,5 @@ namespace MediaBrowser.Controller.Providers { SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); } - - public IEnumerable<EpisodeIdentity> Identities - { - get { return _identities; } - } - - public async Task FindIdentities(IProviderManager providerManager, CancellationToken cancellationToken) - { - var identifier = new ItemIdentifier<EpisodeInfo, EpisodeIdentity>(); - _identities = (await identifier.FindIdentities(this, providerManager, cancellationToken)).ToList(); - } } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IHasIdentities.cs b/MediaBrowser.Controller/Providers/IHasIdentities.cs deleted file mode 100644 index 36f940dd3..000000000 --- a/MediaBrowser.Controller/Providers/IHasIdentities.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; - -namespace MediaBrowser.Controller.Providers -{ - public interface IHasIdentities<out TIdentity> - where TIdentity : IItemIdentity - { - IEnumerable<TIdentity> Identities { get; } - - Task FindIdentities(IProviderManager providerManager, CancellationToken cancellationToken); - } -}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IItemIdentity.cs b/MediaBrowser.Controller/Providers/IItemIdentity.cs deleted file mode 100644 index cab189c84..000000000 --- a/MediaBrowser.Controller/Providers/IItemIdentity.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace MediaBrowser.Controller.Providers -{ - public interface IItemIdentity - { - string Type { get; } - } -}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IItemIdentityConverter.cs b/MediaBrowser.Controller/Providers/IItemIdentityConverter.cs index 30e96b9e5..bfdd1dbf3 100644 --- a/MediaBrowser.Controller/Providers/IItemIdentityConverter.cs +++ b/MediaBrowser.Controller/Providers/IItemIdentityConverter.cs @@ -1,4 +1,4 @@ namespace MediaBrowser.Controller.Providers { - public interface IItemIdentityConverter : IHasOrder { } + public interface IItemIdentityConverter { } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IItemIdentityProvider.cs b/MediaBrowser.Controller/Providers/IItemIdentityProvider.cs index 9d437c208..6b403bb55 100644 --- a/MediaBrowser.Controller/Providers/IItemIdentityProvider.cs +++ b/MediaBrowser.Controller/Providers/IItemIdentityProvider.cs @@ -1,4 +1,4 @@ namespace MediaBrowser.Controller.Providers { - public interface IItemIdentityProvider : IHasOrder { } + public interface IItemIdentityProvider { } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs index d6fc39c5f..57e4ff320 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -195,18 +195,16 @@ namespace MediaBrowser.Controller.Providers /// Gets the item identity providers. /// </summary> /// <typeparam name="TLookupInfo">The type of the t lookup information.</typeparam> - /// <typeparam name="TIdentity">The type of the t identity.</typeparam> /// <returns>IEnumerable<IItemIdentityProvider<TLookupInfo, TIdentity>>.</returns> - IEnumerable<IItemIdentityProvider<TLookupInfo, TIdentity>> GetItemIdentityProviders<TLookupInfo, TIdentity>() - where TLookupInfo : ItemLookupInfo - where TIdentity : IItemIdentity; + IEnumerable<IItemIdentityProvider<TLookupInfo>> GetItemIdentityProviders<TLookupInfo>() + where TLookupInfo : ItemLookupInfo; /// <summary> /// Gets the item identity converters. /// </summary> - /// <typeparam name="TIdentity">The type of the t identity.</typeparam> + /// <typeparam name="TLookupInfo">The type of the t lookup information.</typeparam> /// <returns>IEnumerable<IItemIdentityConverter<TIdentity>>.</returns> - IEnumerable<IItemIdentityConverter<TIdentity>> GetItemIdentityConverters<TIdentity>() - where TIdentity : IItemIdentity; + IEnumerable<IItemIdentityConverter<TLookupInfo>> GetItemIdentityConverters<TLookupInfo>() + where TLookupInfo : ItemLookupInfo; } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ItemIdentifier.cs b/MediaBrowser.Controller/Providers/ItemIdentifier.cs index 13e4f137f..bbc6dd76c 100644 --- a/MediaBrowser.Controller/Providers/ItemIdentifier.cs +++ b/MediaBrowser.Controller/Providers/ItemIdentifier.cs @@ -1,73 +1,36 @@ -using System.Collections.Generic; -using System.Linq; +using System.Linq; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Controller.Providers { - public class ItemIdentifier<TLookupInfo, TIdentity> + public static class ItemIdentifier<TLookupInfo> where TLookupInfo : ItemLookupInfo - where TIdentity : IItemIdentity { - public async Task<IEnumerable<TIdentity>> FindIdentities(TLookupInfo item, IProviderManager providerManager, CancellationToken cancellationToken) + public static async Task FindIdentities(TLookupInfo item, IProviderManager providerManager, CancellationToken cancellationToken) { - var providers = providerManager.GetItemIdentityProviders<TLookupInfo, TIdentity>(); - var converters = providerManager.GetItemIdentityConverters<TIdentity>(); - - var identities = new List<IdentityPair>(); - + var providers = providerManager.GetItemIdentityProviders<TLookupInfo>(); + var converters = providerManager.GetItemIdentityConverters<TLookupInfo>().ToList(); + foreach (var provider in providers) { - var result = new IdentityPair - { - Identity = await provider.FindIdentity(item), - Order = provider.Order - }; - - if (!Equals(result.Identity, default(TIdentity))) - { - identities.Add(result); - } + await provider.Identify(item); } - var convertersAvailable = new List<IItemIdentityConverter<TIdentity>>(converters); - bool changesMade; + bool changesMade = true; - do + while (changesMade) { changesMade = false; - for (int i = convertersAvailable.Count - 1; i >= 0; i--) + foreach (var converter in converters) { - var converter = convertersAvailable[i]; - var input = identities.FirstOrDefault(id => id.Identity.Type == converter.SourceType); - var existing = identities.Where(id => id.Identity.Type == converter.ResultType); - - if (input != null && !existing.Any(id => id.Order <= converter.Order)) + if (await converter.Convert(item)) { - var result = new IdentityPair - { - Identity = await converter.Convert(input.Identity).ConfigureAwait(false), - Order = converter.Order - }; - - if (!Equals(result.Identity, default(TIdentity))) - { - identities.Add(result); - convertersAvailable.RemoveAt(i); - changesMade = true; - } + changesMade = true; } } - } while (changesMade); - - return identities.OrderBy(id => id.Order).Select(id => id.Identity); - } - - private class IdentityPair - { - public TIdentity Identity; - public int Order; + } } } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ItemIdentities.cs b/MediaBrowser.Controller/Providers/ItemIdentities.cs index 939fd3b8f..48316d0f4 100644 --- a/MediaBrowser.Controller/Providers/ItemIdentities.cs +++ b/MediaBrowser.Controller/Providers/ItemIdentities.cs @@ -2,20 +2,15 @@ namespace MediaBrowser.Controller.Providers { - public interface IItemIdentityProvider<in TLookupInfo, TIdentity> : IItemIdentityProvider + public interface IItemIdentityProvider<in TLookupInfo> : IItemIdentityProvider where TLookupInfo : ItemLookupInfo - where TIdentity : IItemIdentity { - Task<TIdentity> FindIdentity(TLookupInfo info); + Task Identify(TLookupInfo info); } - public interface IItemIdentityConverter<TIdentity> : IItemIdentityConverter - where TIdentity : IItemIdentity + public interface IItemIdentityConverter<in TLookupInfo> : IItemIdentityConverter + where TLookupInfo : ItemLookupInfo { - Task<TIdentity> Convert(TIdentity identity); - - string SourceType { get; } - - string ResultType { get; } + Task<bool> Convert(TLookupInfo info); } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/SeasonIdentity.cs b/MediaBrowser.Controller/Providers/SeasonIdentity.cs deleted file mode 100644 index 1e6b9b65a..000000000 --- a/MediaBrowser.Controller/Providers/SeasonIdentity.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace MediaBrowser.Controller.Providers -{ - public class SeasonIdentity : IItemIdentity - { - public string Type { get; set; } - - public string SeriesId { get; set; } - - public int SeasonIndex { get; set; } - } -}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/SeasonInfo.cs b/MediaBrowser.Controller/Providers/SeasonInfo.cs index 17bcd3f77..2c785d7d7 100644 --- a/MediaBrowser.Controller/Providers/SeasonInfo.cs +++ b/MediaBrowser.Controller/Providers/SeasonInfo.cs @@ -1,15 +1,10 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; namespace MediaBrowser.Controller.Providers { - public class SeasonInfo : ItemLookupInfo, IHasIdentities<SeasonIdentity> + public class SeasonInfo : ItemLookupInfo { - private List<SeasonIdentity> _identities = new List<SeasonIdentity>(); - public Dictionary<string, string> SeriesProviderIds { get; set; } public int? AnimeSeriesIndex { get; set; } @@ -17,16 +12,5 @@ namespace MediaBrowser.Controller.Providers { SeriesProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); } - - public IEnumerable<SeasonIdentity> Identities - { - get { return _identities; } - } - - public async Task FindIdentities(IProviderManager providerManager, CancellationToken cancellationToken) - { - var identifier = new ItemIdentifier<SeasonInfo, SeasonIdentity>(); - _identities = (await identifier.FindIdentities(this, providerManager, cancellationToken)).ToList(); - } } }
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/SeriesIdentity.cs b/MediaBrowser.Controller/Providers/SeriesIdentity.cs deleted file mode 100644 index 326d34027..000000000 --- a/MediaBrowser.Controller/Providers/SeriesIdentity.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MediaBrowser.Controller.Providers -{ - public class SeriesIdentity : IItemIdentity - { - public string Type { get; set; } - - public string Id { get; set; } - } -}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/SeriesInfo.cs b/MediaBrowser.Controller/Providers/SeriesInfo.cs index fc1119cd2..387865de2 100644 --- a/MediaBrowser.Controller/Providers/SeriesInfo.cs +++ b/MediaBrowser.Controller/Providers/SeriesInfo.cs @@ -1,25 +1,7 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; - namespace MediaBrowser.Controller.Providers { - public class SeriesInfo : ItemLookupInfo, IHasIdentities<SeriesIdentity> + public class SeriesInfo : ItemLookupInfo { - private List<SeriesIdentity> _identities = new List<SeriesIdentity>(); - public int? AnimeSeriesIndex { get; set; } - - public IEnumerable<SeriesIdentity> Identities - { - get { return _identities; } - } - - public async Task FindIdentities(IProviderManager providerManager, CancellationToken cancellationToken) - { - var identifier = new ItemIdentifier<SeriesInfo, SeriesIdentity>(); - _identities = (await identifier.FindIdentities(this, providerManager, cancellationToken)).ToList(); - } } }
\ No newline at end of file |
