aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Books/ComicProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Books/ComicProvider.cs')
-rw-r--r--MediaBrowser.Providers/Books/ComicProvider.cs59
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;
+ }
+}