diff options
| author | Tim Eisele <Ghost_of_Stone@web.de> | 2025-04-03 17:17:14 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-03 09:17:14 -0600 |
| commit | 596b63551196f7ce9bcb8d8de617d3c79201a375 (patch) | |
| tree | fcae5828920664cc4c54955312328b4cbd7cd28d /MediaBrowser.Controller | |
| parent | 0bde7bae05de1933a9714870c8e4e6f1a946cd93 (diff) | |
Cleanup extracted files (#13760)
* Cleanup extracted files
* Pagination and fixes
* Add migration for attachments to MigrateLibraryDb
* Unify attachment handling
* Don't extract again if files were already extracted
* Fix MKS attachment extraction
* Always run full extraction on mks
* Don't try to extract mjpeg streams as attachments
* Fallback to check if attachments were extracted to cache folder
* Fixup
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/IO/IPathManager.cs | 32 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaEncoding/IAttachmentExtractor.cs | 47 |
3 files changed, 65 insertions, 22 deletions
diff --git a/MediaBrowser.Controller/IO/IPathManager.cs b/MediaBrowser.Controller/IO/IPathManager.cs index 036889810..7c20164a6 100644 --- a/MediaBrowser.Controller/IO/IPathManager.cs +++ b/MediaBrowser.Controller/IO/IPathManager.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Dto; namespace MediaBrowser.Controller.IO; @@ -14,4 +15,35 @@ public interface IPathManager /// <param name="saveWithMedia">Whether or not the tile should be saved next to the media file.</param> /// <returns>The absolute path.</returns> public string GetTrickplayDirectory(BaseItem item, bool saveWithMedia = false); + + /// <summary> + /// Gets the path to the subtitle file. + /// </summary> + /// <param name="mediaSourceId">The media source id.</param> + /// <param name="streamIndex">The stream index.</param> + /// <param name="extension">The subtitle file extension.</param> + /// <returns>The absolute path.</returns> + public string GetSubtitlePath(string mediaSourceId, int streamIndex, string extension); + + /// <summary> + /// Gets the path to the subtitle file. + /// </summary> + /// <param name="mediaSourceId">The media source id.</param> + /// <returns>The absolute path.</returns> + public string GetSubtitleFolderPath(string mediaSourceId); + + /// <summary> + /// Gets the path to the attachment file. + /// </summary> + /// <param name="mediaSourceId">The media source id.</param> + /// <param name="fileName">The attachmentFileName index.</param> + /// <returns>The absolute path.</returns> + public string GetAttachmentPath(string mediaSourceId, string fileName); + + /// <summary> + /// Gets the path to the attachment folder. + /// </summary> + /// <param name="mediaSourceId">The media source id.</param> + /// <returns>The absolute path.</returns> + public string GetAttachmentFolderPath(string mediaSourceId); } diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index afa962a41..75b3f151d 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -19,6 +19,7 @@ using Jellyfin.Database.Implementations.Enums; using Jellyfin.Extensions; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Extensions; +using MediaBrowser.Controller.IO; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; @@ -55,6 +56,7 @@ namespace MediaBrowser.Controller.MediaEncoding private readonly ISubtitleEncoder _subtitleEncoder; private readonly IConfiguration _config; private readonly IConfigurationManager _configurationManager; + private readonly IPathManager _pathManager; // i915 hang was fixed by linux 6.2 (3f882f2) private readonly Version _minKerneli915Hang = new Version(5, 18); @@ -153,13 +155,15 @@ namespace MediaBrowser.Controller.MediaEncoding IMediaEncoder mediaEncoder, ISubtitleEncoder subtitleEncoder, IConfiguration config, - IConfigurationManager configurationManager) + IConfigurationManager configurationManager, + IPathManager pathManager) { _appPaths = appPaths; _mediaEncoder = mediaEncoder; _subtitleEncoder = subtitleEncoder; _config = config; _configurationManager = configurationManager; + _pathManager = pathManager; } private enum DynamicHdrMetadataRemovalPlan @@ -1785,7 +1789,7 @@ namespace MediaBrowser.Controller.MediaEncoding var alphaParam = enableAlpha ? ":alpha=1" : string.Empty; var sub2videoParam = enableSub2video ? ":sub2video=1" : string.Empty; - var fontPath = Path.Combine(_appPaths.CachePath, "attachments", state.MediaSource.Id); + var fontPath = _pathManager.GetAttachmentFolderPath(state.MediaSource.Id); var fontParam = string.Format( CultureInfo.InvariantCulture, ":fontsdir='{0}'", diff --git a/MediaBrowser.Controller/MediaEncoding/IAttachmentExtractor.cs b/MediaBrowser.Controller/MediaEncoding/IAttachmentExtractor.cs index 09840d2ee..d8d136472 100644 --- a/MediaBrowser.Controller/MediaEncoding/IAttachmentExtractor.cs +++ b/MediaBrowser.Controller/MediaEncoding/IAttachmentExtractor.cs @@ -9,26 +9,33 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; -namespace MediaBrowser.Controller.MediaEncoding -{ - public interface IAttachmentExtractor - { - Task<(MediaAttachment Attachment, Stream Stream)> GetAttachment( - BaseItem item, - string mediaSourceId, - int attachmentStreamIndex, - CancellationToken cancellationToken); +namespace MediaBrowser.Controller.MediaEncoding; - Task ExtractAllAttachments( - string inputFile, - MediaSourceInfo mediaSource, - string outputPath, - CancellationToken cancellationToken); +public interface IAttachmentExtractor +{ + /// <summary> + /// Gets the path to the attachment file. + /// </summary> + /// <param name="item">The <see cref="BaseItem"/>.</param> + /// <param name="mediaSourceId">The media source id.</param> + /// <param name="attachmentStreamIndex">The attachment index.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>The async task.</returns> + Task<(MediaAttachment Attachment, Stream Stream)> GetAttachment( + BaseItem item, + string mediaSourceId, + int attachmentStreamIndex, + CancellationToken cancellationToken); - Task ExtractAllAttachmentsExternal( - string inputArgument, - string id, - string outputPath, - CancellationToken cancellationToken); - } + /// <summary> + /// Gets the path to the attachment file. + /// </summary> + /// <param name="inputFile">The input file path.</param> + /// <param name="mediaSource">The <see cref="MediaSourceInfo" /> source id.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>The async task.</returns> + Task ExtractAllAttachments( + string inputFile, + MediaSourceInfo mediaSource, + CancellationToken cancellationToken); } |
