PlaylistResolver.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using MediaBrowser.Controller.Library;
  2. using MediaBrowser.Controller.Playlists;
  3. using System;
  4. using System.IO;
  5. using MediaBrowser.Model.Extensions;
  6. using MediaBrowser.Model.Entities;
  7. using System.Linq;
  8. namespace Emby.Server.Implementations.Library.Resolvers
  9. {
  10. public class PlaylistResolver : FolderResolver<Playlist>
  11. {
  12. private string[] SupportedCollectionTypes = new string[] {
  13. string.Empty,
  14. CollectionType.Music
  15. };
  16. /// <summary>
  17. /// Resolves the specified args.
  18. /// </summary>
  19. /// <param name="args">The args.</param>
  20. /// <returns>BoxSet.</returns>
  21. protected override Playlist Resolve(ItemResolveArgs args)
  22. {
  23. // It's a boxset if all of the following conditions are met:
  24. // Is a Directory
  25. // Contains [playlist] in the path
  26. if (args.IsDirectory)
  27. {
  28. var filename = Path.GetFileName(args.Path);
  29. if (string.IsNullOrEmpty(filename))
  30. {
  31. return null;
  32. }
  33. if (filename.IndexOf("[playlist]", StringComparison.OrdinalIgnoreCase) != -1)
  34. {
  35. return new Playlist
  36. {
  37. Path = args.Path,
  38. Name = Path.GetFileName(args.Path).Replace("[playlist]", string.Empty, StringComparison.OrdinalIgnoreCase).Trim()
  39. };
  40. }
  41. }
  42. else
  43. {
  44. if (SupportedCollectionTypes.Contains(args.CollectionType ?? string.Empty, StringComparer.OrdinalIgnoreCase))
  45. {
  46. var extension = Path.GetExtension(args.Path);
  47. if (Playlist.SupportedExtensions.Contains(extension ?? string.Empty, StringComparer.OrdinalIgnoreCase))
  48. {
  49. return new Playlist
  50. {
  51. Path = args.Path,
  52. Name = Path.GetFileNameWithoutExtension(args.Path),
  53. IsInMixedFolder = true
  54. };
  55. }
  56. }
  57. }
  58. return null;
  59. }
  60. }
  61. }