| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | 
							- #nullable disable
 
- #pragma warning disable CS1591
 
- using System;
 
- using System.IO;
 
- using System.Linq;
 
- using Jellyfin.Data.Enums;
 
- using Jellyfin.Extensions;
 
- using MediaBrowser.Controller.Entities;
 
- using MediaBrowser.Controller.Library;
 
- using MediaBrowser.Controller.Resolvers;
 
- using MediaBrowser.Model.Entities;
 
- namespace Emby.Server.Implementations.Library.Resolvers.Books
 
- {
 
-     public class BookResolver : ItemResolver<Book>
 
-     {
 
-         private readonly string[] _validExtensions = { ".azw", ".azw3", ".cb7", ".cbr", ".cbt", ".cbz", ".epub", ".mobi", ".pdf" };
 
-         protected override Book Resolve(ItemResolveArgs args)
 
-         {
 
-             var collectionType = args.GetCollectionType();
 
-             // Only process items that are in a collection folder containing books
 
-             if (collectionType != CollectionType.books)
 
-             {
 
-                 return null;
 
-             }
 
-             if (args.IsDirectory)
 
-             {
 
-                 return GetBook(args);
 
-             }
 
-             var extension = Path.GetExtension(args.Path.AsSpan());
 
-             if (_validExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase))
 
-             {
 
-                 // It's a book
 
-                 return new Book
 
-                 {
 
-                     Path = args.Path,
 
-                     IsInMixedFolder = true
 
-                 };
 
-             }
 
-             return null;
 
-         }
 
-         private Book GetBook(ItemResolveArgs args)
 
-         {
 
-             var bookFiles = args.FileSystemChildren.Where(f =>
 
-             {
 
-                 var fileExtension = Path.GetExtension(f.FullName.AsSpan());
 
-                 return _validExtensions.Contains(
 
-                     fileExtension,
 
-                     StringComparison.OrdinalIgnoreCase);
 
-             }).ToList();
 
-             // Don't return a Book if there is more (or less) than one document in the directory
 
-             if (bookFiles.Count != 1)
 
-             {
 
-                 return null;
 
-             }
 
-             return new Book
 
-             {
 
-                 Path = bookFiles[0].FullName
 
-             };
 
-         }
 
-     }
 
- }
 
 
  |