aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Providers
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Providers')
-rw-r--r--MediaBrowser.Controller/Providers/BaseItemXmlParser.cs66
-rw-r--r--MediaBrowser.Controller/Providers/BaseMetadataProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/BaseProviderInfo.cs14
-rw-r--r--MediaBrowser.Controller/Providers/DirectoryService.cs79
-rw-r--r--MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs5
-rw-r--r--MediaBrowser.Controller/Providers/IHasChangeMonitor.cs6
-rw-r--r--MediaBrowser.Controller/Providers/IHasMetadata.cs49
-rw-r--r--MediaBrowser.Controller/Providers/ILocalImageProvider.cs24
-rw-r--r--MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs20
-rw-r--r--MediaBrowser.Controller/Providers/IMetadataProvider.cs1
-rw-r--r--MediaBrowser.Controller/Providers/IMetadataService.cs1
-rw-r--r--MediaBrowser.Controller/Providers/IProviderManager.cs14
-rw-r--r--MediaBrowser.Controller/Providers/IProviderRepository.cs16
-rw-r--r--MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs14
-rw-r--r--MediaBrowser.Controller/Providers/ItemLookupInfo.cs (renamed from MediaBrowser.Controller/Providers/ItemId.cs)81
-rw-r--r--MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs1
-rw-r--r--MediaBrowser.Controller/Providers/MetadataStatus.cs19
17 files changed, 297 insertions, 115 deletions
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
index 5d3d9dbca..59b7cd8db 100644
--- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
+++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
@@ -247,7 +247,10 @@ namespace MediaBrowser.Controller.Providers
{
var val = reader.ReadElementContentAsString();
-
+ if (!string.IsNullOrWhiteSpace(val))
+ {
+ item.ForcedSortName = val;
+ }
break;
}
@@ -479,7 +482,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 +494,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 +519,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 +533,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))
{
@@ -680,12 +683,30 @@ namespace MediaBrowser.Controller.Providers
}
break;
}
- case "MusicbrainzId":
+ case "MusicBrainzAlbumId":
{
var mbz = reader.ReadElementContentAsString();
if (!string.IsNullOrWhiteSpace(mbz))
{
- item.SetProviderId(MetadataProviders.Musicbrainz, mbz);
+ item.SetProviderId(MetadataProviders.MusicBrainzAlbum, mbz);
+ }
+ break;
+ }
+ case "MusicBrainzAlbumArtistId":
+ {
+ var mbz = reader.ReadElementContentAsString();
+ if (!string.IsNullOrWhiteSpace(mbz))
+ {
+ item.SetProviderId(MetadataProviders.MusicBrainzAlbumArtist, mbz);
+ }
+ break;
+ }
+ case "MusicBrainzArtistId":
+ {
+ var mbz = reader.ReadElementContentAsString();
+ if (!string.IsNullOrWhiteSpace(mbz))
+ {
+ item.SetProviderId(MetadataProviders.MusicBrainzArtist, mbz);
}
break;
}
@@ -698,6 +719,33 @@ namespace MediaBrowser.Controller.Providers
}
break;
}
+ case "TvRageId":
+ {
+ var id = reader.ReadElementContentAsString();
+ if (!string.IsNullOrWhiteSpace(id))
+ {
+ item.SetProviderId(MetadataProviders.TvRage, id);
+ }
+ break;
+ }
+ case "AudioDbArtistId":
+ {
+ var id = reader.ReadElementContentAsString();
+ if (!string.IsNullOrWhiteSpace(id))
+ {
+ item.SetProviderId(MetadataProviders.AudioDbArtist, id);
+ }
+ break;
+ }
+ case "AudioDbAlbumId":
+ {
+ var id = reader.ReadElementContentAsString();
+ if (!string.IsNullOrWhiteSpace(id))
+ {
+ item.SetProviderId(MetadataProviders.AudioDbAlbum, id);
+ }
+ break;
+ }
case "RottenTomatoesId":
var rtId = reader.ReadElementContentAsString();
if (!string.IsNullOrWhiteSpace(rtId))
@@ -1195,7 +1243,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 +1305,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/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
index 6818fa52b..f8580244a 100644
--- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
+++ b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
@@ -40,8 +40,6 @@ namespace MediaBrowser.Controller.Providers
protected static readonly Task<bool> FalseTaskResult = Task.FromResult(false);
- protected static readonly SemaphoreSlim XmlParsingResourcePool = new SemaphoreSlim(4, 4);
-
/// <summary>
/// Supportses the specified item.
/// </summary>
diff --git a/MediaBrowser.Controller/Providers/BaseProviderInfo.cs b/MediaBrowser.Controller/Providers/BaseProviderInfo.cs
index 829dd34c8..3a33924f0 100644
--- a/MediaBrowser.Controller/Providers/BaseProviderInfo.cs
+++ b/MediaBrowser.Controller/Providers/BaseProviderInfo.cs
@@ -38,14 +38,14 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// The success
/// </summary>
- Success,
- /// <summary>
- /// The failure
- /// </summary>
- Failure,
+ Success = 0,
/// <summary>
/// The completed with errors
/// </summary>
- CompletedWithErrors
- }
+ CompletedWithErrors = 1,
+ /// <summary>
+ /// The failure
+ /// </summary>
+ Failure = 2
+ }
}
diff --git a/MediaBrowser.Controller/Providers/DirectoryService.cs b/MediaBrowser.Controller/Providers/DirectoryService.cs
new file mode 100644
index 000000000..e17ae76ff
--- /dev/null
+++ b/MediaBrowser.Controller/Providers/DirectoryService.cs
@@ -0,0 +1,79 @@
+using MediaBrowser.Model.Logging;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace MediaBrowser.Controller.Providers
+{
+ public interface IDirectoryService
+ {
+ List<FileSystemInfo> GetFileSystemEntries(string path);
+ IEnumerable<FileInfo> GetFiles(string path);
+ IEnumerable<DirectoryInfo> GetDirectories(string path);
+ FileInfo GetFile(string path);
+ DirectoryInfo GetDirectory(string path);
+ }
+
+ public class DirectoryService : IDirectoryService
+ {
+ private readonly ILogger _logger;
+
+ private readonly Dictionary<string, List<FileSystemInfo>> _cache = new Dictionary<string, List<FileSystemInfo>>(StringComparer.OrdinalIgnoreCase);
+
+ public DirectoryService(ILogger logger)
+ {
+ _logger = logger;
+ }
+
+ public List<FileSystemInfo> GetFileSystemEntries(string path)
+ {
+ List<FileSystemInfo> entries;
+
+ if (!_cache.TryGetValue(path, out entries))
+ {
+ //_logger.Debug("Getting files for " + path);
+
+ try
+ {
+ entries = new DirectoryInfo(path).EnumerateFileSystemInfos("*", SearchOption.TopDirectoryOnly).ToList();
+ }
+ catch (DirectoryNotFoundException)
+ {
+ entries = new List<FileSystemInfo>();
+ }
+
+ _cache.Add(path, entries);
+ }
+
+ return entries;
+ }
+
+ public IEnumerable<FileInfo> GetFiles(string path)
+ {
+ return GetFileSystemEntries(path).OfType<FileInfo>();
+ }
+
+ public IEnumerable<DirectoryInfo> GetDirectories(string path)
+ {
+ return GetFileSystemEntries(path).OfType<DirectoryInfo>();
+ }
+
+ public FileInfo GetFile(string path)
+ {
+ var directory = Path.GetDirectoryName(path);
+ var filename = Path.GetFileName(path);
+
+ return GetFiles(directory).FirstOrDefault(i => string.Equals(i.Name, filename, StringComparison.OrdinalIgnoreCase));
+ }
+
+
+ public DirectoryInfo GetDirectory(string path)
+ {
+ var directory = Path.GetDirectoryName(path);
+ var name = Path.GetFileName(path);
+
+ return GetDirectories(directory).FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase));
+ }
+ }
+}
diff --git a/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs b/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs
index de75c62e9..c98810cbc 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;
@@ -11,6 +12,6 @@ namespace MediaBrowser.Controller.Providers
public interface ICustomMetadataProvider<TItemType> : IMetadataProvider<TItemType>, ICustomMetadataProvider
where TItemType : IHasMetadata
{
- Task<ItemUpdateType> FetchAsync(TItemType item, CancellationToken cancellationToken);
+ Task<ItemUpdateType> FetchAsync(TItemType item, IDirectoryService directoryService, CancellationToken cancellationToken);
}
}
diff --git a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs b/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs
index 41313da3d..aa0b0e3c9 100644
--- a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs
+++ b/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs
@@ -1,4 +1,5 @@
-using System;
+using MediaBrowser.Controller.Entities;
+using System;
namespace MediaBrowser.Controller.Providers
{
@@ -8,8 +9,9 @@ namespace MediaBrowser.Controller.Providers
/// Determines whether the specified item has changed.
/// </summary>
/// <param name="item">The item.</param>
+ /// <param name="directoryService">The directory service.</param>
/// <param name="date">The date.</param>
/// <returns><c>true</c> if the specified item has changed; otherwise, <c>false</c>.</returns>
- bool HasChanged(IHasMetadata item, DateTime date);
+ bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date);
}
}
diff --git a/MediaBrowser.Controller/Providers/IHasMetadata.cs b/MediaBrowser.Controller/Providers/IHasMetadata.cs
deleted file mode 100644
index 19ab00e68..000000000
--- a/MediaBrowser.Controller/Providers/IHasMetadata.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Model.Entities;
-using System;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Controller.Providers
-{
- /// <summary>
- /// Interface IHasMetadata
- /// </summary>
- public interface IHasMetadata : IHasImages
- {
- /// <summary>
- /// Gets the preferred metadata country code.
- /// </summary>
- /// <returns>System.String.</returns>
- string GetPreferredMetadataCountryCode();
-
- /// <summary>
- /// Gets the date modified.
- /// </summary>
- /// <value>The date modified.</value>
- DateTime DateModified { get; }
-
- /// <summary>
- /// Gets the locked fields.
- /// </summary>
- /// <value>The locked fields.</value>
- List<MetadataFields> LockedFields { get; }
-
- /// <summary>
- /// Gets or sets the date last saved.
- /// </summary>
- /// <value>The date last saved.</value>
- DateTime DateLastSaved { get; set; }
-
- /// <summary>
- /// Determines whether [is save local metadata enabled].
- /// </summary>
- /// <returns><c>true</c> if [is save local metadata enabled]; otherwise, <c>false</c>.</returns>
- bool IsSaveLocalMetadataEnabled();
-
- /// <summary>
- /// Gets a value indicating whether this instance is in mixed folder.
- /// </summary>
- /// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value>
- bool IsInMixedFolder { get; }
- }
-}
diff --git a/MediaBrowser.Controller/Providers/ILocalImageProvider.cs b/MediaBrowser.Controller/Providers/ILocalImageProvider.cs
index ed7cdc8b2..ec24e1d60 100644
--- a/MediaBrowser.Controller/Providers/ILocalImageProvider.cs
+++ b/MediaBrowser.Controller/Providers/ILocalImageProvider.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
@@ -15,14 +16,14 @@ namespace MediaBrowser.Controller.Providers
{
}
- public interface IImageFileProvider : ILocalImageProvider
+ public interface ILocalImageFileProvider : ILocalImageProvider
{
- List<LocalImageInfo> GetImages(IHasImages item);
+ List<LocalImageInfo> GetImages(IHasImages item, IDirectoryService directoryService);
}
public class LocalImageInfo
{
- public string Path { get; set; }
+ public FileInfo FileInfo { get; set; }
public ImageType Type { get; set; }
}
@@ -60,7 +61,22 @@ namespace MediaBrowser.Controller.Providers
public void SetFormatFromMimeType(string mimeType)
{
-
+ if (mimeType.EndsWith("gif", StringComparison.OrdinalIgnoreCase))
+ {
+ Format = ImageFormat.Gif;
+ }
+ else if (mimeType.EndsWith("bmp", StringComparison.OrdinalIgnoreCase))
+ {
+ Format = ImageFormat.Bmp;
+ }
+ else if (mimeType.EndsWith("png", StringComparison.OrdinalIgnoreCase))
+ {
+ Format = ImageFormat.Png;
+ }
+ else
+ {
+ Format = ImageFormat.Jpg;
+ }
}
}
}
diff --git a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs
index 91ef22b2c..a7c1e6e1b 100644
--- a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs
+++ b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs
@@ -1,4 +1,6 @@
-using System.Threading;
+using MediaBrowser.Controller.Entities;
+using System.Collections.Generic;
+using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Providers
@@ -16,7 +18,7 @@ namespace MediaBrowser.Controller.Providers
/// <param name="info">The information.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{MetadataResult{`0}}.</returns>
- Task<MetadataResult<TItemType>> GetMetadata(ItemInfo info, CancellationToken cancellationToken);
+ Task<LocalMetadataResult<TItemType>> GetMetadata(ItemInfo info, CancellationToken cancellationToken);
}
public class ItemInfo
@@ -25,4 +27,18 @@ namespace MediaBrowser.Controller.Providers
public bool IsInMixedFolder { get; set; }
}
+
+ public class LocalMetadataResult<T>
+ where T : IHasMetadata
+ {
+ public bool HasMetadata { get; set; }
+ public T Item { get; set; }
+
+ public List<LocalImageInfo> Images { get; set; }
+
+ public LocalMetadataResult()
+ {
+ Images = new List<LocalImageInfo>();
+ }
+ }
}
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/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs
index 369b58256..691a5add6 100644
--- a/MediaBrowser.Controller/Providers/IProviderManager.cs
+++ b/MediaBrowser.Controller/Providers/IProviderManager.cs
@@ -62,18 +62,17 @@ namespace MediaBrowser.Controller.Providers
/// Gets the available remote images.
/// </summary>
/// <param name="item">The item.</param>
+ /// <param name="query">The query.</param>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="providerName">Name of the provider.</param>
- /// <param name="type">The type.</param>
/// <returns>Task{IEnumerable{RemoteImageInfo}}.</returns>
- Task<IEnumerable<RemoteImageInfo>> GetAvailableRemoteImages(IHasImages item, CancellationToken cancellationToken, string providerName = null, ImageType? type = null);
+ Task<IEnumerable<RemoteImageInfo>> GetAvailableRemoteImages(IHasImages item, RemoteImageQuery query, CancellationToken cancellationToken);
/// <summary>
/// Gets the image providers.
/// </summary>
/// <param name="item">The item.</param>
/// <returns>IEnumerable{ImageProviderInfo}.</returns>
- IEnumerable<ImageProviderInfo> GetImageProviderInfo(IHasImages item);
+ IEnumerable<ImageProviderInfo> GetRemoteImageProviderInfo(IHasImages item);
/// <summary>
/// Gets all metadata plugins.
@@ -88,5 +87,12 @@ namespace MediaBrowser.Controller.Providers
/// <param name="updateType">Type of the update.</param>
/// <returns>Task.</returns>
Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType);
+
+ /// <summary>
+ /// Gets the metadata options.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <returns>MetadataOptions.</returns>
+ MetadataOptions GetMetadataOptions(IHasImages item);
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/Providers/IProviderRepository.cs b/MediaBrowser.Controller/Providers/IProviderRepository.cs
index 1c0ad2cd7..3cd2c3f31 100644
--- a/MediaBrowser.Controller/Providers/IProviderRepository.cs
+++ b/MediaBrowser.Controller/Providers/IProviderRepository.cs
@@ -9,22 +9,6 @@ namespace MediaBrowser.Controller.Providers
public interface IProviderRepository : IRepository
{
/// <summary>
- /// Gets the provider history.
- /// </summary>
- /// <param name="itemId">The item identifier.</param>
- /// <returns>IEnumerable{BaseProviderInfo}.</returns>
- IEnumerable<BaseProviderInfo> GetProviderHistory(Guid itemId);
-
- /// <summary>
- /// Saves the provider history.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="history">The history.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task SaveProviderHistory(Guid id, IEnumerable<BaseProviderInfo> history, CancellationToken cancellationToken);
-
- /// <summary>
/// Gets the metadata status.
/// </summary>
/// <param name="itemId">The item identifier.</param>
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..b43654005 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,62 @@ 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
+ {
+ public string SeriesName { get; set; }
+ }
+
+ public class SeasonInfo : ItemLookupInfo
+ {
+
+ }
}
diff --git a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs
index 83f1a12d9..780aa6a56 100644
--- a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs
+++ b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs
@@ -21,6 +21,7 @@ namespace MediaBrowser.Controller.Providers
public class ImageRefreshOptions
{
public ImageRefreshMode ImageRefreshMode { get; set; }
+ public IDirectoryService DirectoryService { get; set; }
public ImageRefreshOptions()
{
diff --git a/MediaBrowser.Controller/Providers/MetadataStatus.cs b/MediaBrowser.Controller/Providers/MetadataStatus.cs
index 834d8ec35..1e84e5880 100644
--- a/MediaBrowser.Controller/Providers/MetadataStatus.cs
+++ b/MediaBrowser.Controller/Providers/MetadataStatus.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using MediaBrowser.Common.Extensions;
namespace MediaBrowser.Controller.Providers
{
@@ -14,6 +13,24 @@ namespace MediaBrowser.Controller.Providers
public Guid ItemId { get; set; }
/// <summary>
+ /// Gets or sets the name of the item.
+ /// </summary>
+ /// <value>The name of the item.</value>
+ public string ItemName { get; set; }
+
+ /// <summary>
+ /// Gets or sets the type of the item.
+ /// </summary>
+ /// <value>The type of the item.</value>
+ public string ItemType { get; set; }
+
+ /// <summary>
+ /// Gets or sets the name of the series.
+ /// </summary>
+ /// <value>The name of the series.</value>
+ public string SeriesName { get; set; }
+
+ /// <summary>
/// Gets or sets the date last metadata refresh.
/// </summary>
/// <value>The date last metadata refresh.</value>