PhotoAlbum.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using MediaBrowser.Controller.Providers;
  2. using MediaBrowser.Model.Configuration;
  3. using MediaBrowser.Model.Users;
  4. using System;
  5. using System.Linq;
  6. using System.Runtime.Serialization;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. namespace MediaBrowser.Controller.Entities
  10. {
  11. public class PhotoAlbum : Folder, IMetadataContainer
  12. {
  13. [IgnoreDataMember]
  14. public override bool SupportsLocalMetadata
  15. {
  16. get
  17. {
  18. return false;
  19. }
  20. }
  21. [IgnoreDataMember]
  22. public override bool AlwaysScanInternalMetadataPath
  23. {
  24. get
  25. {
  26. return true;
  27. }
  28. }
  29. protected override bool GetBlockUnratedValue(UserPolicy config)
  30. {
  31. return config.BlockUnratedItems.Contains(UnratedItem.Other);
  32. }
  33. public async Task RefreshAllMetadata(MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken)
  34. {
  35. var items = GetRecursiveChildren().ToList();
  36. var totalItems = items.Count;
  37. var numComplete = 0;
  38. // Refresh songs
  39. foreach (var item in items)
  40. {
  41. cancellationToken.ThrowIfCancellationRequested();
  42. await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
  43. numComplete++;
  44. double percent = numComplete;
  45. percent /= totalItems;
  46. progress.Report(percent * 100);
  47. }
  48. // Refresh current item
  49. await RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
  50. progress.Report(100);
  51. }
  52. }
  53. }