using System; using System.Collections.Generic; using System.Globalization; using Jellyfin.Plugin.Floatplane.Configuration; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Serialization; namespace Jellyfin.Plugin.Floatplane; /// /// Floatplane plugin — exposes Floatplane subscriptions as a Jellyfin channel. /// public class Plugin : BasePlugin, IHasWebPages { /// Plugin GUID; must match build.yaml / meta.json. public const string PluginGuid = "7f2b6c1e-5a3d-4e8f-9b0a-2c4d6e8f0a1b"; public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) : base(applicationPaths, xmlSerializer) { Instance = this; } /// public override string Name => "Floatplane"; /// public override Guid Id => Guid.Parse(PluginGuid); /// public override string Description => "Browse and play your Floatplane subscriptions inside Jellyfin."; /// Gets the current plugin instance. public static Plugin? Instance { get; private set; } /// Gets the User-Agent the plugin identifies itself with towards Floatplane. public static string UserAgent { get; } = string.Format( CultureInfo.InvariantCulture, "Jellyfin-Floatplane/{0} (+https://gitea.brasse-pc.eu/brasse/jellyfin-plugin-floatplane)", typeof(Plugin).Assembly.GetName().Version?.ToString(3) ?? "0.0.0"); /// public IEnumerable GetPages() { return [ new PluginPageInfo { Name = Name, EmbeddedResourcePath = string.Format( CultureInfo.InvariantCulture, "{0}.Configuration.configPage.html", GetType().Namespace) } ]; } }