PhotoAlbum.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. public override bool SupportsLocalMetadata
  14. {
  15. get
  16. {
  17. return false;
  18. }
  19. }
  20. [IgnoreDataMember]
  21. public override bool AlwaysScanInternalMetadataPath
  22. {
  23. get
  24. {
  25. return true;
  26. }
  27. }
  28. protected override bool GetBlockUnratedValue(UserPolicy config)
  29. {
  30. return config.BlockUnratedItems.Contains(UnratedItem.Other);
  31. }
  32. public async Task RefreshAllMetadata(MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken)
  33. {
  34. var items = GetRecursiveChildren().ToList();
  35. var totalItems = items.Count;
  36. var numComplete = 0;
  37. // Refresh songs
  38. foreach (var item in items)
  39. {
  40. cancellationToken.ThrowIfCancellationRequested();
  41. await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
  42. numComplete++;
  43. double percent = numComplete;
  44. percent /= totalItems;
  45. progress.Report(percent * 100);
  46. }
  47. // Refresh current item
  48. await RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
  49. progress.Report(100);
  50. }
  51. }
  52. }