EntryPoint.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using MediaBrowser.Common.Configuration;
  3. using MediaBrowser.Controller.Entities;
  4. using MediaBrowser.Controller.Library;
  5. using MediaBrowser.Controller.Plugins;
  6. using MediaBrowser.Controller.Providers;
  7. using MediaBrowser.Model.Entities;
  8. using MediaBrowser.XbmcMetadata.Configuration;
  9. using MediaBrowser.XbmcMetadata.Savers;
  10. using Microsoft.Extensions.Logging;
  11. namespace MediaBrowser.XbmcMetadata
  12. {
  13. public class EntryPoint : IServerEntryPoint
  14. {
  15. private readonly IUserDataManager _userDataManager;
  16. private readonly ILogger _logger;
  17. private readonly ILibraryManager _libraryManager;
  18. private readonly IProviderManager _providerManager;
  19. private readonly IConfigurationManager _config;
  20. public EntryPoint(IUserDataManager userDataManager, ILibraryManager libraryManager, ILogger logger, IProviderManager providerManager, IConfigurationManager config)
  21. {
  22. _userDataManager = userDataManager;
  23. _libraryManager = libraryManager;
  24. _logger = logger;
  25. _providerManager = providerManager;
  26. _config = config;
  27. }
  28. public void Run()
  29. {
  30. _userDataManager.UserDataSaved += _userDataManager_UserDataSaved;
  31. }
  32. void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e)
  33. {
  34. if (e.SaveReason == UserDataSaveReason.PlaybackFinished || e.SaveReason == UserDataSaveReason.TogglePlayed || e.SaveReason == UserDataSaveReason.UpdateUserRating)
  35. {
  36. if (!string.IsNullOrWhiteSpace(_config.GetNfoConfiguration().UserId))
  37. {
  38. SaveMetadataForItem(e.Item, ItemUpdateType.MetadataDownload);
  39. }
  40. }
  41. }
  42. public void Dispose()
  43. {
  44. _userDataManager.UserDataSaved -= _userDataManager_UserDataSaved;
  45. }
  46. private void SaveMetadataForItem(BaseItem item, ItemUpdateType updateReason)
  47. {
  48. if (!item.IsFileProtocol)
  49. {
  50. return;
  51. }
  52. if (!item.SupportsLocalMetadata)
  53. {
  54. return;
  55. }
  56. if (!item.IsSaveLocalMetadataEnabled())
  57. {
  58. return;
  59. }
  60. try
  61. {
  62. _providerManager.SaveMetadata(item, updateReason, new[] { BaseNfoSaver.SaverName });
  63. }
  64. catch (Exception ex)
  65. {
  66. _logger.LogError(ex, "Error saving metadata for {path}", item.Path ?? item.Name);
  67. }
  68. }
  69. }
  70. }