1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #pragma warning disable CS1591
- #pragma warning disable SA1600
- using System.Collections.Generic;
- using System.Linq;
- using Emby.Naming.Common;
- using Emby.Naming.Video;
- using MediaBrowser.Model.IO;
- namespace Emby.Naming.AudioBook
- {
- public class AudioBookListResolver
- {
- private readonly NamingOptions _options;
- public AudioBookListResolver(NamingOptions options)
- {
- _options = options;
- }
- public IEnumerable<AudioBookInfo> Resolve(IEnumerable<FileSystemMetadata> files)
- {
- var audioBookResolver = new AudioBookResolver(_options);
- var audiobookFileInfos = files
- .Select(i => audioBookResolver.Resolve(i.FullName, i.IsDirectory))
- .Where(i => i != null)
- .ToList();
- // Filter out all extras, otherwise they could cause stacks to not be resolved
- // See the unit test TestStackedWithTrailer
- var metadata = audiobookFileInfos
- .Select(i => new FileSystemMetadata
- {
- FullName = i.Path,
- IsDirectory = i.IsDirectory
- });
- var stackResult = new StackResolver(_options)
- .ResolveAudioBooks(metadata);
- foreach (var stack in stackResult)
- {
- var stackFiles = stack.Files.Select(i => audioBookResolver.Resolve(i, stack.IsDirectoryStack)).ToList();
- stackFiles.Sort();
- var info = new AudioBookInfo
- {
- Files = stackFiles,
- Name = stack.Name
- };
- yield return info;
- }
- }
- }
- }
|