From 6e7dbd859cfd56879255e32fa13ab5af66bf4ab2 Mon Sep 17 00:00:00 2001 From: DarkFighterLuke <31162436+DarkFighterLuke@users.noreply.github.com> Date: Tue, 21 Oct 2025 23:14:29 +0200 Subject: [PATCH 1/2] Revise installation steps and .NET version in README Updated installation instructions and image links in README. --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 196758b..7977bd7 100644 --- a/README.md +++ b/README.md @@ -30,15 +30,15 @@ The plugin interacts with TubeArchivist APIs to fetch videos and channels metada ## Installation ### From official repository (recommended) -1. Go to `Dashboard -> Plugins` and select the `Repositories` tab +1. Go to `Dashboard -> Plugins` and click on the `Manage Repositories` button 2. Add a new repository with the following details: - Repository name: `TubeArchivistMetadata` - Repository URL: `https://github.com/tubearchivist/tubearchivist-jf-plugin/raw/master/manifest.json` - ![Add repository](https://github.com/tubearchivist/tubearchivist-jf-plugin/assets/31162436/b0216b21-79c4-445b-8cf1-fbf6b138dee0) + ![Add repository](https://github.com/user-attachments/assets/337ba921-bc97-47ea-815c-c664cf7661a2) -3. Go to the `Catalog` tab -4. Find `TubeArchivistMetadata` in the `Metadata` section and install it -![Find plugin](https://github.com/tubearchivist/tubearchivist-jf-plugin/assets/31162436/a30a14c2-33cd-44c1-b96a-406662726e5e) +3. Go back to the catalog +4. Find `TubeArchivistMetadata` and install it +![Find plugin](https://github.com/user-attachments/assets/41f7315b-27c6-47dd-958f-21a232c30013) 5. Restart Jellyfin to apply the changes ### From ZIP in GitHub releases @@ -93,7 +93,7 @@ In the second field you can specify the interval in seconds the task should run ## Build -1. To build this plugin you will need [.Net 8.x](https://dotnet.microsoft.com/download/dotnet/8.0). +1. To build this plugin you will need [.Net 9.x](https://dotnet.microsoft.com/download/dotnet/9.0). 2. Build plugin with following command ``` From 7e496643f8f235ebacb1ae078a6f2e5300f76e18 Mon Sep 17 00:00:00 2001 From: DarkFighterLuke Date: Tue, 21 Oct 2025 23:16:33 +0200 Subject: [PATCH 2/2] Adapt calls to IsPlayed method new signature modified: Jellyfin.Plugin.TubeArchivistMetadata/Jellyfin.Plugin.TubeArchivistMetadata.csproj modified: Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs modified: Jellyfin.Plugin.TubeArchivistMetadata/Tasks/JFToTubeArchivistProgressSyncTask.cs --- .../Jellyfin.Plugin.TubeArchivistMetadata.csproj | 4 ++-- Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs | 9 ++++++++- .../Tasks/JFToTubeArchivistProgressSyncTask.cs | 7 ++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/Jellyfin.Plugin.TubeArchivistMetadata.csproj b/Jellyfin.Plugin.TubeArchivistMetadata/Jellyfin.Plugin.TubeArchivistMetadata.csproj index 302d3ff..233879e 100644 --- a/Jellyfin.Plugin.TubeArchivistMetadata/Jellyfin.Plugin.TubeArchivistMetadata.csproj +++ b/Jellyfin.Plugin.TubeArchivistMetadata/Jellyfin.Plugin.TubeArchivistMetadata.csproj @@ -11,8 +11,8 @@ - - + + diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs b/Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs index 4fd566f..d1713ea 100644 --- a/Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs +++ b/Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs @@ -186,9 +186,16 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata } var user = _userManager.GetUserById(eventArgs.UserId); + if (user == null) + { + Logger.LogError("OnWatchedStatusChange callback called without user id for item {ItemName}", eventArgs.Item.Name); + return; + } + + var userItemData = _userDataManager.GetUserData(user, eventArgs.Item); if (Configuration.JFTASync && user != null && Configuration.GetJFUsernamesToArray().Contains(user!.Username)) { - var isPlayed = eventArgs.Item.IsPlayed(user); + var isPlayed = eventArgs.Item.IsPlayed(user, userItemData); Logger.LogDebug("User {UserId} changed watched status to {Status} for the item {ItemName}", eventArgs.UserId, isPlayed, eventArgs.Item.Name); string itemYTId; try diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/JFToTubeArchivistProgressSyncTask.cs b/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/JFToTubeArchivistProgressSyncTask.cs index 741496a..972ad92 100644 --- a/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/JFToTubeArchivistProgressSyncTask.cs +++ b/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/JFToTubeArchivistProgressSyncTask.cs @@ -155,10 +155,11 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks var videoYTId = Utils.GetVideoNameFromPath(video.Path); _logger.LogDebug("{VideoYtId}", videoYTId); HttpStatusCode statusCode; + var userItemData = _userDataManager.GetUserData(user, channel); - if (!isChannelCheckedForWatched && channel.IsPlayed(user)) + if (!isChannelCheckedForWatched && channel.IsPlayed(user, userItemData)) { - var isChannelPlayed = channel.IsPlayed(user); + var isChannelPlayed = channel.IsPlayed(user, userItemData); statusCode = await taApi.SetWatchedStatus(channelYTId, isChannelPlayed).ConfigureAwait(true); if (statusCode != System.Net.HttpStatusCode.OK) { @@ -174,7 +175,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks if (!isChannelWatched) { - var isVideoPlayed = video.IsPlayed(user); + var isVideoPlayed = video.IsPlayed(user, userItemData); statusCode = await taApi.SetWatchedStatus(videoYTId, isVideoPlayed).ConfigureAwait(true); if (statusCode != System.Net.HttpStatusCode.OK) {