diff options
| -rw-r--r-- | .github/workflows/ci-codeql-analysis.yml | 6 | ||||
| -rw-r--r-- | .github/workflows/ci-tests.yml | 2 | ||||
| -rw-r--r-- | CONTRIBUTORS.md | 1 | ||||
| -rw-r--r-- | Directory.Packages.props | 6 | ||||
| -rw-r--r-- | Emby.Server.Implementations/Localization/Core/fr.json | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/CollectionFolder.cs | 11 | ||||
| -rw-r--r-- | MediaBrowser.Controller/LiveTv/ChannelInfo.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.MediaEncoding/Transcoding/TranscodeManager.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Model/Configuration/LibraryOptions.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamBuilder.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Model/Tasks/ITaskTrigger.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Providers/MediaInfo/AudioFileProber.cs | 11 | ||||
| -rw-r--r-- | src/Jellyfin.Drawing.Skia/SkiaEncoder.cs | 3 |
14 files changed, 46 insertions, 18 deletions
diff --git a/.github/workflows/ci-codeql-analysis.yml b/.github/workflows/ci-codeql-analysis.yml index 20307dd7d..7bc304186 100644 --- a/.github/workflows/ci-codeql-analysis.yml +++ b/.github/workflows/ci-codeql-analysis.yml @@ -27,11 +27,11 @@ jobs: dotnet-version: '8.0.x' - name: Initialize CodeQL - uses: github/codeql-action/init@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/init@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/autobuild@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/analyze@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 8ee6b3028..96c2df354 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -34,7 +34,7 @@ jobs: --verbosity minimal - name: Merge code coverage results - uses: danielpalme/ReportGenerator-GitHub-Action@b067e0c5d288fb4277b9f397b2dc6013f60381f0 # 5.2.2 + uses: danielpalme/ReportGenerator-GitHub-Action@7a0988e399533f3680a732dceda1a967cafdafcd # 5.2.3 with: reports: "**/coverage.cobertura.xml" targetdir: "merged/" diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 55642e4e2..e9c0fb2ad 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -180,6 +180,7 @@ _ [Barasingha](https://github.com/MaVdbussche) - [Gauvino](https://github.com/Gauvino) - [felix920506](https://github.com/felix920506) + - [btopherjohnson](https://github.com/btopherjohnson) # Emby Contributors diff --git a/Directory.Packages.props b/Directory.Packages.props index 2298b69a6..1d012e546 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -8,11 +8,11 @@ <PackageVersion Include="AutoFixture.AutoMoq" Version="4.18.1" /> <PackageVersion Include="AutoFixture.Xunit2" Version="4.18.1" /> <PackageVersion Include="AutoFixture" Version="4.18.1" /> - <PackageVersion Include="BDInfo" Version="0.7.6.2" /> + <PackageVersion Include="BDInfo" Version="0.8.0" /> <PackageVersion Include="BlurHashSharp.SkiaSharp" Version="1.3.2" /> <PackageVersion Include="BlurHashSharp" Version="1.3.2" /> <PackageVersion Include="CommandLineParser" Version="2.9.1" /> - <PackageVersion Include="coverlet.collector" Version="6.0.1" /> + <PackageVersion Include="coverlet.collector" Version="6.0.2" /> <PackageVersion Include="Diacritics" Version="3.3.27" /> <PackageVersion Include="DiscUtils.Udf" Version="0.16.13" /> <PackageVersion Include="DotNet.Glob" Version="3.1.3" /> @@ -72,7 +72,7 @@ <PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="2.88.7" /> <PackageVersion Include="SmartAnalyzers.MultithreadingAnalyzer" Version="1.1.31" /> <PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" /> - <PackageVersion Include="Svg.Skia" Version="1.0.0.14" /> + <PackageVersion Include="Svg.Skia" Version="1.0.0.16" /> <PackageVersion Include="Swashbuckle.AspNetCore.ReDoc" Version="6.5.0" /> <PackageVersion Include="Swashbuckle.AspNetCore" Version="6.2.3" /> <PackageVersion Include="System.Globalization" Version="4.3.0" /> diff --git a/Emby.Server.Implementations/Localization/Core/fr.json b/Emby.Server.Implementations/Localization/Core/fr.json index e0aff7954..9bbf1dc29 100644 --- a/Emby.Server.Implementations/Localization/Core/fr.json +++ b/Emby.Server.Implementations/Localization/Core/fr.json @@ -1,6 +1,6 @@ { "Albums": "Albums", - "AppDeviceValues": "Application : {0}, Appareil : {1}", + "AppDeviceValues": "Application: {0}, Appareil: {1}", "Application": "Application", "Artists": "Artistes", "AuthenticationSucceededWithUserName": "{0} authentifié avec succès", @@ -29,7 +29,7 @@ "Inherit": "Hériter", "ItemAddedWithName": "{0} a été ajouté à la médiathèque", "ItemRemovedWithName": "{0} a été supprimé de la médiathèque", - "LabelIpAddressValue": "Adresse IP : {0}", + "LabelIpAddressValue": "Adresse IP: {0}", "LabelRunningTimeValue": "Durée : {0}", "Latest": "Derniers", "MessageApplicationUpdated": "Le serveur Jellyfin a été mis à jour", diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index 992bb19bb..676a47c88 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -11,6 +11,7 @@ using System.Text.Json; using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; +using Jellyfin.Data.Entities; using Jellyfin.Data.Enums; using Jellyfin.Extensions.Json; using MediaBrowser.Controller.IO; @@ -95,6 +96,16 @@ namespace MediaBrowser.Controller.Entities return GetLibraryOptions(Path); } + public override bool IsVisible(User user) + { + if (GetLibraryOptions().Enabled) + { + return base.IsVisible(user); + } + + return false; + } + private static LibraryOptions LoadLibraryOptions(string path) { try diff --git a/MediaBrowser.Controller/LiveTv/ChannelInfo.cs b/MediaBrowser.Controller/LiveTv/ChannelInfo.cs index 699c15f93..52581df45 100644 --- a/MediaBrowser.Controller/LiveTv/ChannelInfo.cs +++ b/MediaBrowser.Controller/LiveTv/ChannelInfo.cs @@ -54,7 +54,7 @@ namespace MediaBrowser.Controller.LiveTv public string ChannelGroup { get; set; } /// <summary> - /// Gets or sets the the image path if it can be accessed directly from the file system. + /// Gets or sets the image path if it can be accessed directly from the file system. /// </summary> /// <value>The image path.</value> public string ImagePath { get; set; } diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs index 317aba418..5397a6752 100644 --- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs +++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs @@ -79,6 +79,7 @@ namespace MediaBrowser.MediaEncoding.Probing "5/8erl in Ehr'n", "Smith/Kotzen", "We;Na", + "LSR/CITY", }; /// <summary> diff --git a/MediaBrowser.MediaEncoding/Transcoding/TranscodeManager.cs b/MediaBrowser.MediaEncoding/Transcoding/TranscodeManager.cs index 8bace15c6..5d51a901a 100644 --- a/MediaBrowser.MediaEncoding/Transcoding/TranscodeManager.cs +++ b/MediaBrowser.MediaEncoding/Transcoding/TranscodeManager.cs @@ -724,7 +724,14 @@ public sealed class TranscodeManager : ITranscodeManager, IDisposable foreach (var file in _fileSystem.GetFilePaths(path, true)) { - _fileSystem.DeleteFile(file); + try + { + _fileSystem.DeleteFile(file); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error deleting encoded media cache file {Path}", path); + } } } diff --git a/MediaBrowser.Model/Configuration/LibraryOptions.cs b/MediaBrowser.Model/Configuration/LibraryOptions.cs index 42148a276..e777d5fd8 100644 --- a/MediaBrowser.Model/Configuration/LibraryOptions.cs +++ b/MediaBrowser.Model/Configuration/LibraryOptions.cs @@ -27,6 +27,8 @@ namespace MediaBrowser.Model.Configuration SeasonZeroDisplayName = "Specials"; } + public bool Enabled { get; set; } = true; + public bool EnablePhotos { get; set; } public bool EnableRealtimeMonitor { get; set; } diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 011453e52..55d1c3d51 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -345,7 +345,7 @@ namespace MediaBrowser.Model.Dlna /// <param name="profile">The <see cref="DeviceProfile"/>.</param> /// <param name="type">The <see cref="DlnaProfileType"/>.</param> /// <param name="playProfile">The <see cref="DirectPlayProfile"/> object to get the video stream from.</param> - /// <returns>The the normalized input container.</returns> + /// <returns>The normalized input container.</returns> public static string? NormalizeMediaSourceFormatIntoSingleContainer(string inputContainer, DeviceProfile? profile, DlnaProfileType type, DirectPlayProfile? playProfile = null) { if (string.IsNullOrEmpty(inputContainer)) @@ -1350,7 +1350,7 @@ namespace MediaBrowser.Model.Dlna /// <param name="transcoderSupport">The <see cref="ITranscoderSupport"/>.</param> /// <param name="outputContainer">The output container.</param> /// <param name="transcodingSubProtocol">The subtitle transoding protocol.</param> - /// <returns>The the normalized input container.</returns> + /// <returns>The normalized input container.</returns> public static SubtitleProfile GetSubtitleProfile( MediaSourceInfo mediaSource, MediaStream subtitleStream, diff --git a/MediaBrowser.Model/Tasks/ITaskTrigger.cs b/MediaBrowser.Model/Tasks/ITaskTrigger.cs index 0536f4ef7..bc8438855 100644 --- a/MediaBrowser.Model/Tasks/ITaskTrigger.cs +++ b/MediaBrowser.Model/Tasks/ITaskTrigger.cs @@ -24,7 +24,7 @@ namespace MediaBrowser.Model.Tasks /// <param name="lastResult">Result of the last run triggered task.</param> /// <param name="logger">The <see cref="ILogger"/>.</param> /// <param name="taskName">The name of the task.</param> - /// <param name="isApplicationStartup">Whether or not this is is fired during startup.</param> + /// <param name="isApplicationStartup">Whether or not this is fired during startup.</param> void Start(TaskResult? lastResult, ILogger logger, string taskName, bool isApplicationStartup); /// <summary> diff --git a/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs b/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs index 4d4b59b8c..c9fe4c9b6 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioFileProber.cs @@ -228,6 +228,7 @@ namespace MediaBrowser.Providers.MediaInfo audio.RunTimeTicks = mediaInfo.RunTimeTicks; audio.Size = mediaInfo.Size; + audio.PremiereDate = mediaInfo.PremiereDate; if (!audio.IsLocked) { @@ -348,9 +349,9 @@ namespace MediaBrowser.Providers.MediaInfo } } - if (!audio.LockedFields.Contains(MetadataField.Name)) + if (!audio.LockedFields.Contains(MetadataField.Name) && !string.IsNullOrEmpty(tags.Title)) { - audio.Name = options.ReplaceAllMetadata || string.IsNullOrEmpty(audio.Name) ? tags.Title : audio.Name; + audio.Name = tags.Title; } if (options.ReplaceAllMetadata) @@ -370,7 +371,11 @@ namespace MediaBrowser.Providers.MediaInfo { var year = Convert.ToInt32(tags.Year); audio.ProductionYear = year; - audio.PremiereDate = new DateTime(year, 01, 01); + + if (!audio.PremiereDate.HasValue) + { + audio.PremiereDate = new DateTime(year, 01, 01); + } } if (!audio.LockedFields.Contains(MetadataField.Genres)) diff --git a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs index a40719499..a158e5c86 100644 --- a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs +++ b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs @@ -188,7 +188,8 @@ public class SkiaEncoder : IImageEncoder ArgumentException.ThrowIfNullOrEmpty(path); var extension = Path.GetExtension(path.AsSpan()).TrimStart('.'); - if (!SupportedInputFormats.Contains(extension, StringComparison.OrdinalIgnoreCase)) + if (!SupportedInputFormats.Contains(extension, StringComparison.OrdinalIgnoreCase) + || extension.Equals(SvgFormat, StringComparison.OrdinalIgnoreCase)) { _logger.LogDebug("Unable to compute blur hash due to unsupported format: {ImagePath}", path); return string.Empty; |
