RefreshUsersMetadata.cs 2.1 KB

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