Merge branch 'jellyfin-10.11' into feature/playlists-sync
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Version>1.3.7.0</Version>
|
<Version>1.4.0.0</Version>
|
||||||
<AssemblyVersion>1.3.7.0</AssemblyVersion>
|
<AssemblyVersion>1.4.0.0</AssemblyVersion>
|
||||||
<FileVersion>1.3.7.0</FileVersion>
|
<FileVersion>1.4.0.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
_logger.LogDebug("JFUsernamesTo configured: {Message}", string.Join(", ", _jfUsernamesTo));
|
_logger.LogInformation("JFUsernamesTo configured: {Message}", string.Join(", ", _jfUsernamesTo));
|
||||||
return string.Join(", ", _jfUsernamesTo);
|
return string.Join(", ", _jfUsernamesTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Configuration
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogDebug("Set JFUsernamesTo to: {Message}", string.Join(", ", _jfUsernamesTo));
|
_logger.LogInformation("Set JFUsernamesTo to: {Message}", string.Join(", ", _jfUsernamesTo));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Jellyfin.Controller" Version="10.11.0-rc2" />
|
<PackageReference Include="Jellyfin.Controller" Version="10.11.0" />
|
||||||
<PackageReference Include="Jellyfin.Model" Version="10.11.0-rc2" />
|
<PackageReference Include="Jellyfin.Model" Version="10.11.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata
|
|||||||
/// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
|
/// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
|
||||||
/// <param name="sessionManager">Instance of the <see cref="ISessionManager"/> interface.</param>
|
/// <param name="sessionManager">Instance of the <see cref="ISessionManager"/> interface.</param>
|
||||||
/// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
|
/// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
|
||||||
/// <param name="taskManager">Instance of the <see cref="ITaskManager"/> interface.</param>
|
|
||||||
/// <param name="userManager">Instance of the <see cref="IUserManager"/> interface.</param>
|
/// <param name="userManager">Instance of the <see cref="IUserManager"/> interface.</param>
|
||||||
/// <param name="userDataManager">Instance of the <see cref="IUserDataManager"/> interface.</param>
|
/// <param name="userDataManager">Instance of the <see cref="IUserDataManager"/> interface.</param>
|
||||||
/// <param name="playlistManager">Instance of the <see cref="IPlaylistManager"/> interface.</param>
|
/// <param name="playlistManager">Instance of the <see cref="IPlaylistManager"/> interface.</param>
|
||||||
@@ -49,7 +48,6 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata
|
|||||||
ILogger<Plugin> logger,
|
ILogger<Plugin> logger,
|
||||||
ISessionManager sessionManager,
|
ISessionManager sessionManager,
|
||||||
ILibraryManager libraryManager,
|
ILibraryManager libraryManager,
|
||||||
ITaskManager taskManager,
|
|
||||||
IUserManager userManager,
|
IUserManager userManager,
|
||||||
IUserDataManager userDataManager,
|
IUserDataManager userDataManager,
|
||||||
IPlaylistManager playlistManager)
|
IPlaylistManager playlistManager)
|
||||||
@@ -70,34 +68,6 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata
|
|||||||
_userDataManager = userDataManager;
|
_userDataManager = userDataManager;
|
||||||
userDataManager.UserDataSaved += OnWatchedStatusChange;
|
userDataManager.UserDataSaved += OnWatchedStatusChange;
|
||||||
|
|
||||||
var taToJellyfinProgressSyncTask = new TAToJellyfinProgressSyncTask(logger, libraryManager, userManager, userDataManager);
|
|
||||||
var taToJellyfinPlaylistsSyncTask = new TAToJellyfinPlaylistsSyncTask(logger, libraryManager, userManager, playlistManager);
|
|
||||||
var jfToTubeArchivistProgressSyncTask = new JFToTubeArchivistProgressSyncTask(logger, libraryManager, userManager, userDataManager);
|
|
||||||
var jfToTubeArchivistPlaylistsSyncTask = new JFToTubeArchivistPlaylistsSyncTask(logger, libraryManager, userManager, playlistManager);
|
|
||||||
var isTAJFTaskPresent = taskManager.ScheduledTasks.Any(t => t.Name.Equals(taToJellyfinProgressSyncTask.Name, StringComparison.Ordinal));
|
|
||||||
if (Instance!.Configuration.TAJFProgressSync && !isTAJFTaskPresent)
|
|
||||||
{
|
|
||||||
logger.LogInformation("Queueing task {TaskName}.", taToJellyfinProgressSyncTask.Name);
|
|
||||||
taskManager.AddTasks([taToJellyfinProgressSyncTask]);
|
|
||||||
taskManager.Execute<TAToJellyfinProgressSyncTask>();
|
|
||||||
|
|
||||||
logger.LogInformation("Queueing task {TaskName}.", taToJellyfinPlaylistsSyncTask.Name);
|
|
||||||
taskManager.AddTasks([taToJellyfinPlaylistsSyncTask]);
|
|
||||||
taskManager.Execute<TAToJellyfinPlaylistsSyncTask>();
|
|
||||||
}
|
|
||||||
|
|
||||||
var isJFTATaskPresent = taskManager.ScheduledTasks.Any(t => t.Name.Equals(jfToTubeArchivistProgressSyncTask.Name, StringComparison.Ordinal));
|
|
||||||
if (Instance!.Configuration.JFTAProgressSync && !isJFTATaskPresent)
|
|
||||||
{
|
|
||||||
logger.LogInformation("Queueing task {TaskName}.", jfToTubeArchivistProgressSyncTask.Name);
|
|
||||||
taskManager.AddTasks([jfToTubeArchivistProgressSyncTask]);
|
|
||||||
taskManager.Execute<JFToTubeArchivistProgressSyncTask>();
|
|
||||||
|
|
||||||
logger.LogInformation("Queueing task {TaskName}.", jfToTubeArchivistPlaylistsSyncTask.Name);
|
|
||||||
taskManager.AddTasks([jfToTubeArchivistPlaylistsSyncTask]);
|
|
||||||
taskManager.Execute<JFToTubeArchivistPlaylistsSyncTask>();
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.LogInformation("{Message}", "Collection display name: " + Instance?.Configuration.CollectionTitle);
|
logger.LogInformation("{Message}", "Collection display name: " + Instance?.Configuration.CollectionTitle);
|
||||||
logger.LogInformation("{Message}", "TubeArchivist API URL: " + Instance?.Configuration.TubeArchivistUrl);
|
logger.LogInformation("{Message}", "TubeArchivist API URL: " + Instance?.Configuration.TubeArchivistUrl);
|
||||||
logger.LogInformation("{Message}", "Pinging TubeArchivist API...");
|
logger.LogInformation("{Message}", "Pinging TubeArchivist API...");
|
||||||
@@ -186,6 +156,12 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata
|
|||||||
|
|
||||||
private async void OnPlaybackProgress(object? sender, PlaybackProgressEventArgs eventArgs)
|
private async void OnPlaybackProgress(object? sender, PlaybackProgressEventArgs eventArgs)
|
||||||
{
|
{
|
||||||
|
if (eventArgs == null || eventArgs.Item.Id == Guid.Empty)
|
||||||
|
{
|
||||||
|
Logger.LogDebug("Skipping progress synchronization: PlaybackProgress event triggered with null or empty Guid.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (Instance!.Configuration.JFTAProgressSync && eventArgs.Users.Any(u => Instance!.Configuration.JFUsernameFrom.Equals(u.Username, StringComparison.Ordinal)))
|
if (Instance!.Configuration.JFTAProgressSync && eventArgs.Users.Any(u => Instance!.Configuration.JFUsernameFrom.Equals(u.Username, StringComparison.Ordinal)))
|
||||||
{
|
{
|
||||||
BaseItem? season = LibraryManager.GetItemById(eventArgs.Item.ParentId);
|
BaseItem? season = LibraryManager.GetItemById(eventArgs.Item.ParentId);
|
||||||
@@ -206,10 +182,23 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata
|
|||||||
|
|
||||||
private async void OnWatchedStatusChange(object? sender, UserDataSaveEventArgs eventArgs)
|
private async void OnWatchedStatusChange(object? sender, UserDataSaveEventArgs eventArgs)
|
||||||
{
|
{
|
||||||
|
if (eventArgs == null || eventArgs.Item.Id == Guid.Empty)
|
||||||
|
{
|
||||||
|
Logger.LogDebug("Skipping watched status synchronization: WatchedStatusChange event triggered with null or empty Guid.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var user = _userManager.GetUserById(eventArgs.UserId);
|
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.JFTAProgressSync && user != null && Configuration.GetJFUsernamesToArray().Contains(user!.Username))
|
if (Configuration.JFTAProgressSync && 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);
|
Logger.LogDebug("User {UserId} changed watched status to {Status} for the item {ItemName}", eventArgs.UserId, isPlayed, eventArgs.Item.Name);
|
||||||
string itemYTId;
|
string itemYTId;
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
|
|||||||
var taApi = TubeArchivistApi.GetInstance();
|
var taApi = TubeArchivistApi.GetInstance();
|
||||||
var videoTAId = Utils.GetVideoNameFromPath(item.Path);
|
var videoTAId = Utils.GetVideoNameFromPath(item.Path);
|
||||||
var video = await taApi.GetVideo(videoTAId).ConfigureAwait(true);
|
var video = await taApi.GetVideo(videoTAId).ConfigureAwait(true);
|
||||||
_logger.LogInformation("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting images for video: {0} ({1})", video?.Title, videoTAId));
|
_logger.LogDebug("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting images for video: {0} ({1})", video?.Title, videoTAId));
|
||||||
_logger.LogInformation("{Message}", "Thumb URI: " + video?.VidThumbUrl);
|
_logger.LogDebug("{Message}", "Thumb URI: " + video?.VidThumbUrl);
|
||||||
|
|
||||||
if (video != null)
|
if (video != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
|
|||||||
var taApi = TubeArchivistApi.GetInstance();
|
var taApi = TubeArchivistApi.GetInstance();
|
||||||
var videoTAId = Utils.GetVideoNameFromPath(info.Path);
|
var videoTAId = Utils.GetVideoNameFromPath(info.Path);
|
||||||
var video = await taApi.GetVideo(videoTAId).ConfigureAwait(true);
|
var video = await taApi.GetVideo(videoTAId).ConfigureAwait(true);
|
||||||
_logger.LogInformation("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting metadata for video: {0} ({1})", video?.Title, videoTAId));
|
_logger.LogDebug("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting metadata for video: {0} ({1})", video?.Title, videoTAId));
|
||||||
_logger.LogInformation("{Message}", "Received metadata: \n" + JsonConvert.SerializeObject(video));
|
_logger.LogDebug("{Message}", "Received metadata: \n" + JsonConvert.SerializeObject(video));
|
||||||
|
|
||||||
if (video != null)
|
if (video != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -60,10 +60,10 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
|
|||||||
var taApi = TubeArchivistApi.GetInstance();
|
var taApi = TubeArchivistApi.GetInstance();
|
||||||
var channelTAId = Utils.GetChannelNameFromPath(item.Path);
|
var channelTAId = Utils.GetChannelNameFromPath(item.Path);
|
||||||
var channel = await taApi.GetChannel(channelTAId).ConfigureAwait(true);
|
var channel = await taApi.GetChannel(channelTAId).ConfigureAwait(true);
|
||||||
_logger.LogInformation("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting images for channel: {0} ({1})", channel?.Name, channelTAId));
|
_logger.LogDebug("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting images for channel: {0} ({1})", channel?.Name, channelTAId));
|
||||||
_logger.LogInformation("{Message}", "Thumb URI: " + channel?.ThumbUrl);
|
_logger.LogDebug("{Message}", "Thumb URI: " + channel?.ThumbUrl);
|
||||||
_logger.LogInformation("{Message}", "TVArt URI: " + channel?.TvartUrl);
|
_logger.LogDebug("{Message}", "TVArt URI: " + channel?.TvartUrl);
|
||||||
_logger.LogInformation("{Message}", "Banner URI: " + channel?.BannerUrl);
|
_logger.LogDebug("{Message}", "Banner URI: " + channel?.BannerUrl);
|
||||||
|
|
||||||
if (channel != null)
|
if (channel != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -52,8 +52,8 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Providers
|
|||||||
var taApi = TubeArchivistApi.GetInstance();
|
var taApi = TubeArchivistApi.GetInstance();
|
||||||
var channelTAId = Utils.GetChannelNameFromPath(info.Path);
|
var channelTAId = Utils.GetChannelNameFromPath(info.Path);
|
||||||
var channel = await taApi.GetChannel(channelTAId).ConfigureAwait(true);
|
var channel = await taApi.GetChannel(channelTAId).ConfigureAwait(true);
|
||||||
_logger.LogInformation("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting metadata for channel: {0} ({1})", channel?.Name, channelTAId));
|
_logger.LogDebug("{Message}", string.Format(CultureInfo.CurrentCulture, "Getting metadata for channel: {0} ({1})", channel?.Name, channelTAId));
|
||||||
_logger.LogInformation("{Message}", "Received metadata: \n" + JsonConvert.SerializeObject(channel));
|
_logger.LogDebug("{Message}", "Received metadata: \n" + JsonConvert.SerializeObject(channel));
|
||||||
|
|
||||||
if (channel != null)
|
if (channel != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
|
|||||||
{
|
{
|
||||||
IncludeItemTypes = new[] { BaseItemKind.Series }
|
IncludeItemTypes = new[] { BaseItemKind.Series }
|
||||||
});
|
});
|
||||||
_logger.LogInformation("Analyzing collection {Id} with name {Name}", collectionItem.Id, collectionItem.Name);
|
_logger.LogDebug("Analyzing collection {Id} with name {Name}", collectionItem.Id, collectionItem.Name);
|
||||||
_logger.LogDebug("Found {Message} channels", channels.Count);
|
_logger.LogDebug("Found {Message} channels", channels.Count);
|
||||||
|
|
||||||
foreach (Series channel in channels)
|
foreach (Series channel in channels)
|
||||||
@@ -116,7 +116,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogInformation("Found a total of {VideosCount} videos", videosCount);
|
_logger.LogDebug("Found a total of {VideosCount} videos", videosCount);
|
||||||
|
|
||||||
var processedVideosCount = 0;
|
var processedVideosCount = 0;
|
||||||
if (collectionItem == null)
|
if (collectionItem == null)
|
||||||
@@ -153,11 +153,13 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
|
|||||||
foreach (Episode video in videos)
|
foreach (Episode video in videos)
|
||||||
{
|
{
|
||||||
var videoYTId = Utils.GetVideoNameFromPath(video.Path);
|
var videoYTId = Utils.GetVideoNameFromPath(video.Path);
|
||||||
|
_logger.LogDebug("{VideoYtId}", videoYTId);
|
||||||
HttpStatusCode statusCode;
|
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);
|
statusCode = await taApi.SetWatchedStatus(channelYTId, isChannelPlayed).ConfigureAwait(true);
|
||||||
if (statusCode != System.Net.HttpStatusCode.OK)
|
if (statusCode != System.Net.HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
@@ -173,13 +175,14 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
|
|||||||
|
|
||||||
if (!isChannelWatched)
|
if (!isChannelWatched)
|
||||||
{
|
{
|
||||||
var isVideoPlayed = video.IsPlayed(user);
|
var isVideoPlayed = video.IsPlayed(user, userItemData);
|
||||||
statusCode = await taApi.SetWatchedStatus(videoYTId, isVideoPlayed).ConfigureAwait(true);
|
statusCode = await taApi.SetWatchedStatus(videoYTId, isVideoPlayed).ConfigureAwait(true);
|
||||||
if (statusCode != System.Net.HttpStatusCode.OK)
|
if (statusCode != System.Net.HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
_logger.LogCritical("{Message}", $"POST /watched returned {statusCode} for video {video.Name} ({videoYTId}) with wacthed status {isVideoPlayed}");
|
_logger.LogCritical("{Message}", $"POST /watched returned {statusCode} for video {video.Name} ({videoYTId}) with wacthed status {isVideoPlayed}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_logger.LogDebug("{Message}", isVideoPlayed);
|
||||||
if (!isVideoPlayed)
|
if (!isVideoPlayed)
|
||||||
{
|
{
|
||||||
var playbackProgress = _userDataManager.GetUserData(user, video)?.PlaybackPositionTicks / TimeSpan.TicksPerSecond;
|
var playbackProgress = _userDataManager.GetUserData(user, video)?.PlaybackPositionTicks / TimeSpan.TicksPerSecond;
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
|
|||||||
{
|
{
|
||||||
IncludeItemTypes = new[] { BaseItemKind.Series }
|
IncludeItemTypes = new[] { BaseItemKind.Series }
|
||||||
});
|
});
|
||||||
_logger.LogInformation("Analyzing collection {Id} with name {Name}", collectionItem.Id, collectionItem.Name);
|
_logger.LogDebug("Analyzing collection {Id} with name {Name}", collectionItem.Id, collectionItem.Name);
|
||||||
_logger.LogDebug("Found {Message} channels", channels.Count);
|
_logger.LogDebug("Found {Message} channels", channels.Count);
|
||||||
|
|
||||||
foreach (Series channel in channels)
|
foreach (Series channel in channels)
|
||||||
@@ -117,7 +117,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogInformation("Found a total of {VideosCount} videos", videosCount);
|
_logger.LogDebug("Found a total of {VideosCount} videos", videosCount);
|
||||||
|
|
||||||
var processedVideosCount = 0;
|
var processedVideosCount = 0;
|
||||||
foreach (var jfUsername in Plugin.Instance!.Configuration.GetJFUsernamesToArray())
|
foreach (var jfUsername in Plugin.Instance!.Configuration.GetJFUsernamesToArray())
|
||||||
@@ -125,7 +125,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.Tasks
|
|||||||
var user = _userManager.GetUserByName(jfUsername);
|
var user = _userManager.GetUserByName(jfUsername);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("{Message}", $"Jellyfin user with username {jfUsername} not found");
|
_logger.LogDebug("{Message}", $"Jellyfin user with username {jfUsername} not found");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -75,11 +75,11 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.TubeArchivist
|
|||||||
while (response.StatusCode == HttpStatusCode.Moved)
|
while (response.StatusCode == HttpStatusCode.Moved)
|
||||||
{
|
{
|
||||||
url = response.Headers.Location;
|
url = response.Headers.Location;
|
||||||
_logger.LogInformation("{Message}", "Received redirect to: " + url);
|
_logger.LogDebug("{Message}", "Received redirect to: " + url);
|
||||||
response = await client.GetAsync(url).ConfigureAwait(true);
|
response = await client.GetAsync(url).ConfigureAwait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogInformation("{Message}", url + ": " + response.StatusCode);
|
_logger.LogDebug("{Message}", url + ": " + response.StatusCode);
|
||||||
|
|
||||||
if (response.IsSuccessStatusCode)
|
if (response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
@@ -105,16 +105,16 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.TubeArchivist
|
|||||||
while (response.StatusCode == HttpStatusCode.Moved)
|
while (response.StatusCode == HttpStatusCode.Moved)
|
||||||
{
|
{
|
||||||
url = response.Headers.Location;
|
url = response.Headers.Location;
|
||||||
_logger.LogInformation("{Message}", "Received redirect to: " + url);
|
_logger.LogDebug("{Message}", "Received redirect to: " + url);
|
||||||
response = await client.GetAsync(url).ConfigureAwait(true);
|
response = await client.GetAsync(url).ConfigureAwait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogInformation("{Message}", url + ": " + response.StatusCode);
|
_logger.LogDebug("{Message}", url + ": " + response.StatusCode);
|
||||||
|
|
||||||
if (response.IsSuccessStatusCode)
|
if (response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
string rawData = await response.Content.ReadAsStringAsync().ConfigureAwait(true);
|
string rawData = await response.Content.ReadAsStringAsync().ConfigureAwait(true);
|
||||||
_logger.LogInformation("{Message}", rawData);
|
_logger.LogDebug("{Message}", rawData);
|
||||||
video = JsonConvert.DeserializeObject<Video>(rawData);
|
video = JsonConvert.DeserializeObject<Video>(rawData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,11 +136,11 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.TubeArchivist
|
|||||||
while (response.StatusCode == HttpStatusCode.Moved)
|
while (response.StatusCode == HttpStatusCode.Moved)
|
||||||
{
|
{
|
||||||
url = response.Headers.Location;
|
url = response.Headers.Location;
|
||||||
_logger.LogInformation("{Message}", "Received redirect to: " + url);
|
_logger.LogDebug("{Message}", "Received redirect to: " + url);
|
||||||
response = await client.GetAsync(url).ConfigureAwait(true);
|
response = await client.GetAsync(url).ConfigureAwait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogInformation("{Message}", url + ": " + response.StatusCode);
|
_logger.LogDebug("{Message}", url + ": " + response.StatusCode);
|
||||||
|
|
||||||
if (response.IsSuccessStatusCode)
|
if (response.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
@@ -181,7 +181,7 @@ namespace Jellyfin.Plugin.TubeArchivistMetadata.TubeArchivist
|
|||||||
if (video != null)
|
if (video != null)
|
||||||
{
|
{
|
||||||
progress = new Progress((long)video.Player.Position);
|
progress = new Progress((long)video.Player.Position);
|
||||||
_logger.LogInformation("{Message}", $"Retrieved progress {video.Player.Position}");
|
_logger.LogDebug("{Message}", $"Retrieved progress {video.Player.Position}");
|
||||||
}
|
}
|
||||||
|
|
||||||
return progress;
|
return progress;
|
||||||
|
|||||||
@@ -35,15 +35,15 @@ The plugin interacts with TubeArchivist APIs to fetch videos and channels metada
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
### From official repository (recommended)
|
### 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:
|
2. Add a new repository with the following details:
|
||||||
- Repository name: `TubeArchivistMetadata`
|
- Repository name: `TubeArchivistMetadata`
|
||||||
- Repository URL: `https://github.com/tubearchivist/tubearchivist-jf-plugin/raw/master/manifest.json`
|
- Repository URL: `https://github.com/tubearchivist/tubearchivist-jf-plugin/raw/master/manifest.json`
|
||||||

|

|
||||||
|
|
||||||
3. Go to the `Catalog` tab
|
3. Go back to the catalog
|
||||||
4. Find `TubeArchivistMetadata` in the `Metadata` section and install it
|
4. Find `TubeArchivistMetadata` and install it
|
||||||

|

|
||||||
5. Restart Jellyfin to apply the changes
|
5. Restart Jellyfin to apply the changes
|
||||||
|
|
||||||
### From ZIP in GitHub releases
|
### From ZIP in GitHub releases
|
||||||
@@ -98,7 +98,7 @@ In the second field you can specify the interval in seconds the task should run
|
|||||||
|
|
||||||
## Build
|
## 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
|
2. Build plugin with following command
|
||||||
```
|
```
|
||||||
|
|||||||
+4
-4
@@ -2,9 +2,9 @@
|
|||||||
name: "TubeArchivistMetadata"
|
name: "TubeArchivistMetadata"
|
||||||
guid: "dc97d0c6-28b0-4242-afb4-5833ae1b3715"
|
guid: "dc97d0c6-28b0-4242-afb4-5833ae1b3715"
|
||||||
imageUrl: https://raw.githubusercontent.com/tubearchivist/tubearchivist-jf-plugin/master/images/logo.png
|
imageUrl: https://raw.githubusercontent.com/tubearchivist/tubearchivist-jf-plugin/master/images/logo.png
|
||||||
version: "1.3.7.0"
|
version: "1.4.0.0"
|
||||||
targetAbi: "10.10.0.0"
|
targetAbi: "10.11.0.0"
|
||||||
framework: "net8.0"
|
framework: "net9.0"
|
||||||
overview: "Metadata for your TubeArchivist library on Jellyfin"
|
overview: "Metadata for your TubeArchivist library on Jellyfin"
|
||||||
description: >
|
description: >
|
||||||
TubeArchivistMetadata is a plugin that automatically manages
|
TubeArchivistMetadata is a plugin that automatically manages
|
||||||
@@ -14,4 +14,4 @@ owner: "DarkFighterLuke"
|
|||||||
artifacts:
|
artifacts:
|
||||||
- "Jellyfin.Plugin.TubeArchivistMetadata.dll"
|
- "Jellyfin.Plugin.TubeArchivistMetadata.dll"
|
||||||
changelog: >
|
changelog: >
|
||||||
Fix JF->TA Sync
|
Align compatibility with Jellyfin 10.11.x
|
||||||
|
|||||||
Reference in New Issue
Block a user