AudioResolver.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using MediaBrowser.Controller.Library;
  2. using MediaBrowser.Controller.Resolvers;
  3. using MediaBrowser.Model.Entities;
  4. using System;
  5. using MediaBrowser.Controller.Entities;
  6. namespace Emby.Server.Implementations.Library.Resolvers.Audio
  7. {
  8. /// <summary>
  9. /// Class AudioResolver
  10. /// </summary>
  11. public class AudioResolver : ItemResolver<MediaBrowser.Controller.Entities.Audio.Audio>
  12. {
  13. private readonly ILibraryManager _libraryManager;
  14. public AudioResolver(ILibraryManager libraryManager)
  15. {
  16. _libraryManager = libraryManager;
  17. }
  18. /// <summary>
  19. /// Gets the priority.
  20. /// </summary>
  21. /// <value>The priority.</value>
  22. public override ResolverPriority Priority
  23. {
  24. get { return ResolverPriority.Last; }
  25. }
  26. /// <summary>
  27. /// Resolves the specified args.
  28. /// </summary>
  29. /// <param name="args">The args.</param>
  30. /// <returns>Entities.Audio.Audio.</returns>
  31. protected override MediaBrowser.Controller.Entities.Audio.Audio Resolve(ItemResolveArgs args)
  32. {
  33. // Return audio if the path is a file and has a matching extension
  34. if (!args.IsDirectory)
  35. {
  36. var libraryOptions = args.GetLibraryOptions();
  37. if (_libraryManager.IsAudioFile(args.Path, libraryOptions))
  38. {
  39. var collectionType = args.GetCollectionType();
  40. var isMixed = string.IsNullOrWhiteSpace(collectionType);
  41. // For conflicting extensions, give priority to videos
  42. if (isMixed && _libraryManager.IsVideoFile(args.Path, libraryOptions))
  43. {
  44. return null;
  45. }
  46. var isStandalone = args.Parent == null;
  47. if (isStandalone ||
  48. string.Equals(collectionType, CollectionType.Music, StringComparison.OrdinalIgnoreCase) ||
  49. isMixed)
  50. {
  51. return new MediaBrowser.Controller.Entities.Audio.Audio();
  52. }
  53. if (string.Equals(collectionType, CollectionType.Books, StringComparison.OrdinalIgnoreCase))
  54. {
  55. return new AudioBook();
  56. }
  57. }
  58. }
  59. return null;
  60. }
  61. }
  62. }