12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #pragma warning disable CS1591
- using System;
- using System.IO;
- using System.Linq;
- using Emby.Naming.Common;
- namespace Emby.Naming.AudioBook
- {
- public class AudioBookResolver
- {
- private readonly NamingOptions _options;
- public AudioBookResolver(NamingOptions options)
- {
- _options = options;
- }
- public AudioBookFileInfo ParseFile(string path)
- {
- return Resolve(path, false);
- }
- public AudioBookFileInfo ParseDirectory(string path)
- {
- return Resolve(path, true);
- }
- public AudioBookFileInfo Resolve(string path, bool isDirectory = false)
- {
- if (string.IsNullOrEmpty(path))
- {
- throw new ArgumentNullException(nameof(path));
- }
- // TODO
- if (isDirectory)
- {
- return null;
- }
- var extension = Path.GetExtension(path);
- // Check supported extensions
- if (!_options.AudioFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
- {
- return null;
- }
- var container = extension.TrimStart('.');
- var parsingResult = new AudioBookFilePathParser(_options).Parse(path);
- return new AudioBookFileInfo
- {
- Path = path,
- Container = container,
- PartNumber = parsingResult.PartNumber,
- ChapterNumber = parsingResult.ChapterNumber,
- IsDirectory = isDirectory
- };
- }
- }
- }
|