From a86b71899ec52c44ddc6c3018e8cc5e9d7ff4d62 Mon Sep 17 00:00:00 2001 From: Andrew Rabert Date: Thu, 27 Dec 2018 18:27:57 -0500 Subject: Add GPL modules --- MediaBrowser.Controller/Library/DeleteOptions.cs | 14 + MediaBrowser.Controller/Library/IIntroProvider.cs | 32 ++ MediaBrowser.Controller/Library/ILibraryManager.cs | 550 +++++++++++++++++++++ MediaBrowser.Controller/Library/ILibraryMonitor.cs | 43 ++ .../Library/ILibraryPostScanTask.cs | 20 + MediaBrowser.Controller/Library/ILiveStream.cs | 21 + .../Library/IMediaSourceManager.cs | 100 ++++ .../Library/IMediaSourceProvider.cs | 25 + .../Library/IMetadataFileSaver.cs | 19 + MediaBrowser.Controller/Library/IMetadataSaver.cs | 33 ++ MediaBrowser.Controller/Library/IMusicManager.cs | 25 + MediaBrowser.Controller/Library/ISearchEngine.cs | 18 + .../Library/IUserDataManager.cs | 67 +++ MediaBrowser.Controller/Library/IUserManager.cs | 207 ++++++++ .../Library/IUserViewManager.cs | 19 + MediaBrowser.Controller/Library/IntroInfo.cs | 19 + .../Library/ItemChangeEventArgs.cs | 24 + MediaBrowser.Controller/Library/ItemResolveArgs.cs | 281 +++++++++++ MediaBrowser.Controller/Library/ItemUpdateType.cs | 14 + .../Library/LibraryManagerExtensions.cs | 13 + .../Library/MetadataConfigurationStore.cs | 29 ++ MediaBrowser.Controller/Library/NameExtensions.cs | 26 + .../Library/PlaybackProgressEventArgs.cs | 34 ++ .../Library/PlaybackStopEventArgs.cs | 11 + MediaBrowser.Controller/Library/Profiler.cs | 76 +++ MediaBrowser.Controller/Library/SearchHintInfo.cs | 22 + MediaBrowser.Controller/Library/TVUtils.cs | 59 +++ .../Library/UserDataSaveEventArgs.cs | 39 ++ 28 files changed, 1840 insertions(+) create mode 100644 MediaBrowser.Controller/Library/DeleteOptions.cs create mode 100644 MediaBrowser.Controller/Library/IIntroProvider.cs create mode 100644 MediaBrowser.Controller/Library/ILibraryManager.cs create mode 100644 MediaBrowser.Controller/Library/ILibraryMonitor.cs create mode 100644 MediaBrowser.Controller/Library/ILibraryPostScanTask.cs create mode 100644 MediaBrowser.Controller/Library/ILiveStream.cs create mode 100644 MediaBrowser.Controller/Library/IMediaSourceManager.cs create mode 100644 MediaBrowser.Controller/Library/IMediaSourceProvider.cs create mode 100644 MediaBrowser.Controller/Library/IMetadataFileSaver.cs create mode 100644 MediaBrowser.Controller/Library/IMetadataSaver.cs create mode 100644 MediaBrowser.Controller/Library/IMusicManager.cs create mode 100644 MediaBrowser.Controller/Library/ISearchEngine.cs create mode 100644 MediaBrowser.Controller/Library/IUserDataManager.cs create mode 100644 MediaBrowser.Controller/Library/IUserManager.cs create mode 100644 MediaBrowser.Controller/Library/IUserViewManager.cs create mode 100644 MediaBrowser.Controller/Library/IntroInfo.cs create mode 100644 MediaBrowser.Controller/Library/ItemChangeEventArgs.cs create mode 100644 MediaBrowser.Controller/Library/ItemResolveArgs.cs create mode 100644 MediaBrowser.Controller/Library/ItemUpdateType.cs create mode 100644 MediaBrowser.Controller/Library/LibraryManagerExtensions.cs create mode 100644 MediaBrowser.Controller/Library/MetadataConfigurationStore.cs create mode 100644 MediaBrowser.Controller/Library/NameExtensions.cs create mode 100644 MediaBrowser.Controller/Library/PlaybackProgressEventArgs.cs create mode 100644 MediaBrowser.Controller/Library/PlaybackStopEventArgs.cs create mode 100644 MediaBrowser.Controller/Library/Profiler.cs create mode 100644 MediaBrowser.Controller/Library/SearchHintInfo.cs create mode 100644 MediaBrowser.Controller/Library/TVUtils.cs create mode 100644 MediaBrowser.Controller/Library/UserDataSaveEventArgs.cs (limited to 'MediaBrowser.Controller/Library') diff --git a/MediaBrowser.Controller/Library/DeleteOptions.cs b/MediaBrowser.Controller/Library/DeleteOptions.cs new file mode 100644 index 000000000..822fc3dc3 --- /dev/null +++ b/MediaBrowser.Controller/Library/DeleteOptions.cs @@ -0,0 +1,14 @@ + +namespace MediaBrowser.Controller.Library +{ + public class DeleteOptions + { + public bool DeleteFileLocation { get; set; } + public bool DeleteFromExternalProvider { get; set; } + + public DeleteOptions() + { + DeleteFromExternalProvider = true; + } + } +} diff --git a/MediaBrowser.Controller/Library/IIntroProvider.cs b/MediaBrowser.Controller/Library/IIntroProvider.cs new file mode 100644 index 000000000..611aab387 --- /dev/null +++ b/MediaBrowser.Controller/Library/IIntroProvider.cs @@ -0,0 +1,32 @@ +using MediaBrowser.Controller.Entities; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Library +{ + /// + /// Class BaseIntroProvider + /// + public interface IIntroProvider + { + /// + /// Gets the intros. + /// + /// The item. + /// The user. + /// IEnumerable{System.String}. + Task> GetIntros(BaseItem item, User user); + + /// + /// Gets all intro files. + /// + /// IEnumerable{System.String}. + IEnumerable GetAllIntroFiles(); + + /// + /// Gets the name. + /// + /// The name. + string Name { get; } + } +} diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs new file mode 100644 index 000000000..d572716fa --- /dev/null +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -0,0 +1,550 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Controller.Resolvers; +using MediaBrowser.Controller.Sorting; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Querying; +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.IO; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.IO; + +namespace MediaBrowser.Controller.Library +{ + /// + /// Interface ILibraryManager + /// + public interface ILibraryManager + { + /// + /// Resolves the path. + /// + /// The file information. + /// The parent. + /// BaseItem. + BaseItem ResolvePath(FileSystemMetadata fileInfo, + Folder parent = null); + + /// + /// Resolves a set of files into a list of BaseItem + /// + IEnumerable ResolvePaths(IEnumerable files, + IDirectoryService directoryService, + Folder parent, + LibraryOptions libraryOptions, + string collectionType = null); + + /// + /// Gets the root folder. + /// + /// The root folder. + AggregateFolder RootFolder { get; } + + /// + /// Gets a Person + /// + /// The name. + /// Task{Person}. + Person GetPerson(string name); + + /// + /// Finds the by path. + /// + /// The path. + /// BaseItem. + BaseItem FindByPath(string path, bool? isFolder); + + /// + /// Gets the artist. + /// + /// The name. + /// Task{Artist}. + MusicArtist GetArtist(string name); + MusicArtist GetArtist(string name, DtoOptions options); + /// + /// Gets a Studio + /// + /// The name. + /// Task{Studio}. + Studio GetStudio(string name); + + /// + /// Gets a Genre + /// + /// The name. + /// Task{Genre}. + Genre GetGenre(string name); + + /// + /// Gets the genre. + /// + /// The name. + /// Task{MusicGenre}. + MusicGenre GetMusicGenre(string name); + + /// + /// Gets the game genre. + /// + /// The name. + /// Task{GameGenre}. + GameGenre GetGameGenre(string name); + + /// + /// Gets a Year + /// + /// The value. + /// Task{Year}. + /// + Year GetYear(int value); + + /// + /// Validate and refresh the People sub-set of the IBN. + /// The items are stored in the db but not loaded into memory until actually requested by an operation. + /// + /// The cancellation token. + /// The progress. + /// Task. + Task ValidatePeople(CancellationToken cancellationToken, IProgress progress); + + /// + /// Reloads the root media folder + /// + /// The progress. + /// The cancellation token. + /// Task. + Task ValidateMediaLibrary(IProgress progress, CancellationToken cancellationToken); + + /// + /// Queues the library scan. + /// + void QueueLibraryScan(); + + void UpdateImages(BaseItem item); + + /// + /// Gets the default view. + /// + /// IEnumerable{VirtualFolderInfo}. + List GetVirtualFolders(); + + List GetVirtualFolders(bool includeRefreshState); + + /// + /// Gets the item by id. + /// + /// The id. + /// BaseItem. + BaseItem GetItemById(Guid id); + + /// + /// Gets the intros. + /// + /// The item. + /// The user. + /// IEnumerable{System.String}. + Task> GetIntros(BaseItem item, User user); + + /// + /// Gets all intro files. + /// + /// IEnumerable{System.String}. + IEnumerable GetAllIntroFiles(); + + /// + /// Adds the parts. + /// + /// The rules. + /// The plugin folders. + /// The resolvers. + /// The intro providers. + /// The item comparers. + /// The postscan tasks. + void AddParts(IEnumerable rules, + IEnumerable resolvers, + IEnumerable introProviders, + IEnumerable itemComparers, + IEnumerable postscanTasks); + + /// + /// Sorts the specified items. + /// + /// The items. + /// The user. + /// The sort by. + /// The sort order. + /// IEnumerable{BaseItem}. + IEnumerable Sort(IEnumerable items, User user, IEnumerable sortBy, SortOrder sortOrder); + IEnumerable Sort(IEnumerable items, User user, IEnumerable> orderBy); + + /// + /// Gets the user root folder. + /// + /// UserRootFolder. + Folder GetUserRootFolder(); + + /// + /// Creates the item. + /// + void CreateItem(BaseItem item, BaseItem parent); + + /// + /// Creates the items. + /// + void CreateItems(IEnumerable items, BaseItem parent, CancellationToken cancellationToken); + + /// + /// Updates the item. + /// + void UpdateItems(List items, BaseItem parent, ItemUpdateType updateReason, CancellationToken cancellationToken); + void UpdateItem(BaseItem item, BaseItem parent, ItemUpdateType updateReason, CancellationToken cancellationToken); + + /// + /// Retrieves the item. + /// + /// The id. + /// BaseItem. + BaseItem RetrieveItem(Guid id); + + bool IsScanRunning { get; } + + /// + /// Occurs when [item added]. + /// + event EventHandler ItemAdded; + + /// + /// Occurs when [item updated]. + /// + event EventHandler ItemUpdated; + /// + /// Occurs when [item removed]. + /// + event EventHandler ItemRemoved; + + /// + /// Finds the type of the collection. + /// + /// The item. + /// System.String. + string GetContentType(BaseItem item); + + /// + /// Gets the type of the inherited content. + /// + /// The item. + /// System.String. + string GetInheritedContentType(BaseItem item); + + /// + /// Gets the type of the configured content. + /// + /// The item. + /// System.String. + string GetConfiguredContentType(BaseItem item); + + /// + /// Gets the type of the configured content. + /// + /// The path. + /// System.String. + string GetConfiguredContentType(string path); + + /// + /// Normalizes the root path list. + /// + /// The paths. + /// IEnumerable{System.String}. + List NormalizeRootPathList(IEnumerable paths); + + /// + /// Registers the item. + /// + /// The item. + void RegisterItem(BaseItem item); + + /// + /// Deletes the item. + /// + void DeleteItem(BaseItem item, DeleteOptions options); + + /// + /// Deletes the item. + /// + void DeleteItem(BaseItem item, DeleteOptions options, bool notifyParentItem); + + /// + /// Deletes the item. + /// + void DeleteItem(BaseItem item, DeleteOptions options, BaseItem parent, bool notifyParentItem); + + /// + /// Gets the named view. + /// + /// The user. + /// The name. + /// The parent identifier. + /// Type of the view. + /// Name of the sort. + UserView GetNamedView(User user, + string name, + Guid parentId, + string viewType, + string sortNamen); + + /// + /// Gets the named view. + /// + /// The user. + /// The name. + /// Type of the view. + /// Name of the sort. + UserView GetNamedView(User user, + string name, + string viewType, + string sortName); + + /// + /// Gets the named view. + /// + /// The name. + /// Type of the view. + /// Name of the sort. + UserView GetNamedView(string name, + string viewType, + string sortName); + + /// + /// Gets the named view. + /// + /// The name. + /// The parent identifier. + /// Type of the view. + /// Name of the sort. + /// The unique identifier. + UserView GetNamedView(string name, + Guid parentId, + string viewType, + string sortName, + string uniqueId); + + /// + /// Gets the shadow view. + /// + /// The parent. + /// Type of the view. + /// Name of the sort. + UserView GetShadowView(BaseItem parent, + string viewType, + string sortName); + + /// + /// Determines whether [is video file] [the specified path]. + /// + /// The path. + /// true if [is video file] [the specified path]; otherwise, false. + bool IsVideoFile(string path); + + /// + /// Determines whether [is audio file] [the specified path]. + /// + /// The path. + /// true if [is audio file] [the specified path]; otherwise, false. + bool IsAudioFile(string path); + + bool IsAudioFile(string path, LibraryOptions libraryOptions); + bool IsVideoFile(string path, LibraryOptions libraryOptions); + + /// + /// Gets the season number from path. + /// + /// The path. + /// System.Nullable<System.Int32>. + int? GetSeasonNumberFromPath(string path); + + /// + /// Fills the missing episode numbers from path. + /// + bool FillMissingEpisodeNumbersFromPath(Episode episode, bool forceRefresh); + + /// + /// Parses the name. + /// + /// The name. + /// ItemInfo. + ItemLookupInfo ParseName(string name); + + /// + /// Gets the new item identifier. + /// + /// The key. + /// The type. + /// Guid. + Guid GetNewItemId(string key, Type type); + + /// + /// Finds the trailers. + /// + /// The owner. + /// The file system children. + /// The directory service. + /// IEnumerable<Trailer>. + IEnumerable