Allow only one Jellyfin user to sync data from

This commit is contained in:
DarkFighterLuke
2024-08-30 17:34:26 +02:00
parent fc221e4407
commit 4ffdbaf7f8
3 changed files with 10 additions and 33 deletions
@@ -17,7 +17,6 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
private string _tubeArchivistUrl; private string _tubeArchivistUrl;
private string _tubeArchivistApiKey; private string _tubeArchivistApiKey;
private HashSet<string> _jfUsernamesTo; private HashSet<string> _jfUsernamesTo;
private HashSet<string> _jfUsernamesFrom;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="PluginConfiguration"/> class. /// Initializes a new instance of the <see cref="PluginConfiguration"/> class.
@@ -37,10 +36,10 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
_tubeArchivistUrl = string.Empty; _tubeArchivistUrl = string.Empty;
_tubeArchivistApiKey = string.Empty; _tubeArchivistApiKey = string.Empty;
MaxDescriptionLength = 500; MaxDescriptionLength = 500;
JFTASync = false;
JFUsernameFrom = string.Empty;
TAJFSync = false; TAJFSync = false;
_jfUsernamesTo = new HashSet<string>(); _jfUsernamesTo = new HashSet<string>();
JFTASync = false;
_jfUsernamesFrom = new HashSet<string>();
} }
/// <summary> /// <summary>
@@ -107,22 +106,9 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
public bool JFTASync { get; set; } public bool JFTASync { get; set; }
/// <summary> /// <summary>
/// Gets or sets the playback progress owner Jellyfin usernames to synchronize data to TubeArchivist. /// Gets or sets the playback progress owner Jellyfin username to synchronize data to TubeArchivist.
/// </summary> /// </summary>
public string JFUsernamesFrom public string JFUsernameFrom { get; set; }
{
get
{
_logger.LogInformation("JFUsernamesFrom configured: {Message}", string.Join(", ", _jfUsernamesFrom));
return string.Join(", ", _jfUsernamesFrom);
}
set
{
value.Replace(" ", string.Empty, StringComparison.CurrentCulture).Split(',').ToList().ForEach(u => _jfUsernamesFrom.Add(u));
_logger.LogInformation("Set JFUsernamesFrom to: {Message}", value);
}
}
/// <summary> /// <summary>
/// Gets or sets the playback progress owners Jellyfin usernames to synchronize data from TubeArchivist. /// Gets or sets the playback progress owners Jellyfin usernames to synchronize data from TubeArchivist.
@@ -142,15 +128,6 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
} }
} }
/// <summary>
/// Gets the playback progress owner Jellyfin usernames to synchronize data to TubeArchivist.
/// </summary>
/// <returns>An array of usernames.</returns>
public HashSet<string> GetJFUsernamesFromArray()
{
return _jfUsernamesFrom;
}
/// <summary> /// <summary>
/// Gets the playback progress owners Jellyfin usernames to synchronize data from TubeArchivist. /// Gets the playback progress owners Jellyfin usernames to synchronize data from TubeArchivist.
/// </summary> /// </summary>
@@ -51,11 +51,11 @@
</label> </label>
</div> </div>
<div class="inputContainer"> <div class="inputContainer">
<label class="inputLabel inputLabelUnfocused" for="JFUsernamesFrom">Jellyfin usernames to sync <label class="inputLabel inputLabelUnfocused" for="JFUsernameFrom">Jellyfin username to sync
playback status from</label> playback status from</label>
<input id="JFUsernamesFrom" name="JFUsernamesFrom" type="text" is="emby-input" <input id="JFUsernameFrom" name="JFUsernameFrom" type="text" is="emby-input"
placeholder="Username1, username2, ..." /> placeholder="Username1, username2, ..." />
<div class="fieldDescription">These are the (comma separated) Jellyfin usernames to synchronize data from on <div class="fieldDescription">This is the Jellyfin username to synchronize data from on
TubeArchivist</div> TubeArchivist</div>
</div> </div>
<div class="checkboxContainer checkboxContainer-withDescription"> <div class="checkboxContainer checkboxContainer-withDescription">
@@ -96,7 +96,7 @@
document.querySelector('#JFTASync').checked = config.JFTASync; document.querySelector('#JFTASync').checked = config.JFTASync;
document.querySelector('#JFUsernamesTo').value = config.JFUsernamesTo; document.querySelector('#JFUsernamesTo').value = config.JFUsernamesTo;
document.querySelector('#TAJFSync').checked = config.TAJFSync; document.querySelector('#TAJFSync').checked = config.TAJFSync;
document.querySelector('#JFUsernamesFrom').value = config.JFUsernamesFrom; document.querySelector('#JFUsernameFrom').value = config.JFUsernameFrom;
Dashboard.hideLoadingMsg(); Dashboard.hideLoadingMsg();
}); });
}); });
@@ -112,7 +112,7 @@
config.JFTASync = document.querySelector('#JFTASync').checked; config.JFTASync = document.querySelector('#JFTASync').checked;
config.JFUsernamesTo = document.querySelector('#JFUsernamesTo').value; config.JFUsernamesTo = document.querySelector('#JFUsernamesTo').value;
config.TAJFSync = document.querySelector('#TAJFSync').checked; config.TAJFSync = document.querySelector('#TAJFSync').checked;
config.JFUsernamesFrom = document.querySelector('#JFUsernamesFrom').value; config.JFUsernameFrom = document.querySelector('#JFUsernameFrom').value;
ApiClient.updatePluginConfiguration(TAMetadataConfig.pluginUniqueId, config).then(function (result) { ApiClient.updatePluginConfiguration(TAMetadataConfig.pluginUniqueId, config).then(function (result) {
Dashboard.processPluginConfigurationUpdateResult(result); Dashboard.processPluginConfigurationUpdateResult(result);
}); });
@@ -132,7 +132,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata
private async void OnPlaybackProgress(object? sender, PlaybackProgressEventArgs eventArgs) private async void OnPlaybackProgress(object? sender, PlaybackProgressEventArgs eventArgs)
{ {
if (Instance!.Configuration.JFTASync && eventArgs.Users.Any(u => Instance!.Configuration.GetJFUsernamesFromArray().Contains(u.Username))) if (Instance!.Configuration.JFTASync && eventArgs.Users.Any(u => Instance!.Configuration.JFUsernameFrom.Equals(u.Username, StringComparison.Ordinal)))
{ {
BaseItem? channel = LibraryManager.GetItemById(eventArgs.Item.ParentId); BaseItem? channel = LibraryManager.GetItemById(eventArgs.Item.ParentId);
BaseItem? collection = LibraryManager.GetItemById(channel!.ParentId); BaseItem? collection = LibraryManager.GetItemById(channel!.ParentId);