diff options
| author | T. Adams <t.adams88@gmail.com> | 2015-03-13 21:57:10 -0700 |
|---|---|---|
| committer | T. Adams <t.adams88@gmail.com> | 2015-03-13 21:57:10 -0700 |
| commit | eff23da3737718c944a59078c24e3ccf19435b90 (patch) | |
| tree | 68d1c42e2bcd4a4be0398c8f4c0f1ba88d42e56e /MediaBrowser.Controller | |
| parent | b7b28ffd31892dac13004199766262126d2785c5 (diff) | |
| parent | dbb7fd61ff0545f8ebf7b9ece432f1408d43040c (diff) | |
Merge branch 'dev' into Video-Playlist-Controls
Diffstat (limited to 'MediaBrowser.Controller')
74 files changed, 791 insertions, 580 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index d868227d95..c033b144af 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -172,16 +172,6 @@ namespace MediaBrowser.Controller.Entities.Audio } /// <summary> - /// Determines whether the specified name has artist. - /// </summary> - /// <param name="name">The name.</param> - /// <returns><c>true</c> if the specified name has artist; otherwise, <c>false</c>.</returns> - public bool HasArtist(string name) - { - return AllArtists.Contains(name, StringComparer.OrdinalIgnoreCase); - } - - /// <summary> /// Gets the user data key. /// </summary> /// <returns>System.String.</returns> diff --git a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs index a20f053232..56921409ae 100644 --- a/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/IHasAlbumArtist.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; namespace MediaBrowser.Controller.Entities.Audio { @@ -9,10 +11,20 @@ namespace MediaBrowser.Controller.Entities.Audio public interface IHasArtist { - bool HasArtist(string name); - List<string> AllArtists { get; } - List<string> Artists { get; } + List<string> Artists { get; set; } + } + + public static class HasArtistExtensions + { + public static bool HasArtist(this IHasArtist hasArtist, string artist) + { + return hasArtist.Artists.Contains(artist, StringComparer.OrdinalIgnoreCase); + } + public static bool HasAnyArtist(this IHasArtist hasArtist, string artist) + { + return hasArtist.AllArtists.Contains(artist, StringComparer.OrdinalIgnoreCase); + } } } diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index e3f523b5a7..dc3f13b01d 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -120,16 +120,6 @@ namespace MediaBrowser.Controller.Entities.Audio get { return Parent as MusicArtist ?? UnknwonArtist; } } - /// <summary> - /// Determines whether the specified artist has artist. - /// </summary> - /// <param name="artist">The artist.</param> - /// <returns><c>true</c> if the specified artist has artist; otherwise, <c>false</c>.</returns> - public bool HasArtist(string artist) - { - return AllArtists.Contains(artist, StringComparer.OrdinalIgnoreCase); - } - public List<string> Artists { get; set; } /// <summary> diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index fed9689b36..4185590ab3 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -213,7 +213,7 @@ namespace MediaBrowser.Controller.Entities.Audio return i => { var hasArtist = i as IHasArtist; - return hasArtist != null && hasArtist.HasArtist(Name); + return hasArtist != null && hasArtist.HasAnyArtist(Name); }; } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index df28c282d2..b1fa128847 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1455,7 +1455,8 @@ namespace MediaBrowser.Controller.Entities /// <returns>Task.</returns> public virtual Task ChangedExternally() { - return RefreshMetadata(CancellationToken.None); + ProviderManager.QueueRefresh(Id, new MetadataRefreshOptions()); + return Task.FromResult(true); } /// <summary> diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index e99c11e87d..e1344009f0 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -30,7 +30,6 @@ namespace MediaBrowser.Controller.Entities public string[] IncludeItemTypes { get; set; } public string[] ExcludeItemTypes { get; set; } public string[] Genres { get; set; } - public string[] AllGenres { get; set; } public bool? IsMissing { get; set; } public bool? IsUnaired { get; set; } @@ -66,6 +65,7 @@ namespace MediaBrowser.Controller.Entities public bool? HasParentalRating { get; set; } public string[] Studios { get; set; } + public string[] StudioIds { get; set; } public ImageType[] ImageTypes { get; set; } public VideoType[] VideoTypes { get; set; } public int[] Years { get; set; } @@ -80,9 +80,9 @@ namespace MediaBrowser.Controller.Entities MediaTypes = new string[] { }; IncludeItemTypes = new string[] { }; ExcludeItemTypes = new string[] { }; - AllGenres = new string[] { }; Genres = new string[] { }; Studios = new string[] { }; + StudioIds = new string[] { }; ImageTypes = new ImageType[] { }; VideoTypes = new VideoType[] { }; Years = new int[] { }; diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs index 771c62fd6d..b2cad02de8 100644 --- a/MediaBrowser.Controller/Entities/MusicVideo.cs +++ b/MediaBrowser.Controller/Entities/MusicVideo.cs @@ -48,16 +48,6 @@ namespace MediaBrowser.Controller.Entities } /// <summary> - /// Determines whether the specified name has artist. - /// </summary> - /// <param name="name">The name.</param> - /// <returns><c>true</c> if the specified name has artist; otherwise, <c>false</c>.</returns> - public bool HasArtist(string name) - { - return AllArtists.Contains(name, StringComparer.OrdinalIgnoreCase); - } - - /// <summary> /// Gets the user data key. /// </summary> /// <returns>System.String.</returns> diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs index d0378821f6..9be30273a0 100644 --- a/MediaBrowser.Controller/Entities/UserView.cs +++ b/MediaBrowser.Controller/Entities/UserView.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.TV; +using MediaBrowser.Controller.Playlists; +using MediaBrowser.Controller.TV; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; using System; @@ -15,6 +16,7 @@ namespace MediaBrowser.Controller.Entities public Guid? UserId { get; set; } public static ITVSeriesManager TVSeriesManager; + public static IPlaylistManager PlaylistManager; public bool ContainsDynamicCategories(User user) { @@ -30,7 +32,7 @@ namespace MediaBrowser.Controller.Entities parent = LibraryManager.GetItemById(ParentId) as Folder ?? parent; } - return new UserViewBuilder(UserViewManager, LiveTvManager, ChannelManager, LibraryManager, Logger, UserDataManager, TVSeriesManager, CollectionManager) + return new UserViewBuilder(UserViewManager, LiveTvManager, ChannelManager, LibraryManager, Logger, UserDataManager, TVSeriesManager, CollectionManager, PlaylistManager) .GetUserItems(parent, this, ViewType, query); } diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 35ada4aef0..12eae9a751 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -5,6 +5,7 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.TV; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Entities; @@ -30,8 +31,9 @@ namespace MediaBrowser.Controller.Entities private readonly IUserDataManager _userDataManager; private readonly ITVSeriesManager _tvSeriesManager; private readonly ICollectionManager _collectionManager; + private readonly IPlaylistManager _playlistManager; - public UserViewBuilder(IUserViewManager userViewManager, ILiveTvManager liveTvManager, IChannelManager channelManager, ILibraryManager libraryManager, ILogger logger, IUserDataManager userDataManager, ITVSeriesManager tvSeriesManager, ICollectionManager collectionManager) + public UserViewBuilder(IUserViewManager userViewManager, ILiveTvManager liveTvManager, IChannelManager channelManager, ILibraryManager libraryManager, ILogger logger, IUserDataManager userDataManager, ITVSeriesManager tvSeriesManager, ICollectionManager collectionManager, IPlaylistManager playlistManager) { _userViewManager = userViewManager; _liveTvManager = liveTvManager; @@ -41,6 +43,7 @@ namespace MediaBrowser.Controller.Entities _userDataManager = userDataManager; _tvSeriesManager = tvSeriesManager; _collectionManager = collectionManager; + _playlistManager = playlistManager; } public async Task<QueryResult<BaseItem>> GetUserItems(Folder queryParent, Folder displayParent, string viewType, InternalItemsQuery query) @@ -115,6 +118,9 @@ namespace MediaBrowser.Controller.Entities case CollectionType.Games: return await GetGameView(user, queryParent, query).ConfigureAwait(false); + case CollectionType.Playlists: + return await GetPlaylistsView(queryParent, user, query).ConfigureAwait(false); + case CollectionType.BoxSets: return await GetBoxsetView(queryParent, user, query).ConfigureAwait(false); @@ -572,6 +578,11 @@ namespace MediaBrowser.Controller.Entities return GetResult(items, queryParent, query); } + private async Task<QueryResult<BaseItem>> GetPlaylistsView(Folder parent, User user, InternalItemsQuery query) + { + return GetResult(_playlistManager.GetPlaylists(user.Id.ToString("N")), parent, query); + } + private async Task<QueryResult<BaseItem>> GetBoxsetView(Folder parent, User user, InternalItemsQuery query) { return GetResult(GetMediaFolders(user).SelectMany(i => @@ -935,11 +946,6 @@ namespace MediaBrowser.Controller.Entities return false; } - if (request.AllGenres.Length > 0) - { - return false; - } - if (request.Genres.Length > 0) { return false; @@ -1050,6 +1056,11 @@ namespace MediaBrowser.Controller.Entities return false; } + if (request.StudioIds.Length > 0) + { + return false; + } + if (request.VideoTypes.Length > 0) { return false; @@ -1569,12 +1580,6 @@ namespace MediaBrowser.Controller.Entities return false; } - // Apply genre filter - if (query.AllGenres.Length > 0 && !query.AllGenres.All(v => item.Genres.Contains(v, StringComparer.OrdinalIgnoreCase))) - { - return false; - } - // Filter by VideoType if (query.VideoTypes.Length > 0) { @@ -1596,6 +1601,16 @@ namespace MediaBrowser.Controller.Entities return false; } + // Apply studio filter + if (query.StudioIds.Length > 0 && !query.StudioIds.Any(id => + { + var studioItem = libraryManager.GetItemById(id); + return studioItem != null && item.Studios.Contains(studioItem.Name, StringComparer.OrdinalIgnoreCase); + })) + { + return false; + } + // Apply year filter if (query.Years.Length > 0) { @@ -1714,7 +1729,7 @@ namespace MediaBrowser.Controller.Entities var parent = user.RootFolder; - //list.Add(await GetUserView(SpecialFolder.LiveTvNowPlaying, user, "0", parent).ConfigureAwait(false)); + //list.Add(await GetUserSubView(SpecialFolder.LiveTvNowPlaying, user, "0", parent).ConfigureAwait(false)); list.Add(await GetUserView(SpecialFolder.LiveTvChannels, user, string.Empty, parent).ConfigureAwait(false)); list.Add(await GetUserView(SpecialFolder.LiveTvRecordingGroups, user, string.Empty, parent).ConfigureAwait(false)); @@ -1723,7 +1738,7 @@ namespace MediaBrowser.Controller.Entities private async Task<UserView> GetUserView(string name, string type, User user, string sortName, BaseItem parent) { - var view = await _userViewManager.GetUserView(name, parent.Id.ToString("N"), type, user, sortName, CancellationToken.None) + var view = await _userViewManager.GetUserSubView(name, parent.Id.ToString("N"), type, user, sortName, CancellationToken.None) .ConfigureAwait(false); return view; @@ -1731,7 +1746,7 @@ namespace MediaBrowser.Controller.Entities private async Task<UserView> GetUserView(string type, User user, string sortName, BaseItem parent) { - var view = await _userViewManager.GetUserView(parent.Id.ToString("N"), type, user, sortName, CancellationToken.None) + var view = await _userViewManager.GetUserSubView(parent.Id.ToString("N"), type, user, sortName, CancellationToken.None) .ConfigureAwait(false); return view; diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 9c8ed45a53..d16589f07f 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -302,7 +302,7 @@ namespace MediaBrowser.Controller.Library IEnumerable<BaseItem> ReplaceVideosWithPrimaryVersions(IEnumerable<BaseItem> items); /// <summary> - /// Gets the special folder. + /// Gets the named view. /// </summary> /// <param name="user">The user.</param> /// <param name="name">The name.</param> @@ -311,7 +311,7 @@ namespace MediaBrowser.Controller.Library /// <param name="sortName">Name of the sort.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task<UserView>.</returns> - Task<UserView> GetSpecialFolder(User user, + Task<UserView> GetNamedView(User user, string name, string parentId, string viewType, @@ -321,12 +321,14 @@ namespace MediaBrowser.Controller.Library /// <summary> /// Gets the named view. /// </summary> + /// <param name="user">The user.</param> /// <param name="name">The name.</param> /// <param name="viewType">Type of the view.</param> /// <param name="sortName">Name of the sort.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task<UserView>.</returns> - Task<UserView> GetNamedView(string name, + Task<UserView> GetNamedView(User user, + string name, string viewType, string sortName, CancellationToken cancellationToken); diff --git a/MediaBrowser.Controller/Library/IUserViewManager.cs b/MediaBrowser.Controller/Library/IUserViewManager.cs index f55c179248..f0b862c2d2 100644 --- a/MediaBrowser.Controller/Library/IUserViewManager.cs +++ b/MediaBrowser.Controller/Library/IUserViewManager.cs @@ -12,12 +12,10 @@ namespace MediaBrowser.Controller.Library { Task<IEnumerable<Folder>> GetUserViews(UserViewQuery query, CancellationToken cancellationToken); - Task<UserView> GetUserView(string name, string parentId, string type, User user, string sortName, + Task<UserView> GetUserSubView(string name, string parentId, string type, User user, string sortName, CancellationToken cancellationToken); - Task<UserView> GetUserView(string type, string sortName, CancellationToken cancellationToken); - - Task<UserView> GetUserView(string category, string type, User user, string sortName, CancellationToken cancellationToken); + Task<UserView> GetUserSubView(string category, string type, User user, string sortName, CancellationToken cancellationToken); List<Tuple<BaseItem, List<BaseItem>>> GetLatestItems(LatestItemsQuery request); } diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index f046c76fc9..678d7841c6 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -247,22 +247,67 @@ <Compile Include="Persistence\MediaStreamQuery.cs" /> <Compile Include="Playlists\IPlaylistManager.cs" /> <Compile Include="Playlists\Playlist.cs" /> + <Compile Include="Providers\AlbumInfo.cs" /> + <Compile Include="Providers\ArtistInfo.cs" /> + <Compile Include="Providers\BookInfo.cs" /> + <Compile Include="Providers\BoxSetInfo.cs" /> + <Compile Include="Providers\ChannelItemLookupInfo.cs" /> <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" /> + <Compile Include="Providers\GameInfo.cs" /> + <Compile Include="Providers\GameSystemInfo.cs" /> <Compile Include="Providers\ICustomMetadataProvider.cs" /> + <Compile Include="Providers\IDirectoryService.cs" /> + <Compile Include="Providers\IDynamicImageProvider.cs" /> <Compile Include="Providers\IExternalId.cs" /> <Compile Include="Providers\IExtrasProvider.cs" /> <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" /> <Compile Include="Providers\ILocalMetadataProvider.cs" /> + <Compile Include="Providers\ImageRefreshMode.cs" /> + <Compile Include="Providers\ImageRefreshOptions.cs" /> + <Compile Include="Providers\IPreRefreshProvider.cs" /> <Compile Include="Providers\IProviderRepository.cs" /> <Compile Include="Providers\IRemoteImageProvider.cs" /> <Compile Include="Providers\ILocalImageProvider.cs" /> <Compile Include="Providers\IMetadataProvider.cs" /> <Compile Include="Providers\IMetadataService.cs" /> <Compile Include="Providers\IRemoteMetadataProvider.cs" /> + <Compile Include="Providers\IRemoteSearchProvider.cs" /> + <Compile Include="Providers\ISeriesOrderProvider.cs" /> + <Compile Include="Providers\ItemInfo.cs" /> + <Compile Include="Providers\LocalImageInfo.cs" /> + <Compile Include="Providers\LocalMetadataResult.cs" /> + <Compile Include="Providers\MetadataRefreshMode.cs" /> + <Compile Include="Providers\MetadataResult.cs" /> + <Compile Include="Providers\MovieInfo.cs" /> + <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" /> + <Compile Include="Providers\TrailerInfo.cs" /> <Compile Include="Providers\VideoContentType.cs" /> <Compile Include="RelatedMedia\IRelatedMediaProvider.cs" /> <Compile Include="Security\AuthenticationInfo.cs" /> @@ -350,6 +395,7 @@ <Compile Include="Sync\ISyncManager.cs" /> <Compile Include="Sync\ISyncProvider.cs" /> <Compile Include="Sync\ISyncRepository.cs" /> + <Compile Include="Sync\SendFileResult.cs" /> <Compile Include="Themes\IAppThemeManager.cs" /> <Compile Include="Themes\InternalThemeImage.cs" /> <Compile Include="TV\ITVSeriesManager.cs" /> diff --git a/MediaBrowser.Controller/Playlists/Playlist.cs b/MediaBrowser.Controller/Playlists/Playlist.cs index 3479902cbd..fdc36db354 100644 --- a/MediaBrowser.Controller/Playlists/Playlist.cs +++ b/MediaBrowser.Controller/Playlists/Playlist.cs @@ -106,7 +106,7 @@ namespace MediaBrowser.Controller.Playlists Func<BaseItem, bool> filter = i => { var audio = i as Audio; - return audio != null && audio.HasArtist(musicArtist.Name); + return audio != null && audio.HasAnyArtist(musicArtist.Name); }; var items = user == null diff --git a/MediaBrowser.Controller/Providers/AlbumInfo.cs b/MediaBrowser.Controller/Providers/AlbumInfo.cs new file mode 100644 index 0000000000..b884774094 --- /dev/null +++ b/MediaBrowser.Controller/Providers/AlbumInfo.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; + +namespace MediaBrowser.Controller.Providers +{ + public class AlbumInfo : ItemLookupInfo + { + /// <summary> + /// Gets or sets the album artist. + /// </summary> + /// <value>The album artist.</value> + public List<string> AlbumArtists { get; set; } + + /// <summary> + /// Gets or sets the artist provider ids. + /// </summary> + /// <value>The artist provider ids.</value> + public Dictionary<string, string> ArtistProviderIds { get; set; } + public List<SongInfo> SongInfos { get; set; } + + public AlbumInfo() + { + ArtistProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); + SongInfos = new List<SongInfo>(); + AlbumArtists = new List<string>(); + } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ArtistInfo.cs b/MediaBrowser.Controller/Providers/ArtistInfo.cs new file mode 100644 index 0000000000..8a4abd5c68 --- /dev/null +++ b/MediaBrowser.Controller/Providers/ArtistInfo.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; + +namespace MediaBrowser.Controller.Providers +{ + public class ArtistInfo : ItemLookupInfo + { + public List<SongInfo> SongInfos { get; set; } + + public ArtistInfo() + { + SongInfos = new List<SongInfo>(); + } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/BookInfo.cs b/MediaBrowser.Controller/Providers/BookInfo.cs new file mode 100644 index 0000000000..52519bcb04 --- /dev/null +++ b/MediaBrowser.Controller/Providers/BookInfo.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Controller.Providers +{ + public class BookInfo : ItemLookupInfo + { + public string SeriesName { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/BoxSetInfo.cs b/MediaBrowser.Controller/Providers/BoxSetInfo.cs new file mode 100644 index 0000000000..f604231de4 --- /dev/null +++ b/MediaBrowser.Controller/Providers/BoxSetInfo.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Controller.Providers +{ + public class BoxSetInfo : ItemLookupInfo + { + + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ChannelItemLookupInfo.cs b/MediaBrowser.Controller/Providers/ChannelItemLookupInfo.cs new file mode 100644 index 0000000000..6c972f3bf5 --- /dev/null +++ b/MediaBrowser.Controller/Providers/ChannelItemLookupInfo.cs @@ -0,0 +1,11 @@ +using MediaBrowser.Model.Channels; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public class ChannelItemLookupInfo : ItemLookupInfo + { + public ChannelMediaContentType ContentType { get; set; } + public ExtraType ExtraType { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/DirectoryService.cs b/MediaBrowser.Controller/Providers/DirectoryService.cs index 06ea7be02d..9e549dcf3f 100644 --- a/MediaBrowser.Controller/Providers/DirectoryService.cs +++ b/MediaBrowser.Controller/Providers/DirectoryService.cs @@ -7,16 +7,6 @@ using System.Linq; namespace MediaBrowser.Controller.Providers { - public interface IDirectoryService - { - IEnumerable<FileSystemInfo> GetFileSystemEntries(string path); - IEnumerable<FileSystemInfo> GetFiles(string path); - IEnumerable<FileSystemInfo> GetDirectories(string path); - IEnumerable<FileSystemInfo> GetFiles(string path, bool clearCache); - FileSystemInfo GetFile(string path); - Dictionary<string, FileSystemInfo> GetFileSystemDictionary(string path); - } - public class DirectoryService : IDirectoryService { private readonly ILogger _logger; diff --git a/MediaBrowser.Controller/Providers/DynamicImageInfo.cs b/MediaBrowser.Controller/Providers/DynamicImageInfo.cs new file mode 100644 index 0000000000..14b4c6afbe --- /dev/null +++ b/MediaBrowser.Controller/Providers/DynamicImageInfo.cs @@ -0,0 +1,10 @@ +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public class DynamicImageInfo + { + public string ImageId { get; set; } + public ImageType Type { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/DynamicImageResponse.cs b/MediaBrowser.Controller/Providers/DynamicImageResponse.cs new file mode 100644 index 0000000000..71a937cd9d --- /dev/null +++ b/MediaBrowser.Controller/Providers/DynamicImageResponse.cs @@ -0,0 +1,35 @@ +using System; +using System.IO; +using MediaBrowser.Model.Drawing; + +namespace MediaBrowser.Controller.Providers +{ + public class DynamicImageResponse + { + public string Path { get; set; } + public Stream Stream { get; set; } + public ImageFormat Format { get; set; } + public bool HasImage { get; set; } + public string InternalCacheKey { get; set; } + + 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; + } + } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/EpisodeIdentity.cs b/MediaBrowser.Controller/Providers/EpisodeIdentity.cs new file mode 100644 index 0000000000..53f469e955 --- /dev/null +++ b/MediaBrowser.Controller/Providers/EpisodeIdentity.cs @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000000..88a7cbab7f --- /dev/null +++ b/MediaBrowser.Controller/Providers/EpisodeInfo.cs @@ -0,0 +1,34 @@ +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> + { + private List<EpisodeIdentity> _identities = new List<EpisodeIdentity>(); + + public Dictionary<string, string> SeriesProviderIds { get; set; } + + public int? IndexNumberEnd { get; set; } + public int? AnimeSeriesIndex { get; set; } + + public EpisodeInfo() + { + 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/ExtraInfo.cs b/MediaBrowser.Controller/Providers/ExtraInfo.cs new file mode 100644 index 0000000000..1fbe6e93aa --- /dev/null +++ b/MediaBrowser.Controller/Providers/ExtraInfo.cs @@ -0,0 +1,15 @@ +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public class ExtraInfo + { + public string Path { get; set; } + + public LocationType LocationType { get; set; } + + public bool IsDownloadable { get; set; } + + public ExtraType ExtraType { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ExtraSource.cs b/MediaBrowser.Controller/Providers/ExtraSource.cs new file mode 100644 index 0000000000..901af60f86 --- /dev/null +++ b/MediaBrowser.Controller/Providers/ExtraSource.cs @@ -0,0 +1,9 @@ +namespace MediaBrowser.Controller.Providers +{ + public enum ExtraSource + { + Local = 1, + Metadata = 2, + Remote = 3 + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/GameInfo.cs b/MediaBrowser.Controller/Providers/GameInfo.cs new file mode 100644 index 0000000000..771cf6cecb --- /dev/null +++ b/MediaBrowser.Controller/Providers/GameInfo.cs @@ -0,0 +1,11 @@ +namespace MediaBrowser.Controller.Providers +{ + public class GameInfo : ItemLookupInfo + { + /// <summary> + /// Gets or sets the game system. + /// </summary> + /// <value>The game system.</value> + public string GameSystem { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/GameSystemInfo.cs b/MediaBrowser.Controller/Providers/GameSystemInfo.cs new file mode 100644 index 0000000000..efe2635cd3 --- /dev/null +++ b/MediaBrowser.Controller/Providers/GameSystemInfo.cs @@ -0,0 +1,11 @@ +namespace MediaBrowser.Controller.Providers +{ + public class GameSystemInfo : ItemLookupInfo + { + /// <summary> + /// Gets or sets the path. + /// </summary> + /// <value>The path.</value> + public string Path { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs b/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs index 3ce6ac46b9..c9393f4c36 100644 --- a/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/ICustomMetadataProvider.cs @@ -21,9 +21,4 @@ namespace MediaBrowser.Controller.Providers /// <returns>Task{ItemUpdateType}.</returns> Task<ItemUpdateType> FetchAsync(TItemType item, MetadataRefreshOptions options, CancellationToken cancellationToken); } - - public interface IPreRefreshProvider : ICustomMetadataProvider - { - - } } diff --git a/MediaBrowser.Controller/Providers/IDirectoryService.cs b/MediaBrowser.Controller/Providers/IDirectoryService.cs new file mode 100644 index 0000000000..343cf361f0 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IDirectoryService.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using System.IO; + +namespace MediaBrowser.Controller.Providers +{ + public interface IDirectoryService + { + IEnumerable<FileSystemInfo> GetFileSystemEntries(string path); + IEnumerable<FileSystemInfo> GetFiles(string path); + IEnumerable<FileSystemInfo> GetDirectories(string path); + IEnumerable<FileSystemInfo> GetFiles(string path, bool clearCache); + FileSystemInfo GetFile(string path); + Dictionary<string, FileSystemInfo> GetFileSystemDictionary(string path); + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IDynamicImageProvider.cs b/MediaBrowser.Controller/Providers/IDynamicImageProvider.cs new file mode 100644 index 0000000000..9c3f947637 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IDynamicImageProvider.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public interface IDynamicImageProvider : IImageProvider + { + /// <summary> + /// Gets the supported images. + /// </summary> + /// <param name="item">The item.</param> + /// <returns>IEnumerable{ImageType}.</returns> + IEnumerable<ImageType> GetSupportedImages(IHasImages item); + + /// <summary> + /// Gets the image. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="type">The type.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task{DynamicImageResponse}.</returns> + Task<DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken); + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IExtrasProvider.cs b/MediaBrowser.Controller/Providers/IExtrasProvider.cs index 953bf02a11..3b72232c21 100644 --- a/MediaBrowser.Controller/Providers/IExtrasProvider.cs +++ b/MediaBrowser.Controller/Providers/IExtrasProvider.cs @@ -1,5 +1,4 @@ using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.Providers { @@ -18,22 +17,4 @@ namespace MediaBrowser.Controller.Providers /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> bool Supports(IHasMetadata item); } - - public enum ExtraSource - { - Local = 1, - Metadata = 2, - Remote = 3 - } - - public class ExtraInfo - { - public string Path { get; set; } - - public LocationType LocationType { get; set; } - - public bool IsDownloadable { get; set; } - - public ExtraType ExtraType { get; set; } - } } diff --git a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs b/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs index d914abf618..aa0b0e3c97 100644 --- a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs +++ b/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs @@ -14,16 +14,4 @@ namespace MediaBrowser.Controller.Providers /// <returns><c>true</c> if the specified item has changed; otherwise, <c>false</c>.</returns> bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date); } - - public interface IHasItemChangeMonitor - { - /// <summary> - /// Determines whether the specified item has changed. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="status">The status.</param> - /// <param name="directoryService">The directory service.</param> - /// <returns><c>true</c> if the specified item has changed; otherwise, <c>false</c>.</returns> - bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService); - } } diff --git a/MediaBrowser.Controller/Providers/IHasIdentities.cs b/MediaBrowser.Controller/Providers/IHasIdentities.cs new file mode 100644 index 0000000000..36f940dd31 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IHasIdentities.cs @@ -0,0 +1,14 @@ +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/IHasItemChangeMonitor.cs b/MediaBrowser.Controller/Providers/IHasItemChangeMonitor.cs new file mode 100644 index 0000000000..4c7069dd6d --- /dev/null +++ b/MediaBrowser.Controller/Providers/IHasItemChangeMonitor.cs @@ -0,0 +1,16 @@ +using MediaBrowser.Controller.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public interface IHasItemChangeMonitor + { + /// <summary> + /// Determines whether the specified item has changed. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="status">The status.</param> + /// <param name="directoryService">The directory service.</param> + /// <returns><c>true</c> if the specified item has changed; otherwise, <c>false</c>.</returns> + bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService); + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IHasLookupInfo.cs b/MediaBrowser.Controller/Providers/IHasLookupInfo.cs new file mode 100644 index 0000000000..afce498526 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IHasLookupInfo.cs @@ -0,0 +1,8 @@ +namespace MediaBrowser.Controller.Providers +{ + public interface IHasLookupInfo<out TLookupInfoType> + where TLookupInfoType : ItemLookupInfo, new() + { + TLookupInfoType GetLookupInfo(); + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IHasOrder.cs b/MediaBrowser.Controller/Providers/IHasOrder.cs new file mode 100644 index 0000000000..cb5298dd36 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IHasOrder.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Controller.Providers +{ + public interface IHasOrder + { + int Order { get; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IImageFileSaver.cs b/MediaBrowser.Controller/Providers/IImageFileSaver.cs new file mode 100644 index 0000000000..3e11d8bf89 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IImageFileSaver.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Drawing; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public interface IImageFileSaver : IImageSaver + { + /// <summary> + /// Gets the save paths. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="type">The type.</param> + /// <param name="format">The format.</param> + /// <param name="index">The index.</param> + /// <returns>IEnumerable{System.String}.</returns> + IEnumerable<string> GetSavePaths(IHasImages item, ImageType type, ImageFormat format, int index); + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IImageSaver.cs b/MediaBrowser.Controller/Providers/IImageSaver.cs index a983de63e7..62017160f4 100644 --- a/MediaBrowser.Controller/Providers/IImageSaver.cs +++ b/MediaBrowser.Controller/Providers/IImageSaver.cs @@ -1,9 +1,4 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Drawing; -using MediaBrowser.Model.Entities; -using System.Collections.Generic; - -namespace MediaBrowser.Controller.Providers +namespace MediaBrowser.Controller.Providers { public interface IImageSaver { @@ -13,17 +8,4 @@ namespace MediaBrowser.Controller.Providers /// <value>The name.</value> string Name { get; } } - - public interface IImageFileSaver : IImageSaver - { - /// <summary> - /// Gets the save paths. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="type">The type.</param> - /// <param name="format">The format.</param> - /// <param name="index">The index.</param> - /// <returns>IEnumerable{System.String}.</returns> - IEnumerable<string> GetSavePaths(IHasImages item, ImageType type, ImageFormat format, int index); - } } diff --git a/MediaBrowser.Controller/Providers/IItemIdentity.cs b/MediaBrowser.Controller/Providers/IItemIdentity.cs new file mode 100644 index 0000000000..cab189c84f --- /dev/null +++ b/MediaBrowser.Controller/Providers/IItemIdentity.cs @@ -0,0 +1,7 @@ +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 new file mode 100644 index 0000000000..30e96b9e51 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IItemIdentityConverter.cs @@ -0,0 +1,4 @@ +namespace MediaBrowser.Controller.Providers +{ + public interface IItemIdentityConverter : IHasOrder { } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IItemIdentityProvider.cs b/MediaBrowser.Controller/Providers/IItemIdentityProvider.cs new file mode 100644 index 0000000000..9d437c208b --- /dev/null +++ b/MediaBrowser.Controller/Providers/IItemIdentityProvider.cs @@ -0,0 +1,4 @@ +namespace MediaBrowser.Controller.Providers +{ + public interface IItemIdentityProvider : IHasOrder { } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ILocalImageFileProvider.cs b/MediaBrowser.Controller/Providers/ILocalImageFileProvider.cs new file mode 100644 index 0000000000..7e5d828437 --- /dev/null +++ b/MediaBrowser.Controller/Providers/ILocalImageFileProvider.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using MediaBrowser.Controller.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public interface ILocalImageFileProvider : ILocalImageProvider + { + List<LocalImageInfo> GetImages(IHasImages item, IDirectoryService directoryService); + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ILocalImageProvider.cs b/MediaBrowser.Controller/Providers/ILocalImageProvider.cs index d1345d7a6e..1027a4cb27 100644 --- a/MediaBrowser.Controller/Providers/ILocalImageProvider.cs +++ b/MediaBrowser.Controller/Providers/ILocalImageProvider.cs @@ -1,13 +1,4 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Drawing; -using MediaBrowser.Model.Entities; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading; -using System.Threading.Tasks; - -namespace MediaBrowser.Controller.Providers +namespace MediaBrowser.Controller.Providers { /// <summary> /// This is just a marker interface @@ -15,68 +6,4 @@ namespace MediaBrowser.Controller.Providers public interface ILocalImageProvider : IImageProvider { } - - public interface ILocalImageFileProvider : ILocalImageProvider - { - List<LocalImageInfo> GetImages(IHasImages item, IDirectoryService directoryService); - } - - public class LocalImageInfo - { - public FileSystemInfo FileInfo { get; set; } - public ImageType Type { get; set; } - } - - public interface IDynamicImageProvider : IImageProvider - { - /// <summary> - /// Gets the supported images. - /// </summary> - /// <param name="item">The item.</param> - /// <returns>IEnumerable{ImageType}.</returns> - IEnumerable<ImageType> GetSupportedImages(IHasImages item); - - /// <summary> - /// Gets the image. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="type">The type.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task{DynamicImageResponse}.</returns> - Task<DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken); - } - - public class DynamicImageInfo - { - public string ImageId { get; set; } - public ImageType Type { get; set; } - } - - public class DynamicImageResponse - { - public string Path { get; set; } - public Stream Stream { get; set; } - public ImageFormat Format { get; set; } - public bool HasImage { get; set; } - - 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 61bc3b87ba..3a8ef73254 100644 --- a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs @@ -1,6 +1,4 @@ using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Entities; -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -24,29 +22,4 @@ namespace MediaBrowser.Controller.Providers IDirectoryService directoryService, CancellationToken cancellationToken); } - - public class ItemInfo - { - public string Path { get; set; } - - 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 List<ChapterInfo> Chapters { get; set; } - public List<UserItemData> UserDataLIst { get; set; } - - public LocalMetadataResult() - { - Images = new List<LocalImageInfo>(); - Chapters = new List<ChapterInfo>(); - UserDataLIst = new List<UserItemData>(); - } - } } diff --git a/MediaBrowser.Controller/Providers/IMetadataProvider.cs b/MediaBrowser.Controller/Providers/IMetadataProvider.cs index 52cd6fceac..26f43d820d 100644 --- a/MediaBrowser.Controller/Providers/IMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/IMetadataProvider.cs @@ -19,15 +19,4 @@ namespace MediaBrowser.Controller.Providers where TItemType : IHasMetadata { } - - public interface IHasOrder - { - int Order { get; } - } - - public class MetadataResult<T> - { - public bool HasMetadata { get; set; } - public T Item { get; set; } - } } diff --git a/MediaBrowser.Controller/Providers/IPreRefreshProvider.cs b/MediaBrowser.Controller/Providers/IPreRefreshProvider.cs new file mode 100644 index 0000000000..6086749052 --- /dev/null +++ b/MediaBrowser.Controller/Providers/IPreRefreshProvider.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Controller.Providers +{ + public interface IPreRefreshProvider : ICustomMetadataProvider + { + + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs index 38ac958b38..e510a89956 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -4,6 +4,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; +using System; using System.Collections.Generic; using System.IO; using System.Threading; @@ -17,6 +18,13 @@ namespace MediaBrowser.Controller.Providers public interface IProviderManager { /// <summary> + /// Queues the refresh. + /// </summary> + /// <param name="itemId">The item identifier.</param> + /// <param name="options">The options.</param> + void QueueRefresh(Guid itemId, MetadataRefreshOptions options); + + /// <summary> /// Refreshes the metadata. /// </summary> /// <param name="item">The item.</param> diff --git a/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs b/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs index 0ff7ee5a9d..5e2e1b4c72 100644 --- a/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/IRemoteMetadataProvider.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Providers; using System.Collections.Generic; using System.Threading; @@ -18,37 +17,9 @@ namespace MediaBrowser.Controller.Providers Task<MetadataResult<TItemType>> GetMetadata(TLookupInfoType info, CancellationToken cancellationToken); } - public interface IRemoteSearchProvider : IMetadataProvider - { - /// <summary> - /// Gets the image response. - /// </summary> - /// <param name="url">The URL.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task{HttpResponseInfo}.</returns> - Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken); - } - public interface IRemoteSearchProvider<in TLookupInfoType> : IRemoteSearchProvider where TLookupInfoType : ItemLookupInfo { Task<IEnumerable<RemoteSearchResult>> GetSearchResults(TLookupInfoType searchInfo, CancellationToken cancellationToken); } - - public class RemoteSearchQuery<T> - where T : ItemLookupInfo - { - public T SearchInfo { get; set; } - - /// <summary> - /// If set will only search within the given provider - /// </summary> - public string SearchProviderName { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether [include disabled providers]. - /// </summary> - /// <value><c>true</c> if [include disabled providers]; otherwise, <c>false</c>.</value> - public bool IncludeDisabledProviders { get; set; } - } } diff --git a/MediaBrowser.Controller/Providers/IRemoteSearchProvider.cs b/MediaBrowser.Controller/Providers/IRemoteSearchProvider.cs new file mode 100644 index 0000000000..0077def42d --- /dev/null +++ b/MediaBrowser.Controller/Providers/IRemoteSearchProvider.cs @@ -0,0 +1,17 @@ +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Common.Net; + +namespace MediaBrowser.Controller.Providers +{ + public interface IRemoteSearchProvider : IMetadataProvider + { + /// <summary> + /// Gets the image response. + /// </summary> + /// <param name="url">The URL.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task{HttpResponseInfo}.</returns> + Task<HttpResponseInfo> GetImageResponse(string url, CancellationToken cancellationToken); + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ISeriesOrderManager.cs b/MediaBrowser.Controller/Providers/ISeriesOrderManager.cs index a3adab1b90..235d0ada5a 100644 --- a/MediaBrowser.Controller/Providers/ISeriesOrderManager.cs +++ b/MediaBrowser.Controller/Providers/ISeriesOrderManager.cs @@ -7,17 +7,6 @@ using MediaBrowser.Common; namespace MediaBrowser.Controller.Providers { - public interface ISeriesOrderProvider - { - string OrderType { get; } - Task<int?> FindSeriesIndex(string seriesName); - } - - public static class SeriesOrderTypes - { - public const string Anime = "Anime"; - } - public interface ISeriesOrderManager { Task<int?> FindSeriesIndex(string orderType, string seriesName); diff --git a/MediaBrowser.Controller/Providers/ISeriesOrderProvider.cs b/MediaBrowser.Controller/Providers/ISeriesOrderProvider.cs new file mode 100644 index 0000000000..ee0f3c197f --- /dev/null +++ b/MediaBrowser.Controller/Providers/ISeriesOrderProvider.cs @@ -0,0 +1,10 @@ +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Providers +{ + public interface ISeriesOrderProvider + { + string OrderType { get; } + Task<int?> FindSeriesIndex(string seriesName); + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ImageRefreshMode.cs b/MediaBrowser.Controller/Providers/ImageRefreshMode.cs new file mode 100644 index 0000000000..df10c91f6a --- /dev/null +++ b/MediaBrowser.Controller/Providers/ImageRefreshMode.cs @@ -0,0 +1,25 @@ +namespace MediaBrowser.Controller.Providers +{ + public enum ImageRefreshMode + { + /// <summary> + /// The none + /// </summary> + None = 0, + + /// <summary> + /// The default + /// </summary> + Default = 1, + + /// <summary> + /// Existing images will be validated + /// </summary> + ValidationOnly = 2, + + /// <summary> + /// All providers will be executed to search for new metadata + /// </summary> + FullRefresh = 3 + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs b/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs new file mode 100644 index 0000000000..a66cc6f222 --- /dev/null +++ b/MediaBrowser.Controller/Providers/ImageRefreshOptions.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public class ImageRefreshOptions + { + public ImageRefreshMode ImageRefreshMode { get; set; } + public IDirectoryService DirectoryService { get; private set; } + + public bool ReplaceAllImages { get; set; } + + public List<ImageType> ReplaceImages { get; set; } + + public ImageRefreshOptions(IDirectoryService directoryService) + { + ImageRefreshMode = ImageRefreshMode.Default; + DirectoryService = directoryService; + + ReplaceImages = new List<ImageType>(); + } + + public bool IsReplacingImage(ImageType type) + { + return ImageRefreshMode == ImageRefreshMode.FullRefresh && + (ReplaceAllImages || ReplaceImages.Contains(type)); + } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ItemIdentities.cs b/MediaBrowser.Controller/Providers/ItemIdentities.cs index 8d24f6c1fb..939fd3b8ff 100644 --- a/MediaBrowser.Controller/Providers/ItemIdentities.cs +++ b/MediaBrowser.Controller/Providers/ItemIdentities.cs @@ -1,24 +1,7 @@ -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; +using System.Threading.Tasks; namespace MediaBrowser.Controller.Providers { - public interface IItemIdentity - { - string Type { get; } - } - - public interface IHasIdentities<out TIdentity> - where TIdentity : IItemIdentity - { - IEnumerable<TIdentity> Identities { get; } - - Task FindIdentities(IProviderManager providerManager, CancellationToken cancellationToken); - } - - public interface IItemIdentityProvider : IHasOrder { } - public interface IItemIdentityProvider<in TLookupInfo, TIdentity> : IItemIdentityProvider where TLookupInfo : ItemLookupInfo where TIdentity : IItemIdentity @@ -26,8 +9,6 @@ namespace MediaBrowser.Controller.Providers Task<TIdentity> FindIdentity(TLookupInfo info); } - public interface IItemIdentityConverter : IHasOrder { } - public interface IItemIdentityConverter<TIdentity> : IItemIdentityConverter where TIdentity : IItemIdentity { diff --git a/MediaBrowser.Controller/Providers/ItemInfo.cs b/MediaBrowser.Controller/Providers/ItemInfo.cs new file mode 100644 index 0000000000..113a7bb8ec --- /dev/null +++ b/MediaBrowser.Controller/Providers/ItemInfo.cs @@ -0,0 +1,9 @@ +namespace MediaBrowser.Controller.Providers +{ + public class ItemInfo + { + public string Path { get; set; } + + public bool IsInMixedFolder { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/ItemLookupInfo.cs b/MediaBrowser.Controller/Providers/ItemLookupInfo.cs index 649096a75b..91dc33214c 100644 --- a/MediaBrowser.Controller/Providers/ItemLookupInfo.cs +++ b/MediaBrowser.Controller/Providers/ItemLookupInfo.cs @@ -1,8 +1,4 @@ -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Model.Channels; -using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; @@ -43,204 +39,4 @@ namespace MediaBrowser.Controller.Providers ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); } } - - 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. - /// </summary> - /// <value>The album artist.</value> - public List<string> AlbumArtists { get; set; } - - /// <summary> - /// Gets or sets the artist provider ids. - /// </summary> - /// <value>The artist provider ids.</value> - public Dictionary<string, string> ArtistProviderIds { get; set; } - public List<SongInfo> SongInfos { get; set; } - - public AlbumInfo() - { - ArtistProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); - SongInfos = new List<SongInfo>(); - AlbumArtists = new List<string>(); - } - } - - public class GameInfo : ItemLookupInfo - { - /// <summary> - /// Gets or sets the game system. - /// </summary> - /// <value>The game system.</value> - public string GameSystem { get; set; } - } - - public class GameSystemInfo : ItemLookupInfo - { - /// <summary> - /// Gets or sets the path. - /// </summary> - /// <value>The path.</value> - public string Path { get; set; } - } - - public class EpisodeInfo : ItemLookupInfo, IHasIdentities<EpisodeIdentity> - { - private List<EpisodeIdentity> _identities = new List<EpisodeIdentity>(); - - public Dictionary<string, string> SeriesProviderIds { get; set; } - - public int? IndexNumberEnd { get; set; } - public int? AnimeSeriesIndex { get; set; } - - public EpisodeInfo() - { - 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(); - } - } - - 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; } - } - - public class SongInfo : ItemLookupInfo - { - public List<string> AlbumArtists { get; set; } - public string Album { get; set; } - public List<string> Artists { get; set; } - - public SongInfo() - { - Artists = new List<string>(); - AlbumArtists = new List<string>(); - } - } - - public class SeriesInfo : ItemLookupInfo, IHasIdentities<SeriesIdentity> - { - 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(); - } - } - - public class SeriesIdentity : IItemIdentity - { - public string Type { get; set; } - - public string Id { get; set; } - } - - public class PersonLookupInfo : ItemLookupInfo - { - - } - - public class MovieInfo : ItemLookupInfo - { - - } - - public class BoxSetInfo : ItemLookupInfo - { - - } - - public class MusicVideoInfo : ItemLookupInfo - { - - } - - public class TrailerInfo : ItemLookupInfo - { - public bool IsLocalTrailer { get; set; } - } - - public class BookInfo : ItemLookupInfo - { - public string SeriesName { get; set; } - } - - public class SeasonInfo : ItemLookupInfo, IHasIdentities<SeasonIdentity> - { - private List<SeasonIdentity> _identities = new List<SeasonIdentity>(); - - public Dictionary<string, string> SeriesProviderIds { get; set; } - public int? AnimeSeriesIndex { get; set; } - - public SeasonInfo() - { - 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(); - } - } - - public class SeasonIdentity : IItemIdentity - { - public string Type { get; set; } - - public string SeriesId { get; set; } - - public int SeasonIndex { get; set; } - } - - public class ChannelItemLookupInfo : ItemLookupInfo - { - public ChannelMediaContentType ContentType { get; set; } - public ExtraType ExtraType { get; set; } - } } diff --git a/MediaBrowser.Controller/Providers/LocalImageInfo.cs b/MediaBrowser.Controller/Providers/LocalImageInfo.cs new file mode 100644 index 0000000000..59d74def26 --- /dev/null +++ b/MediaBrowser.Controller/Providers/LocalImageInfo.cs @@ -0,0 +1,11 @@ +using System.IO; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public class LocalImageInfo + { + public FileSystemInfo FileInfo { get; set; } + public ImageType Type { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/LocalMetadataResult.cs b/MediaBrowser.Controller/Providers/LocalMetadataResult.cs new file mode 100644 index 0000000000..8be3ee7aac --- /dev/null +++ b/MediaBrowser.Controller/Providers/LocalMetadataResult.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Controller.Providers +{ + public class LocalMetadataResult<T> + where T : IHasMetadata + { + public bool HasMetadata { get; set; } + public T Item { get; set; } + + public List<LocalImageInfo> Images { get; set; } + public List<ChapterInfo> Chapters { get; set; } + public List<UserItemData> UserDataLIst { get; set; } + + public LocalMetadataResult() + { + Images = new List<LocalImageInfo>(); + Chapters = new List<ChapterInfo>(); + UserDataLIst = new List<UserItemData>(); + } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/MetadataRefreshMode.cs b/MediaBrowser.Controller/Providers/MetadataRefreshMode.cs new file mode 100644 index 0000000000..56492006a5 --- /dev/null +++ b/MediaBrowser.Controller/Providers/MetadataRefreshMode.cs @@ -0,0 +1,25 @@ +namespace MediaBrowser.Controller.Providers +{ + public enum MetadataRefreshMode + { + /// <summary> + /// The none + /// </summary> + None = 0, + + /// <summary> + /// The validation only + /// </summary> + ValidationOnly = 1, + + /// <summary> + /// Providers will be executed based on default rules + /// </summary> + Default = 2, + + /// <summary> + /// All providers will be executed to search for new metadata + /// </summary> + FullRefresh = 3 + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs index 078f1e77a9..dbb7fbfcdb 100644 --- a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs +++ b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs @@ -1,6 +1,4 @@ -using MediaBrowser.Model.Entities; -using System.Collections.Generic; -using System.Linq; +using System.Linq; namespace MediaBrowser.Controller.Providers { @@ -40,74 +38,4 @@ namespace MediaBrowser.Controller.Providers ReplaceImages = copy.ReplaceImages.ToList(); } } - - public class ImageRefreshOptions - { - public ImageRefreshMode ImageRefreshMode { get; set; } - public IDirectoryService DirectoryService { get; private set; } - - public bool ReplaceAllImages { get; set; } - - public List<ImageType> ReplaceImages { get; set; } - - public ImageRefreshOptions(IDirectoryService directoryService) - { - ImageRefreshMode = ImageRefreshMode.Default; - DirectoryService = directoryService; - - ReplaceImages = new List<ImageType>(); - } - - public bool IsReplacingImage(ImageType type) - { - return ImageRefreshMode == ImageRefreshMode.FullRefresh && - (ReplaceAllImages || ReplaceImages.Contains(type)); - } - } - - public enum MetadataRefreshMode - { - /// <summary> - /// The none - /// </summary> - None = 0, - - /// <summary> - /// The validation only - /// </summary> - ValidationOnly = 1, - - /// <summary> - /// Providers will be executed based on default rules - /// </summary> - Default = 2, - - /// <summary> - /// All providers will be executed to search for new metadata - /// </summary> - FullRefresh = 3 - } - - public enum ImageRefreshMode - { - /// <summary> - /// The none - /// </summary> - None = 0, - - /// <summary> - /// The default - /// </summary> - Default = 1, - - /// <summary> - /// Existing images will be validated - /// </summary> - ValidationOnly = 2, - - /// <summary> - /// All providers will be executed to search for new metadata - /// </summary> - FullRefresh = 3 - } } diff --git a/MediaBrowser.Controller/Providers/MetadataResult.cs b/MediaBrowser.Controller/Providers/MetadataResult.cs new file mode 100644 index 0000000000..756458cfaf --- /dev/null +++ b/MediaBrowser.Controller/Providers/MetadataResult.cs @@ -0,0 +1,8 @@ +namespace MediaBrowser.Controller.Providers +{ + public class MetadataResult<T> + { + public bool HasMetadata { get; set; } + public T Item { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/MovieInfo.cs b/MediaBrowser.Controller/Providers/MovieInfo.cs new file mode 100644 index 0000000000..198336fc01 --- /dev/null +++ b/MediaBrowser.Controller/Providers/MovieInfo.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Controller.Providers +{ + public class MovieInfo : ItemLookupInfo + { + + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/MusicVideoInfo.cs b/MediaBrowser.Controller/Providers/MusicVideoInfo.cs new file mode 100644 index 0000000000..4f4ab5954a --- /dev/null +++ b/MediaBrowser.Controller/Providers/MusicVideoInfo.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Controller.Providers +{ + public class MusicVideoInfo : ItemLookupInfo + { + + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/PersonLookupInfo.cs b/MediaBrowser.Controller/Providers/PersonLookupInfo.cs new file mode 100644 index 0000000000..db4dacb0b4 --- /dev/null +++ b/MediaBrowser.Controller/Providers/PersonLookupInfo.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Controller.Providers +{ + public class PersonLookupInfo : ItemLookupInfo + { + + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/RemoteSearchQuery.cs b/MediaBrowser.Controller/Providers/RemoteSearchQuery.cs new file mode 100644 index 0000000000..cd86f352fe --- /dev/null +++ b/MediaBrowser.Controller/Providers/RemoteSearchQuery.cs @@ -0,0 +1,19 @@ +namespace MediaBrowser.Controller.Providers +{ + public class RemoteSearchQuery<T> + where T : ItemLookupInfo + { + public T SearchInfo { get; set; } + + /// <summary> + /// If set will only search within the given provider + /// </summary> + public string SearchProviderName { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether [include disabled providers]. + /// </summary> + /// <value><c>true</c> if [include disabled providers]; otherwise, <c>false</c>.</value> + public bool IncludeDisabledProviders { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/SeasonIdentity.cs b/MediaBrowser.Controller/Providers/SeasonIdentity.cs new file mode 100644 index 0000000000..1e6b9b65a3 --- /dev/null +++ b/MediaBrowser.Controller/Providers/SeasonIdentity.cs @@ -0,0 +1,11 @@ +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 new file mode 100644 index 0000000000..17bcd3f772 --- /dev/null +++ b/MediaBrowser.Controller/Providers/SeasonInfo.cs @@ -0,0 +1,32 @@ +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> + { + private List<SeasonIdentity> _identities = new List<SeasonIdentity>(); + + public Dictionary<string, string> SeriesProviderIds { get; set; } + public int? AnimeSeriesIndex { get; set; } + + public SeasonInfo() + { + 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 new file mode 100644 index 0000000000..326d340275 --- /dev/null +++ b/MediaBrowser.Controller/Providers/SeriesIdentity.cs @@ -0,0 +1,9 @@ +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 new file mode 100644 index 0000000000..fc1119cd25 --- /dev/null +++ b/MediaBrowser.Controller/Providers/SeriesInfo.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Providers +{ + public class SeriesInfo : ItemLookupInfo, IHasIdentities<SeriesIdentity> + { + 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 diff --git a/MediaBrowser.Controller/Providers/SeriesOrderTypes.cs b/MediaBrowser.Controller/Providers/SeriesOrderTypes.cs new file mode 100644 index 0000000000..5e04fb4dbc --- /dev/null +++ b/MediaBrowser.Controller/Providers/SeriesOrderTypes.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Controller.Providers +{ + public static class SeriesOrderTypes + { + public const string Anime = "Anime"; + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/SongInfo.cs b/MediaBrowser.Controller/Providers/SongInfo.cs new file mode 100644 index 0000000000..b83912a002 --- /dev/null +++ b/MediaBrowser.Controller/Providers/SongInfo.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace MediaBrowser.Controller.Providers +{ + public class SongInfo : ItemLookupInfo + { + public List<string> AlbumArtists { get; set; } + public string Album { get; set; } + public List<string> Artists { get; set; } + + public SongInfo() + { + Artists = new List<string>(); + AlbumArtists = new List<string>(); + } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Providers/TrailerInfo.cs b/MediaBrowser.Controller/Providers/TrailerInfo.cs new file mode 100644 index 0000000000..fe26ec43ec --- /dev/null +++ b/MediaBrowser.Controller/Providers/TrailerInfo.cs @@ -0,0 +1,7 @@ +namespace MediaBrowser.Controller.Providers +{ + public class TrailerInfo : ItemLookupInfo + { + public bool IsLocalTrailer { get; set; } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index 98ea2ce06e..422349b80e 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -18,7 +18,7 @@ namespace MediaBrowser.Controller.Sync /// <param name="progress">The progress.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> - Task SendFile(Stream stream, string remotePath, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken); + Task<SendFileResult> SendFile(Stream stream, string remotePath, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken); /// <summary> /// Deletes the file. diff --git a/MediaBrowser.Controller/Sync/SendFileResult.cs b/MediaBrowser.Controller/Sync/SendFileResult.cs new file mode 100644 index 0000000000..62753444a4 --- /dev/null +++ b/MediaBrowser.Controller/Sync/SendFileResult.cs @@ -0,0 +1,18 @@ +using MediaBrowser.Model.MediaInfo; + +namespace MediaBrowser.Controller.Sync +{ + public class SendFileResult + { + /// <summary> + /// Gets or sets the path. + /// </summary> + /// <value>The path.</value> + public string Path { get; set; } + /// <summary> + /// Gets or sets the protocol. + /// </summary> + /// <value>The protocol.</value> + public MediaProtocol Protocol { get; set; } + } +} |
