using MediaBrowser.Model.Plugins; namespace Jellyfin.Plugin.SRFPlay.Configuration; /// /// Business unit options for SRF content. /// public enum BusinessUnit { /// /// SRF (Swiss Radio and Television - German). /// SRF, /// /// RTS (Radio Télévision Suisse - French). /// RTS, /// /// RSI (Radiotelevisione svizzera - Italian). /// RSI, /// /// RTR (Radiotelevisiun Svizra Rumantscha - Romansh). /// RTR, /// /// SWI (Swiss World International). /// SWI } /// /// Quality preference for video streams. /// public enum QualityPreference { /// /// Automatic quality selection. /// Auto, /// /// Standard definition. /// SD, /// /// High definition. /// HD } /// /// Plugin configuration. /// public class PluginConfiguration : BasePluginConfiguration { /// /// Initializes a new instance of the class. /// public PluginConfiguration() { // Set default options BusinessUnit = BusinessUnit.SRF; QualityPreference = QualityPreference.Auto; ContentRefreshIntervalHours = 6; ExpirationCheckIntervalHours = 24; CacheDurationMinutes = 60; EnableLatestContent = true; EnableTrendingContent = true; EnableCategoryFolders = true; EnabledTopics = new System.Collections.Generic.List(); } /// /// Gets or sets the business unit to fetch content from. /// public BusinessUnit BusinessUnit { get; set; } /// /// Gets or sets the preferred video quality. /// public QualityPreference QualityPreference { get; set; } /// /// Gets or sets the content refresh interval in hours. /// public int ContentRefreshIntervalHours { get; set; } /// /// Gets or sets the expiration check interval in hours. /// public int ExpirationCheckIntervalHours { get; set; } /// /// Gets or sets the metadata cache duration in minutes. /// public int CacheDurationMinutes { get; set; } /// /// Gets or sets a value indicating whether to enable latest content discovery. /// public bool EnableLatestContent { get; set; } /// /// Gets or sets a value indicating whether to enable trending content discovery. /// public bool EnableTrendingContent { get; set; } /// /// Gets or sets a value indicating whether to use a proxy for API requests. /// public bool UseProxy { get; set; } /// /// Gets or sets the proxy server address (e.g., http://proxy.example.com:8080). /// public string ProxyAddress { get; set; } = string.Empty; /// /// Gets or sets the proxy username (optional). /// public string ProxyUsername { get; set; } = string.Empty; /// /// Gets or sets the proxy password (optional). /// public string ProxyPassword { get; set; } = string.Empty; /// /// Gets or sets a value indicating whether to enable category/topic folders in the channel. /// public bool EnableCategoryFolders { get; set; } /// /// Gets or sets the list of enabled topic IDs. If empty, all topics are shown. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2227:Collection properties should be read only", Justification = "Required for configuration serialization")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1002:Do not expose generic lists", Justification = "Configuration DTO")] public System.Collections.Generic.List EnabledTopics { get; set; } }