feat: add configuration for episode numbering scheme

This commit is contained in:
wolffshots
2025-08-04 18:21:30 +02:00
parent 38ed5dd9e0
commit 4358072001
4 changed files with 42 additions and 1 deletions
@@ -0,0 +1,17 @@
namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration;
/// <summary>
/// The NumberingScheme.
/// </summary>
public enum NumberingScheme
{
/// <summary>
/// Default (no numbering).
/// </summary>
Default,
/// <summary>
/// YYYYMMDD (e.g. 20250804 for August 4th, 2025).
/// </summary>
YYYYMMDD,
}
@@ -148,6 +148,11 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
/// </summary>
public int TAJFTaskInterval { get; set; }
/// <summary>
/// Gets or sets the preferred numbering scheme for episodes (index number) in Jellyfin.
/// </summary>
public NumberingScheme EpisodeNumberingScheme { get; set; } = NumberingScheme.Default;
/// <summary>
/// Gets the playback progress owners Jellyfin usernames to synchronize data from TubeArchivist.
/// </summary>
@@ -79,6 +79,18 @@
<div class="fieldDescription">This is the TubeArchivist to Jellyfin playback progress
synchronization interval in seconds (Jellyfin restart required).</div>
</div>
<div class="selectContainer">
<label class="selectLabel" for="EpisodeNumberingScheme">Episode numbering scheme</label>
<select is="emby-select" id="EpisodeNumberingScheme" name="EpisodeNumberingScheme" label="Description markup" class="emby-select-withcolor emby-select">
<option value="Default">Default (no specified numbering)</option>
<option value="YYYYMMDD">YYYYMMDD (e.g. 20250804 for August 4th, 2025)</option>
</select>
<div class="selectArrowContainer">
<span class="selectArrow material-icons keyboard_arrow_down" aria-hidden="true"></span>
</div>
<div class="fieldDescription">This is the numbering scheme for episodes in Jellyfin (IndexNumber).
Default is the same as no numbering which allows Jellyfin to use the fallback numbering scheme.</div>
</div>
<div>
<button is="emby-button" type="submit" class="raised button-submit block emby-button">
<span>Save</span>
@@ -105,6 +117,7 @@
document.querySelector('#TAJFSync').checked = config.TAJFSync;
document.querySelector('#JFUsernameFrom').value = config.JFUsernameFrom;
document.querySelector('#TAJFTaskInterval').value = config.TAJFTaskInterval;
document.querySelector('#EpisodeNumberingScheme').value = config.EpisodeNumberingScheme;
Dashboard.hideLoadingMsg();
});
});
@@ -122,6 +135,7 @@
config.TAJFSync = document.querySelector('#TAJFSync').checked;
config.JFUsernameFrom = document.querySelector('#JFUsernameFrom').value;
config.TAJFTaskInterval = document.querySelector('#TAJFTaskInterval').value;
config.EpisodeNumberingScheme = document.querySelector('#EpisodeNumberingScheme').value;
ApiClient.updatePluginConfiguration(TAMetadataConfig.pluginUniqueId, config).then(function (result) {
Dashboard.processPluginConfigurationUpdateResult(result);
});
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
using Jellyfin.Plugin.TubeArchivistMetadata.Configuration;
using Jellyfin.Plugin.TubeArchivistMetadata.Utilities;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
@@ -126,7 +127,11 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.TubeArchivist
Overview = Utils.FormatDescription(Description),
SeasonName = Published.Year.ToString(CultureInfo.CurrentCulture),
ParentIndexNumber = Published.Year,
IndexNumber = (Published.Year * 10000) + (Published.Month * 100) + Published.Day,
IndexNumber = Plugin.Instance?.Configuration?.EpisodeNumberingScheme switch
{
NumberingScheme.YYYYMMDD => (Published.Year * 10000) + (Published.Month * 100) + Published.Day,
_ => null
},
SeriesName = Channel.Name,
ProductionYear = Published.Year,
PremiereDate = Published,