diff --git a/Directory.Build.props b/Directory.Build.props
index 94ca9df..ed755b6 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,7 +1,7 @@
- 1.3.7.0
- 1.3.7.0
- 1.3.7.0
+ 1.4.0.0
+ 1.4.0.0
+ 1.4.0.0
diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/Jellyfin.Plugin.TubeArchivistMetadata.csproj b/Jellyfin.Plugin.TubeArchivistMetadata/Jellyfin.Plugin.TubeArchivistMetadata.csproj
index 96bc34c..302d3ff 100644
--- a/Jellyfin.Plugin.TubeArchivistMetadata/Jellyfin.Plugin.TubeArchivistMetadata.csproj
+++ b/Jellyfin.Plugin.TubeArchivistMetadata/Jellyfin.Plugin.TubeArchivistMetadata.csproj
@@ -1,7 +1,7 @@
- net8.0
+ net9.0
Jellyfin.Plugin.TubeArchivistMetadata
true
true
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs b/Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs
index 256d3d6..4fd566f 100644
--- a/Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs
+++ b/Jellyfin.Plugin.TubeArchivistMetadata/Plugin.cs
@@ -222,12 +222,15 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata
if (eventArgs.Item is Episode)
{
- var progress = _userDataManager.GetUserData(user, eventArgs.Item).PlaybackPositionTicks / TimeSpan.TicksPerSecond;
- var videoId = Utils.GetVideoNameFromPath(eventArgs.Item.Path);
- statusCode = await TubeArchivistApi.GetInstance().SetProgress(videoId, progress).ConfigureAwait(true);
- if (statusCode != System.Net.HttpStatusCode.OK)
+ var progress = _userDataManager.GetUserData(user, eventArgs.Item)?.PlaybackPositionTicks / TimeSpan.TicksPerSecond;
+ if (progress != null)
{
- Logger.LogCritical("{Message}", $"POST /video/{videoId}/progress returned {statusCode} for video {eventArgs.Item.Name} with progress {progress} seconds");
+ var videoId = Utils.GetVideoNameFromPath(eventArgs.Item.Path);
+ statusCode = await TubeArchivistApi.GetInstance().SetProgress(videoId, progress.Value).ConfigureAwait(true);
+ if (statusCode != System.Net.HttpStatusCode.OK)
+ {
+ Logger.LogCritical("{Message}", $"POST /video/{videoId}/progress returned {statusCode} for video {eventArgs.Item.Name} with progress {progress} seconds");
+ }
}
}
}
diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/JFToTubeArchivistProgressSyncTask.cs b/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/JFToTubeArchivistProgressSyncTask.cs
index 83875db..741496a 100644
--- a/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/JFToTubeArchivistProgressSyncTask.cs
+++ b/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/JFToTubeArchivistProgressSyncTask.cs
@@ -72,11 +72,13 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
return;
}
- var collectionItem = _libraryManager.GetItemList(new InternalItemsQuery
+ var items = _libraryManager.GetItemList(new InternalItemsQuery
{
Name = Plugin.Instance?.Configuration.CollectionTitle,
IncludeItemTypes = new[] { BaseItemKind.CollectionFolder }
- }).FirstOrDefault();
+ });
+
+ var collectionItem = items.Count > 0 ? items[0] : null;
if (collectionItem == null)
{
@@ -182,11 +184,14 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
_logger.LogDebug("{Message}", isVideoPlayed);
if (!isVideoPlayed)
{
- var playbackProgress = _userDataManager.GetUserData(user, video).PlaybackPositionTicks / TimeSpan.TicksPerSecond;
- statusCode = await taApi.SetProgress(videoYTId, playbackProgress).ConfigureAwait(true);
- if (statusCode != System.Net.HttpStatusCode.OK)
+ var playbackProgress = _userDataManager.GetUserData(user, video)?.PlaybackPositionTicks / TimeSpan.TicksPerSecond;
+ if (playbackProgress != null)
{
- _logger.LogCritical("{Message}", $"POST /video/{videoYTId}/progress returned {statusCode} for video {video.Name} with progress {progress} seconds");
+ statusCode = await taApi.SetProgress(videoYTId, playbackProgress.Value).ConfigureAwait(true);
+ if (statusCode != System.Net.HttpStatusCode.OK)
+ {
+ _logger.LogCritical("{Message}", $"POST /video/{videoYTId}/progress returned {statusCode} for video {video.Name} with progress {progress} seconds");
+ }
}
}
}
@@ -215,7 +220,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
[
new TaskTriggerInfo
{
- Type = TaskTriggerInfo.TriggerStartup,
+ Type = TaskTriggerInfoType.StartupTrigger,
},
];
}
diff --git a/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/TAToJellyfinProgressSyncTask.cs b/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/TAToJellyfinProgressSyncTask.cs
index abcf3a7..6a75245 100644
--- a/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/TAToJellyfinProgressSyncTask.cs
+++ b/Jellyfin.Plugin.TubeArchivistMetadata/Tasks/TAToJellyfinProgressSyncTask.cs
@@ -72,11 +72,13 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
continue;
}
- var collectionItem = _libraryManager.GetItemList(new InternalItemsQuery
+ var items = _libraryManager.GetItemList(new InternalItemsQuery
{
Name = Plugin.Instance?.Configuration.CollectionTitle,
IncludeItemTypes = new[] { BaseItemKind.CollectionFolder }
- }).FirstOrDefault();
+ });
+
+ var collectionItem = items.Count > 0 ? items[0] : null;
if (collectionItem == null)
{
@@ -127,11 +129,13 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
continue;
}
- var collectionItem = _libraryManager.GetItemList(new InternalItemsQuery
+ var items = _libraryManager.GetItemList(new InternalItemsQuery
{
Name = Plugin.Instance?.Configuration.CollectionTitle,
IncludeItemTypes = new[] { BaseItemKind.CollectionFolder }
- }).FirstOrDefault();
+ });
+
+ var collectionItem = items.Count > 0 ? items[0] : null;
if (collectionItem == null)
{
@@ -185,8 +189,8 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
}
_userDataManager.SaveUserData(user, video, userUpdateData, UserDataSaveReason.UpdateUserData);
- _logger.LogDebug("{Message}", $"Playback progress for video {video.Name} set to {userItemData.PlaybackPositionTicks / TimeSpan.TicksPerSecond} seconds for user {jfUsername}.");
- _logger.LogDebug("{Message}", $"Watched status for video {video.Name} set to {userItemData.Played} seconds for user {jfUsername}.");
+ _logger.LogInformation("{Message}", $"Playback progress for video {video.Name} set to {userItemData?.PlaybackPositionTicks / TimeSpan.TicksPerSecond} seconds for user {jfUsername}.");
+ _logger.LogInformation("{Message}", $"Watched status for video {video.Name} set to {userItemData?.Played} seconds for user {jfUsername}.");
processedVideosCount++;
progress.Report(processedVideosCount * 100 / videosCount);
@@ -214,7 +218,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
[
new TaskTriggerInfo
{
- Type = TaskTriggerInfo.TriggerInterval,
+ Type = TaskTriggerInfoType.IntervalTrigger,
IntervalTicks = TimeSpan.FromSeconds(Plugin.Instance!.Configuration.TAJFTaskInterval).Ticks
},
];
diff --git a/build.yaml b/build.yaml
index 572b782..e96ac80 100644
--- a/build.yaml
+++ b/build.yaml
@@ -2,9 +2,9 @@
name: "TubeArchivistMetadata"
guid: "dc97d0c6-28b0-4242-afb4-5833ae1b3715"
imageUrl: https://raw.githubusercontent.com/tubearchivist/tubearchivist-jf-plugin/master/images/logo.png
-version: "1.3.7.0"
-targetAbi: "10.10.0.0"
-framework: "net8.0"
+version: "1.4.0.0"
+targetAbi: "10.11.0.0"
+framework: "net9.0"
overview: "Metadata for your TubeArchivist library on Jellyfin"
description: >
TubeArchivistMetadata is a plugin that automatically manages
@@ -14,4 +14,4 @@ owner: "DarkFighterLuke"
artifacts:
- "Jellyfin.Plugin.TubeArchivistMetadata.dll"
changelog: >
- Fix JF->TA Sync
+ Align compatibility with Jellyfin 10.11.x