| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- #nullable disable
 
- #pragma warning disable CS1591
 
- using System;
 
- using System.IO;
 
- using System.Linq;
 
- using Jellyfin.Extensions;
 
- using MediaBrowser.Controller.Library;
 
- using MediaBrowser.Controller.Playlists;
 
- using MediaBrowser.Controller.Resolvers;
 
- using MediaBrowser.LocalMetadata.Savers;
 
- using MediaBrowser.Model.Entities;
 
- namespace Emby.Server.Implementations.Library.Resolvers
 
- {
 
-     /// <summary>
 
-     /// <see cref="IItemResolver"/> for <see cref="Playlist"/> library items.
 
-     /// </summary>
 
-     public class PlaylistResolver : GenericFolderResolver<Playlist>
 
-     {
 
-         private string[] _musicPlaylistCollectionTypes =
 
-         {
 
-             string.Empty,
 
-             CollectionType.Music
 
-         };
 
-         /// <inheritdoc/>
 
-         protected override Playlist Resolve(ItemResolveArgs args)
 
-         {
 
-             if (args.IsDirectory)
 
-             {
 
-                 // It's a boxset if the path is a directory with [playlist] in it's the name
 
-                 // TODO: Should this use Path.GetDirectoryName() instead?
 
-                 bool isBoxSet = Path.GetFileName(args.Path)
 
-                     ?.Contains("[playlist]", StringComparison.OrdinalIgnoreCase)
 
-                     ?? false;
 
-                 if (isBoxSet)
 
-                 {
 
-                     return new Playlist
 
-                     {
 
-                         Path = args.Path,
 
-                         Name = Path.GetFileName(args.Path).Replace("[playlist]", string.Empty, StringComparison.OrdinalIgnoreCase).Trim()
 
-                     };
 
-                 }
 
-                 // It's a directory-based playlist if the directory contains a playlist file
 
-                 var filePaths = Directory.EnumerateFiles(args.Path, "*", new EnumerationOptions { IgnoreInaccessible = true });
 
-                 if (filePaths.Any(f => f.EndsWith(PlaylistXmlSaver.DefaultPlaylistFilename, StringComparison.OrdinalIgnoreCase)))
 
-                 {
 
-                     return new Playlist
 
-                     {
 
-                         Path = args.Path,
 
-                         Name = Path.GetFileName(args.Path)
 
-                     };
 
-                 }
 
-             }
 
-             // Check if this is a music playlist file
 
-             // It should have the correct collection type and a supported file extension
 
-             else if (_musicPlaylistCollectionTypes.Contains(args.CollectionType ?? string.Empty, StringComparison.OrdinalIgnoreCase))
 
-             {
 
-                 var extension = Path.GetExtension(args.Path);
 
-                 if (Playlist.SupportedExtensions.Contains(extension ?? string.Empty, StringComparison.OrdinalIgnoreCase))
 
-                 {
 
-                     return new Playlist
 
-                     {
 
-                         Path = args.Path,
 
-                         Name = Path.GetFileNameWithoutExtension(args.Path),
 
-                         IsInMixedFolder = true,
 
-                         PlaylistMediaType = MediaType.Audio
 
-                     };
 
-                 }
 
-             }
 
-             return null;
 
-         }
 
-     }
 
- }
 
 
  |