using System; using System.Collections.Generic; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; using MediaBrowser.Providers.Plugins.ListenBrainz.Configuration; namespace MediaBrowser.Providers.Plugins.ListenBrainz; /// /// ListenBrainz plugin instance. /// public class ListenBrainzPlugin : BasePlugin, IHasWebPages, IHasEmbeddedImage { /// /// Initializes a new instance of the class. /// /// Instance of the interface. /// Instance of the interface. public ListenBrainzPlugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) : base(applicationPaths, xmlSerializer) { Instance = this; } /// /// Gets the current plugin instance. /// public static ListenBrainzPlugin? Instance { get; private set; } /// public override Guid Id => new("a5b2e8c1-9d4f-4a3b-8c7e-6f1a2b3c4d5e"); /// public override string Name => "ListenBrainz Similarity Provider"; /// public override string Description => "Get similar artist recommendations from ListenBrainz Labs."; /// public override string ConfigurationFileName => "Jellyfin.Plugin.ListenBrainz.xml"; /// public string ImageResourceName => GetType().Namespace + ".Configuration.ListenBrainz_logo.svg"; /// public IEnumerable GetPages() { var resourcePrefix = GetType().Namespace + ".Configuration."; yield return new PluginPageInfo { Name = Name, EmbeddedResourcePath = resourcePrefix + "config.html" }; yield return new PluginPageInfo { Name = Name + "Notice", EmbeddedResourcePath = resourcePrefix + "NOTICE.md" }; } }