From 7a719ee4accf42a6994127e58c31a5ef2a340700 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Sat, 27 Jun 2026 11:00:07 +0200 Subject: [PATCH] Feature: All bussiness units get a tile --- .../Api/Models/RecordingEntry.cs | 7 ++ .../Channels/RsiChannel.cs | 43 +++++++++++ .../Channels/RtrChannel.cs | 43 +++++++++++ .../Channels/RtsChannel.cs | 43 +++++++++++ .../Channels/SrfChannel.cs | 43 +++++++++++ .../{SRFPlayChannel.cs => SrgChannelBase.cs} | 72 +++++++++++++----- .../Channels/SwiChannel.cs | 43 +++++++++++ .../Configuration/PluginConfiguration.cs | 29 ++++++- .../Configuration/configPage.html | 46 ++++++++--- .../Jellyfin.Plugin.SRFPlay.csproj | 5 ++ .../ScheduledTasks/ContentRefreshTask.cs | 30 +++++--- Jellyfin.Plugin.SRFPlay/ServiceRegistrator.cs | 10 ++- .../Services/ContentRefreshService.cs | 10 ++- .../Interfaces/IContentRefreshService.cs | 6 +- .../Services/RecordingService.cs | 42 ++++++++-- assests/units/rsi-logo.png | Bin 0 -> 16881 bytes assests/units/rtr-logo.png | Bin 0 -> 26037 bytes assests/units/rts-logo.png | Bin 0 -> 24224 bytes assests/units/srf-logo.png | Bin 0 -> 26933 bytes assests/units/swi-logo.png | Bin 0 -> 19779 bytes 20 files changed, 413 insertions(+), 59 deletions(-) create mode 100644 Jellyfin.Plugin.SRFPlay/Channels/RsiChannel.cs create mode 100644 Jellyfin.Plugin.SRFPlay/Channels/RtrChannel.cs create mode 100644 Jellyfin.Plugin.SRFPlay/Channels/RtsChannel.cs create mode 100644 Jellyfin.Plugin.SRFPlay/Channels/SrfChannel.cs rename Jellyfin.Plugin.SRFPlay/Channels/{SRFPlayChannel.cs => SrgChannelBase.cs} (91%) create mode 100644 Jellyfin.Plugin.SRFPlay/Channels/SwiChannel.cs create mode 100644 assests/units/rsi-logo.png create mode 100644 assests/units/rtr-logo.png create mode 100644 assests/units/rts-logo.png create mode 100644 assests/units/srf-logo.png create mode 100644 assests/units/swi-logo.png diff --git a/Jellyfin.Plugin.SRFPlay/Api/Models/RecordingEntry.cs b/Jellyfin.Plugin.SRFPlay/Api/Models/RecordingEntry.cs index 697974c..b1362a5 100644 --- a/Jellyfin.Plugin.SRFPlay/Api/Models/RecordingEntry.cs +++ b/Jellyfin.Plugin.SRFPlay/Api/Models/RecordingEntry.cs @@ -20,6 +20,13 @@ public class RecordingEntry [JsonPropertyName("urn")] public string Urn { get; set; } = string.Empty; + /// + /// Gets or sets the business unit this recording belongs to (e.g. "srf", "rts"). + /// Used to show recordings under the matching unit's channel. + /// + [JsonPropertyName("businessUnit")] + public string BusinessUnit { get; set; } = string.Empty; + /// /// Gets or sets the title. /// diff --git a/Jellyfin.Plugin.SRFPlay/Channels/RsiChannel.cs b/Jellyfin.Plugin.SRFPlay/Channels/RsiChannel.cs new file mode 100644 index 0000000..423fdab --- /dev/null +++ b/Jellyfin.Plugin.SRFPlay/Channels/RsiChannel.cs @@ -0,0 +1,43 @@ +using Jellyfin.Plugin.SRFPlay.Api; +using Jellyfin.Plugin.SRFPlay.Configuration; +using Jellyfin.Plugin.SRFPlay.Services.Interfaces; +using Microsoft.Extensions.Logging; + +namespace Jellyfin.Plugin.SRFPlay.Channels; + +/// +/// Radiotelevisione svizzera — Swiss Italian channel. +/// +public sealed class RsiChannel : SrgChannelBase +{ + /// + /// Initializes a new instance of the class. + /// + /// The logger factory. + /// The content refresh service. + /// The stream resolver. + /// The media source factory. + /// The category service. + /// The API client factory. + /// The recording service. + public RsiChannel( + ILoggerFactory loggerFactory, + IContentRefreshService contentRefreshService, + IStreamUrlResolver streamResolver, + IMediaSourceFactory mediaSourceFactory, + ICategoryService? categoryService, + ISRFApiClientFactory apiClientFactory, + IRecordingService recordingService) + : base(loggerFactory, contentRefreshService, streamResolver, mediaSourceFactory, categoryService, apiClientFactory, recordingService) + { + } + + /// + protected override BusinessUnit Unit => BusinessUnit.RSI; + + /// + protected override string LogoResourceName => "Jellyfin.Plugin.SRFPlay.Images.rsi-logo.png"; + + /// + public override string Description => "Radiotelevisione svizzera — Swiss Italian video-on-demand content"; +} diff --git a/Jellyfin.Plugin.SRFPlay/Channels/RtrChannel.cs b/Jellyfin.Plugin.SRFPlay/Channels/RtrChannel.cs new file mode 100644 index 0000000..9ffe0df --- /dev/null +++ b/Jellyfin.Plugin.SRFPlay/Channels/RtrChannel.cs @@ -0,0 +1,43 @@ +using Jellyfin.Plugin.SRFPlay.Api; +using Jellyfin.Plugin.SRFPlay.Configuration; +using Jellyfin.Plugin.SRFPlay.Services.Interfaces; +using Microsoft.Extensions.Logging; + +namespace Jellyfin.Plugin.SRFPlay.Channels; + +/// +/// Radiotelevisiun Svizra Rumantscha — Swiss Romansh channel. +/// +public sealed class RtrChannel : SrgChannelBase +{ + /// + /// Initializes a new instance of the class. + /// + /// The logger factory. + /// The content refresh service. + /// The stream resolver. + /// The media source factory. + /// The category service. + /// The API client factory. + /// The recording service. + public RtrChannel( + ILoggerFactory loggerFactory, + IContentRefreshService contentRefreshService, + IStreamUrlResolver streamResolver, + IMediaSourceFactory mediaSourceFactory, + ICategoryService? categoryService, + ISRFApiClientFactory apiClientFactory, + IRecordingService recordingService) + : base(loggerFactory, contentRefreshService, streamResolver, mediaSourceFactory, categoryService, apiClientFactory, recordingService) + { + } + + /// + protected override BusinessUnit Unit => BusinessUnit.RTR; + + /// + protected override string LogoResourceName => "Jellyfin.Plugin.SRFPlay.Images.rtr-logo.png"; + + /// + public override string Description => "Radiotelevisiun Svizra Rumantscha — Swiss Romansh video-on-demand content"; +} diff --git a/Jellyfin.Plugin.SRFPlay/Channels/RtsChannel.cs b/Jellyfin.Plugin.SRFPlay/Channels/RtsChannel.cs new file mode 100644 index 0000000..488c209 --- /dev/null +++ b/Jellyfin.Plugin.SRFPlay/Channels/RtsChannel.cs @@ -0,0 +1,43 @@ +using Jellyfin.Plugin.SRFPlay.Api; +using Jellyfin.Plugin.SRFPlay.Configuration; +using Jellyfin.Plugin.SRFPlay.Services.Interfaces; +using Microsoft.Extensions.Logging; + +namespace Jellyfin.Plugin.SRFPlay.Channels; + +/// +/// Radio Télévision Suisse — Swiss French channel. +/// +public sealed class RtsChannel : SrgChannelBase +{ + /// + /// Initializes a new instance of the class. + /// + /// The logger factory. + /// The content refresh service. + /// The stream resolver. + /// The media source factory. + /// The category service. + /// The API client factory. + /// The recording service. + public RtsChannel( + ILoggerFactory loggerFactory, + IContentRefreshService contentRefreshService, + IStreamUrlResolver streamResolver, + IMediaSourceFactory mediaSourceFactory, + ICategoryService? categoryService, + ISRFApiClientFactory apiClientFactory, + IRecordingService recordingService) + : base(loggerFactory, contentRefreshService, streamResolver, mediaSourceFactory, categoryService, apiClientFactory, recordingService) + { + } + + /// + protected override BusinessUnit Unit => BusinessUnit.RTS; + + /// + protected override string LogoResourceName => "Jellyfin.Plugin.SRFPlay.Images.rts-logo.png"; + + /// + public override string Description => "Radio Télévision Suisse — Swiss French video-on-demand content"; +} diff --git a/Jellyfin.Plugin.SRFPlay/Channels/SrfChannel.cs b/Jellyfin.Plugin.SRFPlay/Channels/SrfChannel.cs new file mode 100644 index 0000000..c6e2530 --- /dev/null +++ b/Jellyfin.Plugin.SRFPlay/Channels/SrfChannel.cs @@ -0,0 +1,43 @@ +using Jellyfin.Plugin.SRFPlay.Api; +using Jellyfin.Plugin.SRFPlay.Configuration; +using Jellyfin.Plugin.SRFPlay.Services.Interfaces; +using Microsoft.Extensions.Logging; + +namespace Jellyfin.Plugin.SRFPlay.Channels; + +/// +/// Schweizer Radio und Fernsehen — Swiss German channel. +/// +public sealed class SrfChannel : SrgChannelBase +{ + /// + /// Initializes a new instance of the class. + /// + /// The logger factory. + /// The content refresh service. + /// The stream resolver. + /// The media source factory. + /// The category service. + /// The API client factory. + /// The recording service. + public SrfChannel( + ILoggerFactory loggerFactory, + IContentRefreshService contentRefreshService, + IStreamUrlResolver streamResolver, + IMediaSourceFactory mediaSourceFactory, + ICategoryService? categoryService, + ISRFApiClientFactory apiClientFactory, + IRecordingService recordingService) + : base(loggerFactory, contentRefreshService, streamResolver, mediaSourceFactory, categoryService, apiClientFactory, recordingService) + { + } + + /// + protected override BusinessUnit Unit => BusinessUnit.SRF; + + /// + protected override string LogoResourceName => "Jellyfin.Plugin.SRFPlay.Images.srf-logo.png"; + + /// + public override string Description => "Schweizer Radio und Fernsehen — Swiss German video-on-demand content"; +} diff --git a/Jellyfin.Plugin.SRFPlay/Channels/SRFPlayChannel.cs b/Jellyfin.Plugin.SRFPlay/Channels/SrgChannelBase.cs similarity index 91% rename from Jellyfin.Plugin.SRFPlay/Channels/SRFPlayChannel.cs rename to Jellyfin.Plugin.SRFPlay/Channels/SrgChannelBase.cs index fdaf9cd..3117649 100644 --- a/Jellyfin.Plugin.SRFPlay/Channels/SRFPlayChannel.cs +++ b/Jellyfin.Plugin.SRFPlay/Channels/SrgChannelBase.cs @@ -7,6 +7,7 @@ using System.Threading; using System.Threading.Tasks; using Jellyfin.Plugin.SRFPlay.Api; using Jellyfin.Plugin.SRFPlay.Api.Models; +using Jellyfin.Plugin.SRFPlay.Configuration; using Jellyfin.Plugin.SRFPlay.Constants; using Jellyfin.Plugin.SRFPlay.Services.Interfaces; using Jellyfin.Plugin.SRFPlay.Utilities; @@ -22,11 +23,12 @@ using Microsoft.Extensions.Logging; namespace Jellyfin.Plugin.SRFPlay.Channels; /// -/// SRF Play channel for browsing and playing content. +/// Base channel for browsing and playing content from a single SRG SSR business unit. +/// One concrete subclass exists per unit (SRF, RTS, RSI, RTR, SWI), each shown as its own tile. /// -public class SRFPlayChannel : IChannel, IHasCacheKey +public abstract class SrgChannelBase : IChannel, IHasCacheKey { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IContentRefreshService _contentRefreshService; private readonly IStreamUrlResolver _streamResolver; private readonly IMediaSourceFactory _mediaSourceFactory; @@ -35,7 +37,7 @@ public class SRFPlayChannel : IChannel, IHasCacheKey private readonly IRecordingService _recordingService; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The logger factory. /// The content refresh service. @@ -44,7 +46,7 @@ public class SRFPlayChannel : IChannel, IHasCacheKey /// The category service (optional). /// The API client factory. /// The recording service. - public SRFPlayChannel( + protected SrgChannelBase( ILoggerFactory loggerFactory, IContentRefreshService contentRefreshService, IStreamUrlResolver streamResolver, @@ -53,7 +55,7 @@ public class SRFPlayChannel : IChannel, IHasCacheKey ISRFApiClientFactory apiClientFactory, IRecordingService recordingService) { - _logger = loggerFactory.CreateLogger(); + _logger = loggerFactory.CreateLogger(); _contentRefreshService = contentRefreshService; _streamResolver = streamResolver; _mediaSourceFactory = mediaSourceFactory; @@ -66,14 +68,24 @@ public class SRFPlayChannel : IChannel, IHasCacheKey _logger.LogWarning("CategoryService not available - category folders will be disabled"); } - _logger.LogDebug("SRFPlayChannel initialized"); + _logger.LogDebug("SrgChannelBase initialized"); } - /// - public string Name => "SRF Play"; + /// + /// Gets the business unit this channel serves. + /// + protected abstract BusinessUnit Unit { get; } + + /// + /// Gets the embedded resource name of this unit's logo PNG. + /// + protected abstract string LogoResourceName { get; } /// - public string Description => "Swiss Radio and Television video-on-demand content"; + public string Name => $"{Unit} Play"; + + /// + public abstract string Description { get; } /// public string DataVersion => "2.0"; // Back to authenticating at channel refresh with auto-refresh for fresh tokens @@ -114,7 +126,8 @@ public class SRFPlayChannel : IChannel, IHasCacheKey public Task GetChannelImage(ImageType type, CancellationToken cancellationToken) { var assembly = GetType().Assembly; - var resourceStream = assembly.GetManifestResourceStream("Jellyfin.Plugin.SRFPlay.Images.logo.png"); + var resourceStream = assembly.GetManifestResourceStream(LogoResourceName) + ?? assembly.GetManifestResourceStream("Jellyfin.Plugin.SRFPlay.Images.logo.png"); if (resourceStream == null) { @@ -162,8 +175,21 @@ public class SRFPlayChannel : IChannel, IHasCacheKey } } + private bool IsUnitEnabled() + { + var config = Plugin.Instance?.Configuration; + return config == null || config.ResolveEnabledUnits().Contains(Unit); + } + private async Task> GetFolderItemsAsync(string? folderId, CancellationToken cancellationToken) { + // If this unit is not enabled in configuration, show nothing (empty tile). + if (!IsUnitEnabled()) + { + _logger.LogDebug("Business unit {Unit} is not enabled - returning no items", Unit); + return new List(); + } + // Root level - show folder list if (string.IsNullOrEmpty(folderId)) { @@ -198,7 +224,7 @@ public class SRFPlayChannel : IChannel, IHasCacheKey { try { - var businessUnit = config.BusinessUnit.ToLowerString(); + var businessUnit = Unit.ToLowerString(); var topics = await _categoryService.GetTopicsAsync(businessUnit, cancellationToken).ConfigureAwait(false); foreach (var topic in topics.Where(t => !string.IsNullOrEmpty(t.Id))) @@ -239,24 +265,23 @@ public class SRFPlayChannel : IChannel, IHasCacheKey private async Task> GetLatestVideosAsync(CancellationToken cancellationToken) { - var urns = await _contentRefreshService.RefreshLatestContentAsync(cancellationToken).ConfigureAwait(false); + var urns = await _contentRefreshService.RefreshLatestContentAsync(Unit.ToLowerString(), cancellationToken).ConfigureAwait(false); return await ConvertUrnsToChannelItems(urns, cancellationToken).ConfigureAwait(false); } private async Task> GetTrendingVideosAsync(CancellationToken cancellationToken) { - var urns = await _contentRefreshService.RefreshTrendingContentAsync(cancellationToken).ConfigureAwait(false); + var urns = await _contentRefreshService.RefreshTrendingContentAsync(Unit.ToLowerString(), cancellationToken).ConfigureAwait(false); return await ConvertUrnsToChannelItems(urns, cancellationToken).ConfigureAwait(false); } private async Task> GetLiveSportsAsync(CancellationToken cancellationToken) { var items = new List(); - var config = Plugin.Instance?.Configuration; try { - var businessUnit = config?.BusinessUnit.ToLowerString() ?? "srf"; + var businessUnit = Unit.ToLowerString(); using var apiClient = _apiClientFactory.CreateClient(); var scheduledLivestreams = await apiClient.GetScheduledLivestreamsAsync(businessUnit, "SPORT", cancellationToken).ConfigureAwait(false); @@ -307,6 +332,7 @@ public class SRFPlayChannel : IChannel, IHasCacheKey private List GetRecordingItems() { var items = new List(); + var unit = Unit.ToLowerString(); var recordings = _recordingService.GetRecordings(RecordingState.Completed); foreach (var recording in recordings) @@ -316,6 +342,15 @@ public class SRFPlayChannel : IChannel, IHasCacheKey continue; } + // Only show recordings belonging to this unit. Recordings created before the + // BusinessUnit tag existed have an empty value and are shown everywhere so they + // are not lost. + if (!string.IsNullOrEmpty(recording.BusinessUnit) && + !string.Equals(recording.BusinessUnit, unit, StringComparison.OrdinalIgnoreCase)) + { + continue; + } + var fileInfo = new System.IO.FileInfo(recording.OutputPath); var itemId = $"recording_{recording.Id}"; @@ -368,9 +403,8 @@ public class SRFPlayChannel : IChannel, IHasCacheKey try { - var config = Plugin.Instance?.Configuration; var topicId = folderId.Substring("category_".Length); - var businessUnit = config?.BusinessUnit.ToLowerString() ?? "srf"; + var businessUnit = Unit.ToLowerString(); var shows = await _categoryService.GetShowsByTopicAsync(topicId, businessUnit, 20, cancellationToken).ConfigureAwait(false); var urns = new List(); @@ -472,7 +506,7 @@ public class SRFPlayChannel : IChannel, IHasCacheKey var timeKey = timeBucket.ToString("yyyy-MM-dd-HH-mm", CultureInfo.InvariantCulture); var recordingCount = _recordingService.GetRecordings(RecordingState.Completed).Count; - return $"{config?.BusinessUnit}_{config?.EnableLatestContent}_{config?.EnableTrendingContent}_{config?.EnableCategoryFolders}_{enabledTopics}_{timeKey}_rec{recordingCount}"; + return $"{Unit}_{config?.EnableLatestContent}_{config?.EnableTrendingContent}_{config?.EnableCategoryFolders}_{enabledTopics}_{timeKey}_rec{recordingCount}"; } private async Task> ConvertUrnsToChannelItems(List urns, CancellationToken cancellationToken) diff --git a/Jellyfin.Plugin.SRFPlay/Channels/SwiChannel.cs b/Jellyfin.Plugin.SRFPlay/Channels/SwiChannel.cs new file mode 100644 index 0000000..ff6270f --- /dev/null +++ b/Jellyfin.Plugin.SRFPlay/Channels/SwiChannel.cs @@ -0,0 +1,43 @@ +using Jellyfin.Plugin.SRFPlay.Api; +using Jellyfin.Plugin.SRFPlay.Configuration; +using Jellyfin.Plugin.SRFPlay.Services.Interfaces; +using Microsoft.Extensions.Logging; + +namespace Jellyfin.Plugin.SRFPlay.Channels; + +/// +/// SWI swissinfo.ch — Swiss international channel. +/// +public sealed class SwiChannel : SrgChannelBase +{ + /// + /// Initializes a new instance of the class. + /// + /// The logger factory. + /// The content refresh service. + /// The stream resolver. + /// The media source factory. + /// The category service. + /// The API client factory. + /// The recording service. + public SwiChannel( + ILoggerFactory loggerFactory, + IContentRefreshService contentRefreshService, + IStreamUrlResolver streamResolver, + IMediaSourceFactory mediaSourceFactory, + ICategoryService? categoryService, + ISRFApiClientFactory apiClientFactory, + IRecordingService recordingService) + : base(loggerFactory, contentRefreshService, streamResolver, mediaSourceFactory, categoryService, apiClientFactory, recordingService) + { + } + + /// + protected override BusinessUnit Unit => BusinessUnit.SWI; + + /// + protected override string LogoResourceName => "Jellyfin.Plugin.SRFPlay.Images.swi-logo.png"; + + /// + public override string Description => "SWI swissinfo.ch — Swiss international video-on-demand content"; +} diff --git a/Jellyfin.Plugin.SRFPlay/Configuration/PluginConfiguration.cs b/Jellyfin.Plugin.SRFPlay/Configuration/PluginConfiguration.cs index b62c5a9..9929d06 100644 --- a/Jellyfin.Plugin.SRFPlay/Configuration/PluginConfiguration.cs +++ b/Jellyfin.Plugin.SRFPlay/Configuration/PluginConfiguration.cs @@ -66,6 +66,7 @@ public class PluginConfiguration : BasePluginConfiguration { // Set default options BusinessUnit = BusinessUnit.SRF; + EnabledBusinessUnits = new System.Collections.Generic.List { BusinessUnit.SRF }; QualityPreference = QualityPreference.Auto; ContentRefreshIntervalHours = 6; ExpirationCheckIntervalHours = 24; @@ -78,10 +79,20 @@ public class PluginConfiguration : BasePluginConfiguration } /// - /// Gets or sets the business unit to fetch content from. + /// Gets or sets the legacy single business unit. Retained for backwards compatibility and + /// migration into ; new code should use the list instead. /// public BusinessUnit BusinessUnit { get; set; } + /// + /// Gets or sets the list of business units to expose as channels. One channel tile is shown + /// per enabled unit, so polylingual households can browse e.g. SRF (German) and RTS (French) + /// at the same time. + /// + [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 EnabledBusinessUnits { get; set; } + /// /// Gets or sets the preferred video quality. /// @@ -161,4 +172,20 @@ public class PluginConfiguration : BasePluginConfiguration /// Gets or sets the output directory for sport livestream recordings. /// public string RecordingOutputPath { get; set; } = string.Empty; + + /// + /// Resolves the effective set of enabled business units, migrating from the legacy single + /// value when the list has not been populated yet. + /// + /// The business units that should have channels. + public System.Collections.Generic.IReadOnlyList ResolveEnabledUnits() + { + if (EnabledBusinessUnits != null && EnabledBusinessUnits.Count > 0) + { + return EnabledBusinessUnits; + } + + // Legacy installs only had a single BusinessUnit; honour it so they keep working. + return new System.Collections.Generic.List { BusinessUnit }; + } } diff --git a/Jellyfin.Plugin.SRFPlay/Configuration/configPage.html b/Jellyfin.Plugin.SRFPlay/Configuration/configPage.html index 4f60fb7..521320e 100644 --- a/Jellyfin.Plugin.SRFPlay/Configuration/configPage.html +++ b/Jellyfin.Plugin.SRFPlay/Configuration/configPage.html @@ -2,16 +2,29 @@
-
- - -
Select the Swiss broadcasting unit to fetch content from
+
+

Channels (Business Units)

+
Enable a channel tile for each Swiss broadcaster you want. A separate tile appears per enabled unit, so polylingual households can browse e.g. SRF (German) and RTS (French) at the same time.
+ + + + +
@@ -142,7 +155,12 @@ .addEventListener('pageshow', function() { Dashboard.showLoadingMsg(); ApiClient.getPluginConfiguration(SRFPlayConfig.pluginUniqueId).then(function (config) { - document.querySelector('#BusinessUnit').value = config.BusinessUnit; + var enabled = (config.EnabledBusinessUnits && config.EnabledBusinessUnits.length) + ? config.EnabledBusinessUnits + : [config.BusinessUnit]; // migrate legacy single value + ['SRF','RTS','RSI','RTR','SWI'].forEach(function(bu) { + document.querySelector('#bu' + bu).checked = enabled.indexOf(bu) !== -1; + }); document.querySelector('#QualityPreference').value = config.QualityPreference; document.querySelector('#ContentRefreshIntervalHours').value = config.ContentRefreshIntervalHours; document.querySelector('#ExpirationCheckIntervalHours').value = config.ExpirationCheckIntervalHours; @@ -168,7 +186,11 @@ .addEventListener('submit', function(e) { Dashboard.showLoadingMsg(); ApiClient.getPluginConfiguration(SRFPlayConfig.pluginUniqueId).then(function (config) { - config.BusinessUnit = document.querySelector('#BusinessUnit').value; + config.EnabledBusinessUnits = ['SRF','RTS','RSI','RTR','SWI'].filter(function(bu) { + return document.querySelector('#bu' + bu).checked; + }); + // Keep legacy field in sync with the first enabled unit for backwards compat. + config.BusinessUnit = config.EnabledBusinessUnits[0] || 'SRF'; config.QualityPreference = document.querySelector('#QualityPreference').value; config.ContentRefreshIntervalHours = parseInt(document.querySelector('#ContentRefreshIntervalHours').value); config.ExpirationCheckIntervalHours = parseInt(document.querySelector('#ExpirationCheckIntervalHours').value); diff --git a/Jellyfin.Plugin.SRFPlay/Jellyfin.Plugin.SRFPlay.csproj b/Jellyfin.Plugin.SRFPlay/Jellyfin.Plugin.SRFPlay.csproj index 5c74e22..c824c13 100644 --- a/Jellyfin.Plugin.SRFPlay/Jellyfin.Plugin.SRFPlay.csproj +++ b/Jellyfin.Plugin.SRFPlay/Jellyfin.Plugin.SRFPlay.csproj @@ -33,6 +33,11 @@ + + + + + diff --git a/Jellyfin.Plugin.SRFPlay/ScheduledTasks/ContentRefreshTask.cs b/Jellyfin.Plugin.SRFPlay/ScheduledTasks/ContentRefreshTask.cs index 84678ca..4d9ef92 100644 --- a/Jellyfin.Plugin.SRFPlay/ScheduledTasks/ContentRefreshTask.cs +++ b/Jellyfin.Plugin.SRFPlay/ScheduledTasks/ContentRefreshTask.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Jellyfin.Plugin.SRFPlay.Services.Interfaces; +using Jellyfin.Plugin.SRFPlay.Utilities; using MediaBrowser.Model.Tasks; using Microsoft.Extensions.Logging; @@ -63,20 +64,25 @@ public class ContentRefreshTask : IScheduledTask return; } - // Refresh latest content - if (config.EnableLatestContent) + // Refresh content for every enabled business unit (one channel per unit). + var units = config.ResolveEnabledUnits(); + foreach (var unit in units) { - _logger.LogInformation("Refreshing latest content"); - progress?.Report(25); - await _contentRefreshService.RefreshLatestContentAsync(cancellationToken).ConfigureAwait(false); - } + var businessUnit = unit.ToLowerString(); - // Refresh trending content - if (config.EnableTrendingContent) - { - _logger.LogInformation("Refreshing trending content"); - progress?.Report(75); - await _contentRefreshService.RefreshTrendingContentAsync(cancellationToken).ConfigureAwait(false); + if (config.EnableLatestContent) + { + _logger.LogInformation("Refreshing latest content for {BusinessUnit}", businessUnit); + progress?.Report(25); + await _contentRefreshService.RefreshLatestContentAsync(businessUnit, cancellationToken).ConfigureAwait(false); + } + + if (config.EnableTrendingContent) + { + _logger.LogInformation("Refreshing trending content for {BusinessUnit}", businessUnit); + progress?.Report(75); + await _contentRefreshService.RefreshTrendingContentAsync(businessUnit, cancellationToken).ConfigureAwait(false); + } } progress?.Report(100); diff --git a/Jellyfin.Plugin.SRFPlay/ServiceRegistrator.cs b/Jellyfin.Plugin.SRFPlay/ServiceRegistrator.cs index 0ef6988..d862cb8 100644 --- a/Jellyfin.Plugin.SRFPlay/ServiceRegistrator.cs +++ b/Jellyfin.Plugin.SRFPlay/ServiceRegistrator.cs @@ -49,7 +49,13 @@ public class ServiceRegistrator : IPluginServiceRegistrator serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); - // Register channel - must register as IChannel interface for Jellyfin to discover it - serviceCollection.AddSingleton(); + // Register one channel (tile) per SRG business unit. Each must be registered as IChannel + // for Jellyfin to discover it. A unit that is not in EnabledBusinessUnits returns no + // content (its tile appears empty) - see SrgChannelBase. + serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); } } diff --git a/Jellyfin.Plugin.SRFPlay/Services/ContentRefreshService.cs b/Jellyfin.Plugin.SRFPlay/Services/ContentRefreshService.cs index 60194af..0b4a303 100644 --- a/Jellyfin.Plugin.SRFPlay/Services/ContentRefreshService.cs +++ b/Jellyfin.Plugin.SRFPlay/Services/ContentRefreshService.cs @@ -34,9 +34,10 @@ public class ContentRefreshService : IContentRefreshService /// /// Refreshes latest content from SRF API using Play v3. /// + /// The business unit to fetch content for (e.g. "srf", "rts"). /// The cancellation token. /// List of URNs for new content. - public async Task> RefreshLatestContentAsync(CancellationToken cancellationToken) + public async Task> RefreshLatestContentAsync(string businessUnit, CancellationToken cancellationToken) { var config = Plugin.Instance?.Configuration; if (config == null || !config.EnableLatestContent) @@ -46,7 +47,7 @@ public class ContentRefreshService : IContentRefreshService } return await FetchVideosFromShowsAsync( - config.BusinessUnit.ToLowerString(), + businessUnit, minEpisodeCount: 0, maxShows: 20, videosPerShow: 1, @@ -58,9 +59,10 @@ public class ContentRefreshService : IContentRefreshService /// Refreshes trending content from SRF API using Play v3. /// Gets videos from shows with the most episodes. /// + /// The business unit to fetch content for (e.g. "srf", "rts"). /// The cancellation token. /// List of URNs for trending content. - public async Task> RefreshTrendingContentAsync(CancellationToken cancellationToken) + public async Task> RefreshTrendingContentAsync(string businessUnit, CancellationToken cancellationToken) { var config = Plugin.Instance?.Configuration; if (config == null || !config.EnableTrendingContent) @@ -70,7 +72,7 @@ public class ContentRefreshService : IContentRefreshService } return await FetchVideosFromShowsAsync( - config.BusinessUnit.ToLowerString(), + businessUnit, minEpisodeCount: 10, maxShows: 15, videosPerShow: 2, diff --git a/Jellyfin.Plugin.SRFPlay/Services/Interfaces/IContentRefreshService.cs b/Jellyfin.Plugin.SRFPlay/Services/Interfaces/IContentRefreshService.cs index b0fd5c6..acaa66c 100644 --- a/Jellyfin.Plugin.SRFPlay/Services/Interfaces/IContentRefreshService.cs +++ b/Jellyfin.Plugin.SRFPlay/Services/Interfaces/IContentRefreshService.cs @@ -12,14 +12,16 @@ public interface IContentRefreshService /// /// Refreshes latest content from SRF API using Play v3. /// + /// The business unit to fetch content for (e.g. "srf", "rts"). /// The cancellation token. /// List of URNs for new content. - Task> RefreshLatestContentAsync(CancellationToken cancellationToken); + Task> RefreshLatestContentAsync(string businessUnit, CancellationToken cancellationToken); /// /// Refreshes trending content from SRF API using Play v3. /// + /// The business unit to fetch content for (e.g. "srf", "rts"). /// The cancellation token. /// List of URNs for trending content. - Task> RefreshTrendingContentAsync(CancellationToken cancellationToken); + Task> RefreshTrendingContentAsync(string businessUnit, CancellationToken cancellationToken); } diff --git a/Jellyfin.Plugin.SRFPlay/Services/RecordingService.cs b/Jellyfin.Plugin.SRFPlay/Services/RecordingService.cs index e8f1037..2b14467 100644 --- a/Jellyfin.Plugin.SRFPlay/Services/RecordingService.cs +++ b/Jellyfin.Plugin.SRFPlay/Services/RecordingService.cs @@ -148,18 +148,25 @@ public class RecordingService : IRecordingService, IDisposable public async Task> GetUpcomingScheduleAsync(CancellationToken cancellationToken) { var config = Plugin.Instance?.Configuration; - var businessUnit = (config?.BusinessUnit ?? Configuration.BusinessUnit.SRF).ToString().ToLowerInvariant(); + var units = config?.ResolveEnabledUnits() ?? new[] { Configuration.BusinessUnit.SRF }; using var apiClient = _apiClientFactory.CreateClient(); - var livestreams = await apiClient.GetScheduledLivestreamsAsync(businessUnit, "SPORT", cancellationToken).ConfigureAwait(false); - if (livestreams == null) + // Aggregate sport livestreams across every enabled business unit so the recordings + // page shows events from all enabled languages. + var all = new List(); + foreach (var unit in units) { - return Array.Empty(); + var businessUnit = unit.ToString().ToLowerInvariant(); + var livestreams = await apiClient.GetScheduledLivestreamsAsync(businessUnit, "SPORT", cancellationToken).ConfigureAwait(false); + if (livestreams != null) + { + all.AddRange(livestreams); + } } // Filter to only future/current livestreams that aren't blocked - return livestreams + return all .Where(ls => ls.Blocked != true && (ls.ValidTo == null || ls.ValidTo.Value.ToUniversalTime() > DateTime.UtcNow)) .OrderBy(ls => ls.ValidFrom) .ToList(); @@ -178,9 +185,11 @@ public class RecordingService : IRecordingService, IDisposable return existing; } - // Fetch metadata for the URN + // Fetch metadata for the URN. The unit is encoded in the URN itself, so use that to + // query the right schedule regardless of which units are enabled. var config = Plugin.Instance?.Configuration; - var businessUnit = (config?.BusinessUnit ?? Configuration.BusinessUnit.SRF).ToString().ToLowerInvariant(); + var businessUnit = ParseBusinessUnitFromUrn(urn) + ?? (config?.BusinessUnit ?? Configuration.BusinessUnit.SRF).ToString().ToLowerInvariant(); using var apiClient = _apiClientFactory.CreateClient(); var livestreams = await apiClient.GetScheduledLivestreamsAsync(businessUnit, "SPORT", cancellationToken).ConfigureAwait(false); @@ -190,6 +199,7 @@ public class RecordingService : IRecordingService, IDisposable { Id = Guid.NewGuid().ToString("N"), Urn = urn, + BusinessUnit = ParseBusinessUnitFromUrn(urn) ?? businessUnit, Title = program?.Title ?? urn, Description = program?.Lead ?? program?.Description, ImageUrl = program?.ImageUrl, @@ -206,6 +216,24 @@ public class RecordingService : IRecordingService, IDisposable return entry; } + /// + /// Extracts the business unit from an SRF URN of the form "urn:<bu>:<type>:...". + /// + /// The URN. + /// The lowercase business unit, or null if it cannot be determined. + private static string? ParseBusinessUnitFromUrn(string urn) + { + if (string.IsNullOrEmpty(urn)) + { + return null; + } + + var parts = urn.Split(':'); + return parts.Length >= 2 && !string.IsNullOrEmpty(parts[1]) + ? parts[1].ToLowerInvariant() + : null; + } + /// public bool CancelRecording(string recordingId) { diff --git a/assests/units/rsi-logo.png b/assests/units/rsi-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d3e8ec31b9c1c5489cf35a44fa86b8db2ecb29 GIT binary patch literal 16881 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 Z{4{CL^LMQR{~-cIN5fFP`VKnk{{hnCaJK*e literal 0 HcmV?d00001 diff --git a/assests/units/rtr-logo.png b/assests/units/rtr-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c6a9990b7189713722aec5a8eac6f9a65e8643 GIT binary patch literal 26037 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ʳSr*LoA@>m*qmB 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 literal 0 HcmV?d00001 diff --git a/assests/units/srf-logo.png b/assests/units/srf-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..86d416291cfbb30607ba7868d0f2e8899a099bed GIT binary patch literal 26933 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 literal 0 HcmV?d00001 diff --git a/assests/units/swi-logo.png b/assests/units/swi-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6f98cd2a273bd673a9e1b0fb3ff353bd2b414cdb GIT binary patch literal 19779 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

bj0*hGWyJ4ID+JK+@gZv2vt{vZQMrIdg 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 n6H-QP84ZEa5P*k3%bP0l+XkKE