From 98e41d5a14a579113f354ae3cb32a9ff6bc41958 Mon Sep 17 00:00:00 2001 From: Nick <20588554+nicknsy@users.noreply.github.com> Date: Wed, 17 May 2023 23:25:52 -0700 Subject: [PATCH] Styling, format, minor code changes (crobibero) --- .../Controllers/TrickplayController.cs | 53 ++++++++----------- .../Trickplay/TrickplayImagesTask.cs | 2 +- .../Trickplay/TrickplayManager.cs | 8 +-- .../Trickplay/TrickplayProvider.cs | 4 -- 4 files changed, 26 insertions(+), 41 deletions(-) diff --git a/Jellyfin.Api/Controllers/TrickplayController.cs b/Jellyfin.Api/Controllers/TrickplayController.cs index 46289f1701..6dee023427 100644 --- a/Jellyfin.Api/Controllers/TrickplayController.cs +++ b/Jellyfin.Api/Controllers/TrickplayController.cs @@ -6,18 +6,14 @@ using System.IO; using System.Linq; using System.Net.Mime; using System.Text; -using System.Threading.Tasks; using Jellyfin.Api.Attributes; using Jellyfin.Api.Extensions; -using Jellyfin.Api.Helpers; -using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Trickplay; using MediaBrowser.Model; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; namespace Jellyfin.Api.Controllers; @@ -28,26 +24,18 @@ namespace Jellyfin.Api.Controllers; [Authorize] public class TrickplayController : BaseJellyfinApiController { - private readonly ILogger _logger; - private readonly IHttpContextAccessor _httpContextAccessor; private readonly ILibraryManager _libraryManager; private readonly ITrickplayManager _trickplayManager; /// /// Initializes a new instance of the class. /// - /// Instance of the interface. - /// Instance of the interface. /// Instance of . /// Instance of . public TrickplayController( - ILogger logger, - IHttpContextAccessor httpContextAccessor, ILibraryManager libraryManager, ITrickplayManager trickplayManager) { - _logger = logger; - _httpContextAccessor = httpContextAccessor; _libraryManager = libraryManager; _trickplayManager = trickplayManager; } @@ -66,9 +54,9 @@ public class TrickplayController : BaseJellyfinApiController public ActionResult GetTrickplayHlsPlaylist( [FromRoute, Required] Guid itemId, [FromRoute, Required] int width, - [FromQuery] string? mediaSourceId) + [FromQuery] Guid? mediaSourceId) { - return GetTrickplayPlaylistInternal(width, mediaSourceId ?? itemId.ToString("N")); + return GetTrickplayPlaylistInternal(width, mediaSourceId ?? itemId); } /// @@ -89,9 +77,9 @@ public class TrickplayController : BaseJellyfinApiController [FromRoute, Required] Guid itemId, [FromRoute, Required] int width, [FromRoute, Required] int index, - [FromQuery] string? mediaSourceId) + [FromQuery] Guid? mediaSourceId) { - var item = _libraryManager.GetItemById(mediaSourceId ?? itemId.ToString("N")); + var item = _libraryManager.GetItemById(mediaSourceId ?? itemId); if (item is null) { return NotFound(); @@ -106,28 +94,22 @@ public class TrickplayController : BaseJellyfinApiController return NotFound(); } - private ActionResult GetTrickplayPlaylistInternal(int width, string mediaSourceId) + private ActionResult GetTrickplayPlaylistInternal(int width, Guid mediaSourceId) { - if (_httpContextAccessor.HttpContext is null) - { - throw new ResourceNotFoundException(nameof(_httpContextAccessor.HttpContext)); - } - - var tilesResolutions = _trickplayManager.GetTilesResolutions(Guid.Parse(mediaSourceId)); - if (tilesResolutions is not null && tilesResolutions.ContainsKey(width)) + var tilesResolutions = _trickplayManager.GetTilesResolutions(mediaSourceId); + if (tilesResolutions is not null && tilesResolutions.TryGetValue(width, out var tilesInfo)) { var builder = new StringBuilder(128); - var tilesInfo = tilesResolutions[width]; if (tilesInfo.TileCount > 0) { const string urlFormat = "Trickplay/{0}/{1}.jpg?MediaSourceId={2}&api_key={3}"; const string decimalFormat = "{0:0.###}"; - var resolution = tilesInfo.Width.ToString(CultureInfo.InvariantCulture) + "x" + tilesInfo.Height.ToString(CultureInfo.InvariantCulture); - var layout = tilesInfo.TileWidth.ToString(CultureInfo.InvariantCulture) + "x" + tilesInfo.TileHeight.ToString(CultureInfo.InvariantCulture); + var resolution = $"{tilesInfo.Width}x{tilesInfo.Height}"; + var layout = $"{tilesInfo.TileWidth}x{tilesInfo.TileHeight}"; var tilesPerGrid = tilesInfo.TileWidth * tilesInfo.TileHeight; - var tileDuration = (decimal)tilesInfo.Interval / 1000; + var tileDuration = tilesInfo.Interval / 1000m; var infDuration = tileDuration * tilesPerGrid; var tileGridCount = (int)Math.Ceiling((decimal)tilesInfo.TileCount / tilesPerGrid); @@ -153,15 +135,22 @@ public class TrickplayController : BaseJellyfinApiController urlFormat, width.ToString(CultureInfo.InvariantCulture), i.ToString(CultureInfo.InvariantCulture), - mediaSourceId, - _httpContextAccessor.HttpContext.User.GetToken()); + mediaSourceId.ToString("N"), + User.GetToken()); // EXTINF - builder.Append("#EXTINF:").Append(string.Format(CultureInfo.InvariantCulture, decimalFormat, infDuration)) + builder + .Append("#EXTINF:") + .Append(string.Format(CultureInfo.InvariantCulture, decimalFormat, infDuration)) .AppendLine(","); // EXT-X-TILES - builder.Append("#EXT-X-TILES:RESOLUTION=").Append(resolution).Append(",LAYOUT=").Append(layout).Append(",DURATION=") + builder + .Append("#EXT-X-TILES:RESOLUTION=") + .Append(resolution) + .Append(",LAYOUT=") + .Append(layout) + .Append(",DURATION=") .AppendLine(string.Format(CultureInfo.InvariantCulture, decimalFormat, tileDuration)); // URL diff --git a/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs b/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs index f32557cd12..8ac7641aae 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayImagesTask.cs @@ -94,7 +94,7 @@ public class TrickplayImagesTask : IScheduledTask } catch (Exception ex) { - _logger.LogError("Error creating trickplay files for {ItemName}: {Msg}", item.Name, ex); + _logger.LogError(ex, "Error creating trickplay files for {ItemName}", item.Name); } numComplete++; diff --git a/MediaBrowser.Providers/Trickplay/TrickplayManager.cs b/MediaBrowser.Providers/Trickplay/TrickplayManager.cs index 9b8eb81501..d377d2d802 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayManager.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayManager.cs @@ -33,6 +33,7 @@ public class TrickplayManager : ITrickplayManager private readonly IServerConfigurationManager _config; private static readonly SemaphoreSlim _resourcePool = new(1, 1); + private static readonly string[] _trickplayImgExtensions = { ".jpg" }; /// /// Initializes a new instance of the class. @@ -95,10 +96,10 @@ public class TrickplayManager : ITrickplayManager var imgTempDir = string.Empty; var outputDir = GetTrickplayDirectory(video, width); + await _resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); + try { - await _resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); - if (!replace && Directory.Exists(outputDir) && GetTilesResolutions(video.Id).ContainsKey(width)) { _logger.LogDebug("Found existing trickplay files for {ItemId}. Exiting.", video.Id); @@ -139,8 +140,7 @@ public class TrickplayManager : ITrickplayManager throw new InvalidOperationException("Null or invalid directory from media encoder."); } - var images = _fileSystem.GetFiles(imgTempDir, new string[] { ".jpg" }, false, false) - .Where(img => string.Equals(img.Extension, ".jpg", StringComparison.Ordinal)) + var images = _fileSystem.GetFiles(imgTempDir, _trickplayImgExtensions, false, false) .OrderBy(i => i.FullName) .ToList(); diff --git a/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs b/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs index d467c480ea..17e9efdde5 100644 --- a/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs +++ b/MediaBrowser.Providers/Trickplay/TrickplayProvider.cs @@ -25,7 +25,6 @@ public class TrickplayProvider : ICustomMetadataProvider, IHasOrder, IForcedProvider { - private readonly ILogger _logger; private readonly IServerConfigurationManager _config; private readonly ITrickplayManager _trickplayManager; private readonly ILibraryManager _libraryManager; @@ -33,17 +32,14 @@ public class TrickplayProvider : ICustomMetadataProvider, /// /// Initializes a new instance of the class. /// - /// The logger. /// The configuration manager. /// The trickplay manager. /// The library manager. public TrickplayProvider( - ILogger logger, IServerConfigurationManager config, ITrickplayManager trickplayManager, ILibraryManager libraryManager) { - _logger = logger; _config = config; _trickplayManager = trickplayManager; _libraryManager = libraryManager;