diff --git a/.vscode/settings.json b/.vscode/settings.json
index b4c529b..1d8c9ab 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,15 +1,16 @@
{
// jellyfinDir : The directory of the cloned jellyfin server project
// This needs to be built once before it can be used
- "jellyfinDir" : "${workspaceFolder}/../jellyfin/Jellyfin.Server",
+ "jellyfinDir": "${workspaceFolder}/../jellyfin/Jellyfin.Server",
// jellyfinWebDir : The directory of the cloned jellyfin-web project
// This needs to be built once before it can be used
- "jellyfinWebDir" : "${workspaceFolder}/../jellyfin-web",
+ "jellyfinWebDir": "${workspaceFolder}/../jellyfin-web",
// jellyfinDataDir : the root data directory for a running jellyfin instance
// This is where jellyfin stores its configs, plugins, metadata etc
// This is platform specific by default, but on Windows defaults to
// ${env:LOCALAPPDATA}/jellyfin
- "jellyfinDataDir" : "${env:LOCALAPPDATA}/jellyfin",
+ "jellyfinDataDir": "${env:LOCALAPPDATA}/jellyfin",
// The name of the plugin
- "pluginName" : "Jellyfin.Plugin.Template",
-}
+ "pluginName": "Jellyfin.Plugin.Template",
+ "git.ignoreLimitWarning": true,
+}
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index ed755b6..3ee7cdd 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,7 +1,7 @@
- 1.4.0.0
- 1.4.0.0
- 1.4.0.0
+ 1.4.1.0
+ 1.4.1.0
+ 1.4.1.0
diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/Configuration/PluginConfiguration.cs b/Jellyfin.Plugin.TubeArchivistMetadata/Configuration/PluginConfiguration.cs
index ce10eef..21e23b0 100644
--- a/Jellyfin.Plugin.TubeArchivistMetadata/Configuration/PluginConfiguration.cs
+++ b/Jellyfin.Plugin.TubeArchivistMetadata/Configuration/PluginConfiguration.cs
@@ -36,11 +36,17 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
_tubeArchivistUrl = string.Empty;
_tubeArchivistApiKey = string.Empty;
MaxDescriptionLength = 500;
- JFTASync = false;
+ JFTAProgressSync = false;
JFUsernameFrom = string.Empty;
- TAJFSync = false;
+ TAJFProgressSync = false;
+ JFTAPlaylistsSync = false;
+ JFTAPlaylistsDelete = false;
+ TAJFPlaylistsSync = false;
+ TAJFPlaylistsDelete = false;
_jfUsernamesTo = new HashSet();
- TAJFTaskInterval = 1;
+ TAJFProgressTaskInterval = 60;
+ JFTAPlaylistsSyncTaskInterval = 60;
+ TAJFPlaylistsSyncTaskInterval = 60;
}
///
@@ -100,12 +106,32 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
///
/// Gets or sets a value indicating whether to enable TA->JF playback progress synchronization.
///
- public bool TAJFSync { get; set; }
+ public bool TAJFProgressSync { get; set; }
///
/// Gets or sets a value indicating whether to enable JF->TA playback progress synchronization.
///
- public bool JFTASync { get; set; }
+ public bool JFTAProgressSync { get; set; }
+
+ ///
+ /// Gets or sets a value indicating whether to enable JF->TA playlists synchronization.
+ ///
+ public bool JFTAPlaylistsSync { get; set; }
+
+ ///
+ /// Gets or sets a value indicating whether to delete playlists from TA when not found on JF.
+ ///
+ public bool JFTAPlaylistsDelete { get; set; }
+
+ ///
+ /// Gets or sets a value indicating whether to enable TA->JF playlists synchronization.
+ ///
+ public bool TAJFPlaylistsSync { get; set; }
+
+ ///
+ /// Gets or sets a value indicating whether to delete playlists from JF when not found on TA.
+ ///
+ public bool TAJFPlaylistsDelete { get; set; }
///
/// Gets or sets the playback progress owner Jellyfin username to synchronize data to TubeArchivist.
@@ -146,7 +172,19 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
/// Gets or sets the interval in seconds at which the TubeArchivist to Jellyfin playback progress synchronization task should run.
/// It requires Jellyfin server restart to take effect.
///
- public int TAJFTaskInterval { get; set; }
+ public int TAJFProgressTaskInterval { get; set; }
+
+ ///
+ /// Gets or sets the interval in seconds at which the Jellyfin to TubeArchivist playlists synchronization task should run.
+ /// It requires Jellyfin server restart to take effect.
+ ///
+ public int JFTAPlaylistsSyncTaskInterval { get; set; }
+
+ ///
+ /// Gets or sets the interval in seconds at which the TubeArchivist to Jellyfin playlists synchronization task should run.
+ /// It requires Jellyfin server restart to take effect.
+ ///
+ public int TAJFPlaylistsSyncTaskInterval { get; set; }
///
/// Gets the playback progress owners Jellyfin usernames to synchronize data from TubeArchivist.
diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/Configuration/configPage.html b/Jellyfin.Plugin.TubeArchivistMetadata/Configuration/configPage.html
index d4e07d5..86f016d 100644
--- a/Jellyfin.Plugin.TubeArchivistMetadata/Configuration/configPage.html
+++ b/Jellyfin.Plugin.TubeArchivistMetadata/Configuration/configPage.html
@@ -42,28 +42,43 @@
and episodes
-
Playback synchronization
+
Synchronization
-
-
+
+
Jellyfin to TubeArchivist
+ from
-
This is the Jellyfin username to synchronize data from on
+ placeholder="Username" />
+
This is the Jellyfin username to synchronize data to
TubeArchivist
-
+
+
+
+
+ Synchronize Jellyfin playlists to TubeArchivist
+
+
+
+
+
+
+ Delete TubeArchivist playlists when no more present on Jellyfin
+
+
+
+
+
TubeArchivist to Jellyfin
+
Jellyfin usernames to sync
playback status to
@@ -72,13 +87,52 @@
These are the (comma separated) Jellyfin usernames to synchronize
data from TubeArchivist