Plugin.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Net.Http.Headers;
  4. using MediaBrowser.Common;
  5. using MediaBrowser.Common.Configuration;
  6. using MediaBrowser.Common.Plugins;
  7. using MediaBrowser.Model.Plugins;
  8. using MediaBrowser.Model.Serialization;
  9. using MediaBrowser.Providers.Plugins.MusicBrainz.Configuration;
  10. using MetaBrainz.MusicBrainz;
  11. namespace MediaBrowser.Providers.Plugins.MusicBrainz;
  12. /// <summary>
  13. /// Plugin instance.
  14. /// </summary>
  15. public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages
  16. {
  17. /// <summary>
  18. /// Initializes a new instance of the <see cref="Plugin"/> class.
  19. /// </summary>
  20. /// <param name="applicationPaths">Instance of the <see cref="IApplicationPaths"/> interface.</param>
  21. /// <param name="xmlSerializer">Instance of the <see cref="IXmlSerializer"/> interface.</param>
  22. /// <param name="applicationHost">Instance of the <see cref="IApplicationHost"/> interface.</param>
  23. public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer, IApplicationHost applicationHost)
  24. : base(applicationPaths, xmlSerializer)
  25. {
  26. Instance = this;
  27. // TODO: Change this to "JellyfinMusicBrainzPlugin" once we take it out of the server repo.
  28. Query.DefaultUserAgent.Add(new ProductInfoHeaderValue(applicationHost.Name.Replace(' ', '-'), applicationHost.ApplicationVersionString));
  29. Query.DefaultUserAgent.Add(new ProductInfoHeaderValue($"({applicationHost.ApplicationUserAgentAddress})"));
  30. Query.DelayBetweenRequests = Instance.Configuration.RateLimit;
  31. Query.DefaultServer = Instance.Configuration.Server;
  32. }
  33. /// <summary>
  34. /// Gets the current plugin instance.
  35. /// </summary>
  36. public static Plugin? Instance { get; private set; }
  37. /// <inheritdoc />
  38. public override Guid Id => new Guid("8c95c4d2-e50c-4fb0-a4f3-6c06ff0f9a1a");
  39. /// <inheritdoc />
  40. public override string Name => "MusicBrainz";
  41. /// <inheritdoc />
  42. public override string Description => "Get artist and album metadata from any MusicBrainz server.";
  43. /// <inheritdoc />
  44. // TODO remove when plugin removed from server.
  45. public override string ConfigurationFileName => "Jellyfin.Plugin.MusicBrainz.xml";
  46. /// <inheritdoc />
  47. public IEnumerable<PluginPageInfo> GetPages()
  48. {
  49. yield return new PluginPageInfo
  50. {
  51. Name = Name,
  52. EmbeddedResourcePath = GetType().Namespace + ".Configuration.config.html"
  53. };
  54. }
  55. }