diff options
Diffstat (limited to 'MediaBrowser.Providers/Books/ComicProvider.cs')
| -rw-r--r-- | MediaBrowser.Providers/Books/ComicProvider.cs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/MediaBrowser.Providers/Books/ComicProvider.cs b/MediaBrowser.Providers/Books/ComicProvider.cs new file mode 100644 index 0000000000..d59c58c330 --- /dev/null +++ b/MediaBrowser.Providers/Books/ComicProvider.cs @@ -0,0 +1,59 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Providers; + +namespace MediaBrowser.Providers.Books; + +/// <summary> +/// Comic provider. +/// </summary> +public class ComicProvider : ILocalMetadataProvider<Book>, IHasItemChangeMonitor +{ + private readonly IEnumerable<IComicProvider> _comicProviders; + + /// <summary> + /// Initializes a new instance of the <see cref="ComicProvider"/> class. + /// </summary> + /// <param name="comicProviders">The list of comic providers.</param> + public ComicProvider(IEnumerable<IComicProvider> comicProviders) + { + _comicProviders = comicProviders; + } + + /// <inheritdoc /> + public string Name => "Comic Provider"; + + /// <inheritdoc /> + public async Task<MetadataResult<Book>> GetMetadata(ItemInfo info, IDirectoryService directoryService, CancellationToken cancellationToken) + { + foreach (IComicProvider comicProvider in _comicProviders) + { + var metadata = await comicProvider.ReadMetadata(info, directoryService, cancellationToken).ConfigureAwait(false); + + if (metadata.HasMetadata) + { + return metadata; + } + } + + return new MetadataResult<Book> { HasMetadata = false }; + } + + /// <inheritdoc /> + public bool HasChanged(BaseItem item, IDirectoryService directoryService) + { + foreach (IComicProvider iComicFileProvider in _comicProviders) + { + var fileChanged = iComicFileProvider.HasItemChanged(item); + + if (fileChanged) + { + return fileChanged; + } + } + + return false; + } +} |
