EpisodeLocalImageProvider.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using MediaBrowser.Controller.Entities;
  5. using MediaBrowser.Controller.Entities.TV;
  6. using MediaBrowser.Controller.Providers;
  7. using MediaBrowser.Model.Entities;
  8. using MediaBrowser.Model.IO;
  9. namespace MediaBrowser.LocalMetadata.Images
  10. {
  11. public class EpisodeLocalLocalImageProvider : ILocalImageFileProvider, IHasOrder
  12. {
  13. private readonly IFileSystem _fileSystem;
  14. public EpisodeLocalLocalImageProvider(IFileSystem fileSystem)
  15. {
  16. _fileSystem = fileSystem;
  17. }
  18. public string Name => "Local Images";
  19. public int Order => 0;
  20. public bool Supports(BaseItem item)
  21. {
  22. return item is Episode && item.SupportsLocalMetadata;
  23. }
  24. public List<LocalImageInfo> GetImages(BaseItem item, IDirectoryService directoryService)
  25. {
  26. var parentPath = _fileSystem.GetDirectoryName(item.Path);
  27. var parentPathFiles = directoryService.GetFiles(parentPath);
  28. var nameWithoutExtension = _fileSystem.GetFileNameWithoutExtension(item.Path);
  29. return GetFilesFromParentFolder(nameWithoutExtension, parentPathFiles);
  30. }
  31. private List<LocalImageInfo> GetFilesFromParentFolder(string filenameWithoutExtension, List<FileSystemMetadata> parentPathFiles)
  32. {
  33. var thumbName = filenameWithoutExtension + "-thumb";
  34. var list = new List<LocalImageInfo>(1);
  35. foreach (var i in parentPathFiles)
  36. {
  37. if (i.IsDirectory)
  38. {
  39. continue;
  40. }
  41. if (BaseItem.SupportedImageExtensions.Contains(i.Extension, StringComparer.OrdinalIgnoreCase))
  42. {
  43. var currentNameWithoutExtension = _fileSystem.GetFileNameWithoutExtension(i);
  44. if (string.Equals(filenameWithoutExtension, currentNameWithoutExtension, StringComparison.OrdinalIgnoreCase))
  45. {
  46. list.Add(new LocalImageInfo
  47. {
  48. FileInfo = i,
  49. Type = ImageType.Primary
  50. });
  51. }
  52. else if (string.Equals(thumbName, currentNameWithoutExtension, StringComparison.OrdinalIgnoreCase))
  53. {
  54. list.Add(new LocalImageInfo
  55. {
  56. FileInfo = i,
  57. Type = ImageType.Primary
  58. });
  59. }
  60. }
  61. }
  62. return list;
  63. }
  64. }
  65. }