RefreshUsersMetadata.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4. using System.Threading.Tasks;
  5. using MediaBrowser.Controller.Library;
  6. using MediaBrowser.Controller.Providers;
  7. using MediaBrowser.Model.IO;
  8. using MediaBrowser.Model.Tasks;
  9. namespace Emby.Server.Implementations.EntryPoints
  10. {
  11. /// <summary>
  12. /// Class RefreshUsersMetadata.
  13. /// </summary>
  14. public class RefreshUsersMetadata : IScheduledTask, IConfigurableScheduledTask
  15. {
  16. /// <summary>
  17. /// The user manager.
  18. /// </summary>
  19. private readonly IUserManager _userManager;
  20. private readonly IFileSystem _fileSystem;
  21. /// <summary>
  22. /// Initializes a new instance of the <see cref="RefreshUsersMetadata" /> class.
  23. /// </summary>
  24. public RefreshUsersMetadata(IUserManager userManager, IFileSystem fileSystem)
  25. {
  26. _userManager = userManager;
  27. _fileSystem = fileSystem;
  28. }
  29. /// <inheritdoc />
  30. public string Name => "Refresh Users";
  31. /// <inheritdoc />
  32. public string Key => "RefreshUsers";
  33. /// <inheritdoc />
  34. public string Description => "Refresh user infos";
  35. /// <inheritdoc />
  36. public string Category => "Library";
  37. /// <inheritdoc />
  38. public bool IsHidden => true;
  39. /// <inheritdoc />
  40. public bool IsEnabled => true;
  41. /// <inheritdoc />
  42. public bool IsLogged => true;
  43. /// <inheritdoc />
  44. public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
  45. {
  46. foreach (var user in _userManager.Users)
  47. {
  48. cancellationToken.ThrowIfCancellationRequested();
  49. await user.RefreshMetadata(new MetadataRefreshOptions(new DirectoryService(_fileSystem)), cancellationToken).ConfigureAwait(false);
  50. }
  51. }
  52. /// <inheritdoc />
  53. public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
  54. {
  55. return new[]
  56. {
  57. new TaskTriggerInfo
  58. {
  59. IntervalTicks = TimeSpan.FromDays(1).Ticks,
  60. Type = TaskTriggerInfo.TriggerInterval
  61. }
  62. };
  63. }
  64. }
  65. }