From 76ac1e614395a711099ef8d000a9605794053ac3 Mon Sep 17 00:00:00 2001 From: Alexander Gramiak Date: Sat, 5 Oct 2024 14:54:26 -0600 Subject: [PATCH 01/72] NetworkManager: Use MemberNotNull attribute Added in .NET 5, this attribute allows for the compiler to recognize that InitializeLan (and by extension, UpdateSettings) will initialize the specified fields. --- src/Jellyfin.Networking/Manager/NetworkManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Jellyfin.Networking/Manager/NetworkManager.cs b/src/Jellyfin.Networking/Manager/NetworkManager.cs index b285b836bc..5a13cc4173 100644 --- a/src/Jellyfin.Networking/Manager/NetworkManager.cs +++ b/src/Jellyfin.Networking/Manager/NetworkManager.cs @@ -81,7 +81,6 @@ public class NetworkManager : INetworkManager, IDisposable /// The instance. /// The instance holding startup parameters. /// Logger to use for messages. -#pragma warning disable CS8618 // Non-nullable field is uninitialized. : Values are set in UpdateSettings function. Compiler doesn't yet recognise this. public NetworkManager(IConfigurationManager configurationManager, IConfiguration startupConfig, ILogger logger) { ArgumentNullException.ThrowIfNull(logger); @@ -109,7 +108,6 @@ public class NetworkManager : INetworkManager, IDisposable _configurationManager.NamedConfigurationUpdated += ConfigurationUpdated; } -#pragma warning restore CS8618 // Non-nullable field is uninitialized. /// /// Event triggered on network changes. @@ -312,6 +310,7 @@ public class NetworkManager : INetworkManager, IDisposable /// /// Initializes internal LAN cache. /// + [MemberNotNull(nameof(_lanSubnets), nameof(_excludedSubnets))] private void InitializeLan(NetworkConfiguration config) { lock (_initLock) @@ -591,6 +590,7 @@ public class NetworkManager : INetworkManager, IDisposable /// Reloads all settings and re-Initializes the instance. /// /// The to use. + [MemberNotNull(nameof(_lanSubnets), nameof(_excludedSubnets))] public void UpdateSettings(object configuration) { ArgumentNullException.ThrowIfNull(configuration); From aba905fa262b3182e480e2ce3e68f7964dc99ef7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Oct 2024 01:01:18 +0000 Subject: [PATCH 02/72] Update dependency Serilog.Settings.Configuration to 8.0.4 --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 9d1ac1ca9a..17f4cbee9f 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -59,7 +59,7 @@ - + From 4492eb0e66d39fa7e53a8d54321373a96d1c5553 Mon Sep 17 00:00:00 2001 From: Tom Deseyn Date: Thu, 10 Oct 2024 21:35:00 +0200 Subject: [PATCH 03/72] StartupHelper: fix app paths when SpecialFolder does not yet exists. (#12790) --- Jellyfin.Server/Helpers/StartupHelpers.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jellyfin.Server/Helpers/StartupHelpers.cs b/Jellyfin.Server/Helpers/StartupHelpers.cs index 5518d6ba89..0802b23ad9 100644 --- a/Jellyfin.Server/Helpers/StartupHelpers.cs +++ b/Jellyfin.Server/Helpers/StartupHelpers.cs @@ -83,7 +83,7 @@ public static class StartupHelpers var dataDir = options.DataDir ?? Environment.GetEnvironmentVariable("JELLYFIN_DATA_DIR") ?? Path.Join( - Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.DoNotVerify), "jellyfin"); var configDir = options.ConfigDir ?? Environment.GetEnvironmentVariable("JELLYFIN_CONFIG_DIR"); @@ -97,7 +97,7 @@ public static class StartupHelpers { // UNIX: $XDG_CONFIG_HOME configDir = Path.Join( - Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData, Environment.SpecialFolderOption.DoNotVerify), "jellyfin"); } } @@ -163,7 +163,7 @@ public static class StartupHelpers if (cacheHome is null || !cacheHome.StartsWith('/')) { cacheHome = Path.Join( - Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile, Environment.SpecialFolderOption.DoNotVerify), ".cache"); } From 162021def9de14ea994ad452e8cac31e5089f804 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:47:33 -0600 Subject: [PATCH 04/72] Update CI dependencies (#12800) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci-compat.yml | 4 ++-- .github/workflows/ci-openapi.yml | 4 ++-- .github/workflows/ci-tests.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-compat.yml b/.github/workflows/ci-compat.yml index 4a2d1da1a9..3dde5f21fb 100644 --- a/.github/workflows/ci-compat.yml +++ b/.github/workflows/ci-compat.yml @@ -21,7 +21,7 @@ jobs: dotnet build Jellyfin.Server -o ./out - name: Upload Head - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4.4.2 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: abi-head retention-days: 14 @@ -55,7 +55,7 @@ jobs: dotnet build Jellyfin.Server -o ./out - name: Upload Head - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4.4.2 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: abi-base retention-days: 14 diff --git a/.github/workflows/ci-openapi.yml b/.github/workflows/ci-openapi.yml index ef1f10499d..399c0085b4 100644 --- a/.github/workflows/ci-openapi.yml +++ b/.github/workflows/ci-openapi.yml @@ -27,7 +27,7 @@ jobs: - name: Generate openapi.json run: dotnet test tests/Jellyfin.Server.Integration.Tests/Jellyfin.Server.Integration.Tests.csproj -c Release --filter "Jellyfin.Server.Integration.Tests.OpenApiSpecTests" - name: Upload openapi.json - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4.4.2 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: openapi-head retention-days: 14 @@ -61,7 +61,7 @@ jobs: - name: Generate openapi.json run: dotnet test tests/Jellyfin.Server.Integration.Tests/Jellyfin.Server.Integration.Tests.csproj -c Release --filter "Jellyfin.Server.Integration.Tests.OpenApiSpecTests" - name: Upload openapi.json - uses: actions/upload-artifact@84480863f228bb9747b473957fcc9e309aa96097 # v4.4.2 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: openapi-base retention-days: 14 diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 3caf1c82cf..6c9740a851 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@b7115d212c0f7814a0cb17fb43ec36983c707ccb # v5.3.10 + uses: danielpalme/ReportGenerator-GitHub-Action@62f9e70ab348d56eee76d446b4db903a85ab0ea8 # v5.3.11 with: reports: "**/coverage.cobertura.xml" targetdir: "merged/" From 4242a10dbeb419546aa9129e5663a66313675bd6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 11 Oct 2024 06:24:17 +0000 Subject: [PATCH 05/72] Update dependency Serilog.AspNetCore to 8.0.3 --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 17f4cbee9f..5a85c984c8 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -57,7 +57,7 @@ - + From 577fb2c6feebd6921ad65e1426c639c7dedd85e4 Mon Sep 17 00:00:00 2001 From: Bas <44002186+854562@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:15:03 +0000 Subject: [PATCH 06/72] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/ --- .../Localization/Core/nl.json | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/nl.json b/Emby.Server.Implementations/Localization/Core/nl.json index 7d101195b7..8fd44da725 100644 --- a/Emby.Server.Implementations/Localization/Core/nl.json +++ b/Emby.Server.Implementations/Localization/Core/nl.json @@ -11,7 +11,7 @@ "Collections": "Collecties", "DeviceOfflineWithName": "Verbinding met {0} is verbroken", "DeviceOnlineWithName": "{0} is verbonden", - "FailedLoginAttemptWithUserName": "Mislukte aanmeldpoging van {0}", + "FailedLoginAttemptWithUserName": "Mislukte aanmeldpoging vanaf {0}", "Favorites": "Favorieten", "Folders": "Mappen", "Genres": "Genres", @@ -57,7 +57,7 @@ "NotificationOptionPluginUpdateInstalled": "Plug-in-update geïnstalleerd", "NotificationOptionServerRestartRequired": "Herstarten server vereist", "NotificationOptionTaskFailed": "Geplande taak mislukt", - "NotificationOptionUserLockedOut": "Gebruiker is vergrendeld", + "NotificationOptionUserLockedOut": "Gebruiker buitengesloten", "NotificationOptionVideoPlayback": "Afspelen van video gestart", "NotificationOptionVideoPlaybackStopped": "Afspelen van video gestopt", "Photos": "Foto's", @@ -77,14 +77,14 @@ "SubtitleDownloadFailureFromForItem": "Ondertiteling kon niet gedownload worden van {0} voor {1}", "Sync": "Synchronisatie", "System": "Systeem", - "TvShows": "TV-series", + "TvShows": "Tv-series", "User": "Gebruiker", "UserCreatedWithName": "Gebruiker {0} is aangemaakt", "UserDeletedWithName": "Gebruiker {0} is verwijderd", "UserDownloadingItemWithValues": "{0} downloadt {1}", - "UserLockedOutWithName": "Gebruikersaccount {0} is vergrendeld", - "UserOfflineFromDevice": "Verbinding van {0} met {1} is verbroken", - "UserOnlineFromDevice": "{0} heeft verbinding met {1}", + "UserLockedOutWithName": "Gebruiker {0} is buitengesloten", + "UserOfflineFromDevice": "Verbinding van {0} via {1} is verbroken", + "UserOnlineFromDevice": "{0} is verbonden via {1}", "UserPasswordChangedWithName": "Wachtwoord voor {0} is gewijzigd", "UserPolicyUpdatedWithName": "Gebruikersbeleid gewijzigd voor {0}", "UserStartedPlayingItemWithValues": "{0} speelt {1} af op {2}", @@ -94,16 +94,16 @@ "VersionNumber": "Versie {0}", "TaskDownloadMissingSubtitlesDescription": "Zoekt op het internet naar ontbrekende ondertiteling gebaseerd op metadataconfiguratie.", "TaskDownloadMissingSubtitles": "Ontbrekende ondertiteling downloaden", - "TaskRefreshChannelsDescription": "Vernieuwt informatie van internet kanalen.", + "TaskRefreshChannelsDescription": "Vernieuwt informatie van internetkanalen.", "TaskRefreshChannels": "Kanalen vernieuwen", - "TaskCleanTranscodeDescription": "Verwijdert transcode bestanden ouder dan 1 dag.", + "TaskCleanTranscodeDescription": "Verwijdert transcoderingsbestanden ouder dan een dag.", "TaskCleanLogs": "Logboekmap opschonen", "TaskCleanTranscode": "Transcoderingsmap opschonen", "TaskUpdatePluginsDescription": "Downloadt en installeert updates van plug-ins waarvoor automatisch bijwerken is ingeschakeld.", "TaskUpdatePlugins": "Plug-ins bijwerken", - "TaskRefreshPeopleDescription": "Updatet metadata voor acteurs en regisseurs in je mediabibliotheek.", + "TaskRefreshPeopleDescription": "Werkt metadata bij voor acteurs en regisseurs in je mediabibliotheek.", "TaskRefreshPeople": "Personen vernieuwen", - "TaskCleanLogsDescription": "Verwijdert log bestanden ouder dan {0} dagen.", + "TaskCleanLogsDescription": "Verwijdert logboekbestanden ouder dan {0} dagen.", "TaskRefreshLibraryDescription": "Scant de mediabibliotheek op nieuwe bestanden en vernieuwt de metadata.", "TaskRefreshLibrary": "Mediabibliotheek scannen", "TaskRefreshChapterImagesDescription": "Maakt voorbeeldafbeedingen aan voor video's met hoofdstukken.", From 79ee36ee155483fcbb2b2863f549b68034634dbc Mon Sep 17 00:00:00 2001 From: TonyB Date: Sun, 6 Oct 2024 15:12:20 +0800 Subject: [PATCH 07/72] Add EpisodeExpression for anime file names --- Emby.Naming/Common/NamingOptions.cs | 8 ++++++++ tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs | 2 ++ 2 files changed, 10 insertions(+) diff --git a/Emby.Naming/Common/NamingOptions.cs b/Emby.Naming/Common/NamingOptions.cs index 333d237a24..f043465945 100644 --- a/Emby.Naming/Common/NamingOptions.cs +++ b/Emby.Naming/Common/NamingOptions.cs @@ -467,6 +467,14 @@ namespace Emby.Naming.Common { IsNamed = true }, + + // Anime style expression + // "[Group][Series Name][21][1080p][FLAC][HASH]" + // "[Group] Series Name [04][BDRIP]" + new EpisodeExpression(@"(?:\[(?:[^\]]+)\]\s*)?(?\[[^\]]+\]|[^[\]]+)\s*\[(?\d+)\]") + { + IsNamed = true + }, }; VideoExtraRules = new[] diff --git a/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs b/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs index 406381f142..7bfab570b7 100644 --- a/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs +++ b/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs @@ -77,6 +77,8 @@ namespace Jellyfin.Naming.Tests.TV [InlineData("Season 3/The Series S3 E9 - The title.avi", 9)] [InlineData("Season 3/S003 E009.avi", 9)] [InlineData("Season 3/Season 3 Episode 9.avi", 9)] + [InlineData("[VCB-Studio] Re Zero kara Hajimeru Isekai Seikatsu [21][Ma10p_1080p][x265_flac].mkv", 21)] + [InlineData("[CASO&Sumisora][Oda_Nobuna_no_Yabou][04][BDRIP][1920x1080][x264_AAC][7620E503].mp4", 4)] // [InlineData("Case Closed (1996-2007)/Case Closed - 317.mkv", 317)] // triple digit episode number // TODO: [InlineData("Season 2/16 12 Some Title.avi", 16)] From 5957790ce82ef4ea1f15ab7942bce59de91a44c4 Mon Sep 17 00:00:00 2001 From: TonyB Date: Sat, 12 Oct 2024 17:08:30 +0800 Subject: [PATCH 08/72] Use [0-9] instead of \d --- Emby.Naming/Common/NamingOptions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Emby.Naming/Common/NamingOptions.cs b/Emby.Naming/Common/NamingOptions.cs index f043465945..48338daf48 100644 --- a/Emby.Naming/Common/NamingOptions.cs +++ b/Emby.Naming/Common/NamingOptions.cs @@ -471,7 +471,7 @@ namespace Emby.Naming.Common // Anime style expression // "[Group][Series Name][21][1080p][FLAC][HASH]" // "[Group] Series Name [04][BDRIP]" - new EpisodeExpression(@"(?:\[(?:[^\]]+)\]\s*)?(?\[[^\]]+\]|[^[\]]+)\s*\[(?\d+)\]") + new EpisodeExpression(@"(?:\[(?:[^\]]+)\]\s*)?(?\[[^\]]+\]|[^[\]]+)\s*\[(?[0-9]+)\]") { IsNamed = true }, From 3bc367da3b3d1001236e46d36d1f619ad829c8a5 Mon Sep 17 00:00:00 2001 From: BryanHuas Date: Sat, 12 Oct 2024 14:38:12 +0000 Subject: [PATCH 09/72] Translated using Weblate (Spanish (Mexico)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_MX/ --- Emby.Server.Implementations/Localization/Core/es-MX.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/es-MX.json b/Emby.Server.Implementations/Localization/Core/es-MX.json index 2adaf11b9e..5fb7e8ae1c 100644 --- a/Emby.Server.Implementations/Localization/Core/es-MX.json +++ b/Emby.Server.Implementations/Localization/Core/es-MX.json @@ -131,5 +131,10 @@ "TaskAudioNormalizationDescription": "Analiza los archivos para normalizar el audio.", "TaskCleanCollectionsAndPlaylists": "Limpieza de colecciones y listas de reproducción", "TaskCleanCollectionsAndPlaylistsDescription": "Quita elementos que ya no existen de colecciones y listas de reproducción.", - "TaskDownloadMissingLyrics": "descargar letras que faltan" + "TaskDownloadMissingLyrics": "descargar letras que faltan", + "TaskDownloadMissingLyricsDescription": "Descargar letras de canciones", + "TaskExtractMediaSegments": "Escaneo de segmentos de medios", + "TaskExtractMediaSegmentsDescription": "Extrae u obtiene segmentos de medios de plugins habilitados para MediaSegment.", + "TaskMoveTrickplayImages": "Migrar la ubicación de la imagen de Trickplay", + "TaskMoveTrickplayImagesDescription": "Mueve archivos de trickplay existentes según la configuración de la biblioteca." } From 7c22a99e057cccf152357344bcf155280867b3d0 Mon Sep 17 00:00:00 2001 From: BryanHuas Date: Sat, 12 Oct 2024 14:36:52 +0000 Subject: [PATCH 10/72] Translated using Weblate (Spanish) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/ --- Emby.Server.Implementations/Localization/Core/es.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/es.json b/Emby.Server.Implementations/Localization/Core/es.json index 210ee44469..661333d291 100644 --- a/Emby.Server.Implementations/Localization/Core/es.json +++ b/Emby.Server.Implementations/Localization/Core/es.json @@ -132,5 +132,9 @@ "TaskAudioNormalization": "Normalización de audio", "TaskAudioNormalizationDescription": "Escanear archivos para obtener datos de normalización.", "TaskDownloadMissingLyricsDescription": "Descargar letras para las canciones", - "TaskDownloadMissingLyrics": "Descargar letras faltantes" + "TaskDownloadMissingLyrics": "Descargar letras faltantes", + "TaskMoveTrickplayImagesDescription": "Mueve archivos de trickplay existentes según la configuración de la biblioteca.", + "TaskExtractMediaSegments": "Escaneo de segmentos de medios", + "TaskExtractMediaSegmentsDescription": "Extrae u obtiene segmentos de medios de plugins habilitados para MediaSegment.", + "TaskMoveTrickplayImages": "Migrar la ubicación de la imagen de Trickplay" } From 5ad6613b9e3f6c7968df39427fb2250eb980e952 Mon Sep 17 00:00:00 2001 From: NOV Date: Sun, 13 Oct 2024 20:01:22 +0000 Subject: [PATCH 11/72] Translated using Weblate (French) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/ --- Emby.Server.Implementations/Localization/Core/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/fr.json b/Emby.Server.Implementations/Localization/Core/fr.json index 3caf8b5478..c337d19320 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", From 0bc142de9acd01b8b9191b8e99da41fdebabe0a7 Mon Sep 17 00:00:00 2001 From: Nyanmisaka <799610810@qq.com> Date: Mon, 14 Oct 2024 09:57:02 +0000 Subject: [PATCH 12/72] Translated using Weblate (Chinese (Simplified Han script)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/ --- Emby.Server.Implementations/Localization/Core/zh-CN.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/zh-CN.json b/Emby.Server.Implementations/Localization/Core/zh-CN.json index 9a0e2115ed..209b8230c6 100644 --- a/Emby.Server.Implementations/Localization/Core/zh-CN.json +++ b/Emby.Server.Implementations/Localization/Core/zh-CN.json @@ -134,7 +134,7 @@ "TaskDownloadMissingLyrics": "下载缺失的歌词", "TaskDownloadMissingLyricsDescription": "下载歌曲歌词", "TaskMoveTrickplayImages": "迁移进度条预览图的存储位置", - "TaskExtractMediaSegments": "媒体片段扫描", - "TaskExtractMediaSegmentsDescription": "从支持 MediaSegment 的插件中提取或获取媒体片段。", + "TaskExtractMediaSegments": "媒体分段扫描", + "TaskExtractMediaSegmentsDescription": "从支持 MediaSegment 的插件中提取或获取媒体分段。", "TaskMoveTrickplayImagesDescription": "根据媒体库设置移动现有的进度条预览图文件。" } From bcb2a3d5e95a15de9ad41885ab27f68479473f19 Mon Sep 17 00:00:00 2001 From: gnattu Date: Tue, 15 Oct 2024 18:22:39 +0800 Subject: [PATCH 13/72] Don't check remote sources for trickplay --- .../Trickplay/TrickplayManager.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs b/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs index f6c48498ca..4aa998591e 100644 --- a/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs +++ b/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs @@ -498,6 +498,11 @@ public class TrickplayManager : ITrickplayManager var trickplayManifest = new Dictionary>(); foreach (var mediaSource in item.GetMediaSources(false)) { + if (mediaSource.IsRemote) + { + continue; + } + var mediaSourceId = Guid.Parse(mediaSource.Id); var trickplayResolutions = await GetTrickplayResolutions(mediaSourceId).ConfigureAwait(false); From 143d70d2648c71825af340f97cd087891fcbf1bf Mon Sep 17 00:00:00 2001 From: myrad2267 Date: Tue, 15 Oct 2024 02:30:49 +0000 Subject: [PATCH 14/72] Translated using Weblate (French (Canada)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr_CA/ --- Emby.Server.Implementations/Localization/Core/fr-CA.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/fr-CA.json b/Emby.Server.Implementations/Localization/Core/fr-CA.json index 42027dfb22..68ab4b617e 100644 --- a/Emby.Server.Implementations/Localization/Core/fr-CA.json +++ b/Emby.Server.Implementations/Localization/Core/fr-CA.json @@ -130,5 +130,10 @@ "TaskCleanCollectionsAndPlaylists": "Nettoyer les collections et les listes de lecture", "TaskCleanCollectionsAndPlaylistsDescription": "Supprime les éléments des collections et des listes de lecture qui n'existent plus.", "TaskAudioNormalization": "Normalisation audio", - "TaskAudioNormalizationDescription": "Analyse les fichiers à la recherche de données de normalisation audio." + "TaskAudioNormalizationDescription": "Analyse les fichiers à la recherche de données de normalisation audio.", + "TaskExtractMediaSegments": "Analyse des segments de média", + "TaskDownloadMissingLyricsDescription": "Téléchargement des paroles des chansons", + "TaskMoveTrickplayImagesDescription": "Déplace les fichiers trickplay existants en fonction des paramètres de la bibliothèque.", + "TaskDownloadMissingLyrics": "Télécharger les paroles des chansons manquantes", + "TaskMoveTrickplayImages": "Changer l'emplacement des images Trickplay" } From fe05aa8cf1925485ac6ef2f1da37f121189c1892 Mon Sep 17 00:00:00 2001 From: aevar Date: Wed, 16 Oct 2024 00:05:01 +0000 Subject: [PATCH 15/72] Translated using Weblate (Icelandic) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/ --- Emby.Server.Implementations/Localization/Core/is.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/is.json b/Emby.Server.Implementations/Localization/Core/is.json index 6cb55760a0..672c686fab 100644 --- a/Emby.Server.Implementations/Localization/Core/is.json +++ b/Emby.Server.Implementations/Localization/Core/is.json @@ -129,5 +129,7 @@ "TaskAudioNormalization": "Hljóðstöðlun", "TaskAudioNormalizationDescription": "Leitar að hljóðstöðlunargögnum í skrám.", "TaskCleanCollectionsAndPlaylists": "Hreinsa söfn og spilunarlista", - "TaskCleanCollectionsAndPlaylistsDescription": "Fjarlægir hluti úr söfnum og spilalistum sem eru ekki lengur til." + "TaskCleanCollectionsAndPlaylistsDescription": "Fjarlægir hluti úr söfnum og spilalistum sem eru ekki lengur til.", + "TaskDownloadMissingLyricsDescription": "Sækja söngtexta fyrir lög", + "TaskDownloadMissingLyrics": "Sækja söngtexta sem vantar" } From 666db81a09e32f4fd8ddb201ff2fddaca0481007 Mon Sep 17 00:00:00 2001 From: gnattu Date: Wed, 16 Oct 2024 17:47:24 +0800 Subject: [PATCH 16/72] Allow invalid id for trickplay Co-authored-by: JPVenson --- Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs b/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs index 4aa998591e..25870305e2 100644 --- a/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs +++ b/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs @@ -498,12 +498,10 @@ public class TrickplayManager : ITrickplayManager var trickplayManifest = new Dictionary>(); foreach (var mediaSource in item.GetMediaSources(false)) { - if (mediaSource.IsRemote) + if (mediaSource.IsRemote || !Guid.TryParse(mediaSource.Id, out var mediaSourceId) { continue; } - - var mediaSourceId = Guid.Parse(mediaSource.Id); var trickplayResolutions = await GetTrickplayResolutions(mediaSourceId).ConfigureAwait(false); if (trickplayResolutions.Count > 0) From 5ac895bef66d53d6cba148d7816b021c0a655380 Mon Sep 17 00:00:00 2001 From: gnattu Date: Wed, 16 Oct 2024 17:50:19 +0800 Subject: [PATCH 17/72] Fix format --- Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs b/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs index 25870305e2..cfe385106a 100644 --- a/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs +++ b/Jellyfin.Server.Implementations/Trickplay/TrickplayManager.cs @@ -498,10 +498,11 @@ public class TrickplayManager : ITrickplayManager var trickplayManifest = new Dictionary>(); foreach (var mediaSource in item.GetMediaSources(false)) { - if (mediaSource.IsRemote || !Guid.TryParse(mediaSource.Id, out var mediaSourceId) + if (mediaSource.IsRemote || !Guid.TryParse(mediaSource.Id, out var mediaSourceId)) { continue; } + var trickplayResolutions = await GetTrickplayResolutions(mediaSourceId).ConfigureAwait(false); if (trickplayResolutions.Count > 0) From 8b4fa42e49e305df544dd12fedb7a55a5bdaf74b Mon Sep 17 00:00:00 2001 From: JPVenson Date: Thu, 17 Oct 2024 15:35:03 +0200 Subject: [PATCH 18/72] Ensure Skia images are always disposed (#12786) --- src/Jellyfin.Drawing.Skia/SkiaEncoder.cs | 153 +++++++++++------- .../SplashscreenBuilder.cs | 151 +++++++++-------- 2 files changed, 184 insertions(+), 120 deletions(-) diff --git a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs index ede93aaa55..c5aadc8901 100644 --- a/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs +++ b/src/Jellyfin.Drawing.Skia/SkiaEncoder.cs @@ -269,14 +269,24 @@ public class SkiaEncoder : IImageEncoder } // create the bitmap - var bitmap = new SKBitmap(codec.Info.Width, codec.Info.Height, !requiresTransparencyHack); + SKBitmap? bitmap = null; + try + { + bitmap = new SKBitmap(codec.Info.Width, codec.Info.Height, !requiresTransparencyHack); - // decode - _ = codec.GetPixels(bitmap.Info, bitmap.GetPixels()); + // decode + _ = codec.GetPixels(bitmap.Info, bitmap.GetPixels()); - origin = codec.EncodedOrigin; + origin = codec.EncodedOrigin; - return bitmap; + return bitmap!; + } + catch (Exception e) + { + _logger.LogError(e, "Detected intermediary error decoding image {0}", path); + bitmap?.Dispose(); + throw; + } } var resultBitmap = SKBitmap.Decode(NormalizePath(path)); @@ -286,17 +296,26 @@ public class SkiaEncoder : IImageEncoder return Decode(path, true, orientation, out origin); } - // If we have to resize these they often end up distorted - if (resultBitmap.ColorType == SKColorType.Gray8) + try { - using (resultBitmap) + // If we have to resize these they often end up distorted + if (resultBitmap.ColorType == SKColorType.Gray8) { - return Decode(path, true, orientation, out origin); + using (resultBitmap) + { + return Decode(path, true, orientation, out origin); + } } - } - origin = SKEncodedOrigin.TopLeft; - return resultBitmap; + origin = SKEncodedOrigin.TopLeft; + return resultBitmap; + } + catch (Exception e) + { + _logger.LogError(e, "Detected intermediary error decoding image {0}", path); + resultBitmap?.Dispose(); + throw; + } } private SKBitmap? GetBitmap(string path, bool autoOrient, ImageOrientation? orientation) @@ -335,58 +354,78 @@ public class SkiaEncoder : IImageEncoder var width = (int)Math.Round(svg.Drawable.Bounds.Width); var height = (int)Math.Round(svg.Drawable.Bounds.Height); - var bitmap = new SKBitmap(width, height); - using var canvas = new SKCanvas(bitmap); - canvas.DrawPicture(svg.Picture); - canvas.Flush(); - canvas.Save(); + SKBitmap? bitmap = null; + try + { + bitmap = new SKBitmap(width, height); + using var canvas = new SKCanvas(bitmap); + canvas.DrawPicture(svg.Picture); + canvas.Flush(); + canvas.Save(); - return bitmap; + return bitmap!; + } + catch (Exception e) + { + _logger.LogError(e, "Detected intermediary error extracting image {0}", path); + bitmap?.Dispose(); + throw; + } } private SKBitmap OrientImage(SKBitmap bitmap, SKEncodedOrigin origin) { var needsFlip = origin is SKEncodedOrigin.LeftBottom or SKEncodedOrigin.LeftTop or SKEncodedOrigin.RightBottom or SKEncodedOrigin.RightTop; - var rotated = needsFlip - ? new SKBitmap(bitmap.Height, bitmap.Width) - : new SKBitmap(bitmap.Width, bitmap.Height); - using var surface = new SKCanvas(rotated); - var midX = (float)rotated.Width / 2; - var midY = (float)rotated.Height / 2; - - switch (origin) + SKBitmap? rotated = null; + try { - case SKEncodedOrigin.TopRight: - surface.Scale(-1, 1, midX, midY); - break; - case SKEncodedOrigin.BottomRight: - surface.RotateDegrees(180, midX, midY); - break; - case SKEncodedOrigin.BottomLeft: - surface.Scale(1, -1, midX, midY); - break; - case SKEncodedOrigin.LeftTop: - surface.Translate(0, -rotated.Height); - surface.Scale(1, -1, midX, midY); - surface.RotateDegrees(-90); - break; - case SKEncodedOrigin.RightTop: - surface.Translate(rotated.Width, 0); - surface.RotateDegrees(90); - break; - case SKEncodedOrigin.RightBottom: - surface.Translate(rotated.Width, 0); - surface.Scale(1, -1, midX, midY); - surface.RotateDegrees(90); - break; - case SKEncodedOrigin.LeftBottom: - surface.Translate(0, rotated.Height); - surface.RotateDegrees(-90); - break; - } + rotated = needsFlip + ? new SKBitmap(bitmap.Height, bitmap.Width) + : new SKBitmap(bitmap.Width, bitmap.Height); + using var surface = new SKCanvas(rotated); + var midX = (float)rotated.Width / 2; + var midY = (float)rotated.Height / 2; - surface.DrawBitmap(bitmap, 0, 0); - return rotated; + switch (origin) + { + case SKEncodedOrigin.TopRight: + surface.Scale(-1, 1, midX, midY); + break; + case SKEncodedOrigin.BottomRight: + surface.RotateDegrees(180, midX, midY); + break; + case SKEncodedOrigin.BottomLeft: + surface.Scale(1, -1, midX, midY); + break; + case SKEncodedOrigin.LeftTop: + surface.Translate(0, -rotated.Height); + surface.Scale(1, -1, midX, midY); + surface.RotateDegrees(-90); + break; + case SKEncodedOrigin.RightTop: + surface.Translate(rotated.Width, 0); + surface.RotateDegrees(90); + break; + case SKEncodedOrigin.RightBottom: + surface.Translate(rotated.Width, 0); + surface.Scale(1, -1, midX, midY); + surface.RotateDegrees(90); + break; + case SKEncodedOrigin.LeftBottom: + surface.Translate(0, rotated.Height); + surface.RotateDegrees(-90); + break; + } + + surface.DrawBitmap(bitmap, 0, 0); + return rotated; + } + catch (Exception e) + { + _logger.LogError(e, "Detected intermediary error rotating image"); + rotated?.Dispose(); + throw; + } } /// @@ -562,7 +601,7 @@ public class SkiaEncoder : IImageEncoder // Only generate the splash screen if we have at least one poster and at least one backdrop/thumbnail. if (posters.Count > 0 && backdrops.Count > 0) { - var splashBuilder = new SplashscreenBuilder(this); + var splashBuilder = new SplashscreenBuilder(this, _logger); var outputPath = Path.Combine(_appPaths.DataPath, "splashscreen.png"); splashBuilder.GenerateSplash(posters, backdrops, outputPath); } diff --git a/src/Jellyfin.Drawing.Skia/SplashscreenBuilder.cs b/src/Jellyfin.Drawing.Skia/SplashscreenBuilder.cs index 9905566230..7af77758b4 100644 --- a/src/Jellyfin.Drawing.Skia/SplashscreenBuilder.cs +++ b/src/Jellyfin.Drawing.Skia/SplashscreenBuilder.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using SkiaSharp; namespace Jellyfin.Drawing.Skia; @@ -18,14 +19,17 @@ public class SplashscreenBuilder private const int Spacing = 20; private readonly SkiaEncoder _skiaEncoder; + private readonly ILogger _logger; /// /// Initializes a new instance of the class. /// /// The SkiaEncoder. - public SplashscreenBuilder(SkiaEncoder skiaEncoder) + /// The logger. + public SplashscreenBuilder(SkiaEncoder skiaEncoder, ILogger logger) { _skiaEncoder = skiaEncoder; + _logger = logger; } /// @@ -55,65 +59,76 @@ public class SplashscreenBuilder var posterIndex = 0; var backdropIndex = 0; - var bitmap = new SKBitmap(WallWidth, WallHeight); - using var canvas = new SKCanvas(bitmap); - canvas.Clear(SKColors.Black); - - int posterHeight = WallHeight / 6; - - for (int i = 0; i < Rows; i++) + SKBitmap? bitmap = null; + try { - int imageCounter = Random.Shared.Next(0, 5); - int currentWidthPos = i * 75; - int currentHeight = i * (posterHeight + Spacing); + bitmap = new SKBitmap(WallWidth, WallHeight); + using var canvas = new SKCanvas(bitmap); + canvas.Clear(SKColors.Black); - while (currentWidthPos < WallWidth) + int posterHeight = WallHeight / 6; + + for (int i = 0; i < Rows; i++) { - SKBitmap? currentImage; + int imageCounter = Random.Shared.Next(0, 5); + int currentWidthPos = i * 75; + int currentHeight = i * (posterHeight + Spacing); - switch (imageCounter) + while (currentWidthPos < WallWidth) { - case 0: - case 2: - case 3: - currentImage = SkiaHelper.GetNextValidImage(_skiaEncoder, posters, posterIndex, out int newPosterIndex); - posterIndex = newPosterIndex; - break; - default: - currentImage = SkiaHelper.GetNextValidImage(_skiaEncoder, backdrops, backdropIndex, out int newBackdropIndex); - backdropIndex = newBackdropIndex; - break; - } + SKBitmap? currentImage; - if (currentImage is null) - { - throw new ArgumentException("Not enough valid pictures provided to create a splashscreen!"); - } + switch (imageCounter) + { + case 0: + case 2: + case 3: + currentImage = SkiaHelper.GetNextValidImage(_skiaEncoder, posters, posterIndex, out int newPosterIndex); + posterIndex = newPosterIndex; + break; + default: + currentImage = SkiaHelper.GetNextValidImage(_skiaEncoder, backdrops, backdropIndex, out int newBackdropIndex); + backdropIndex = newBackdropIndex; + break; + } - // resize to the same aspect as the original - var imageWidth = Math.Abs(posterHeight * currentImage.Width / currentImage.Height); - using var resizedBitmap = new SKBitmap(imageWidth, posterHeight); - currentImage.ScalePixels(resizedBitmap, SKFilterQuality.High); + if (currentImage is null) + { + throw new ArgumentException("Not enough valid pictures provided to create a splashscreen!"); + } - // draw on canvas - canvas.DrawBitmap(resizedBitmap, currentWidthPos, currentHeight); + using (currentImage) + { + var imageWidth = Math.Abs(posterHeight * currentImage.Width / currentImage.Height); + using var resizedBitmap = new SKBitmap(imageWidth, posterHeight); + currentImage.ScalePixels(resizedBitmap, SKFilterQuality.High); - currentWidthPos += imageWidth + Spacing; + // draw on canvas + canvas.DrawBitmap(resizedBitmap, currentWidthPos, currentHeight); - currentImage.Dispose(); + // resize to the same aspect as the original + currentWidthPos += imageWidth + Spacing; + } - if (imageCounter >= 4) - { - imageCounter = 0; - } - else - { - imageCounter++; + if (imageCounter >= 4) + { + imageCounter = 0; + } + else + { + imageCounter++; + } } } - } - return bitmap; + return bitmap; + } + catch (Exception e) + { + _logger.LogError(e, "Detected intermediary error creating splashscreen image"); + bitmap?.Dispose(); + throw; + } } /// @@ -123,25 +138,35 @@ public class SplashscreenBuilder /// The transformed image. private SKBitmap Transform3D(SKBitmap input) { - var bitmap = new SKBitmap(FinalWidth, FinalHeight); - using var canvas = new SKCanvas(bitmap); - canvas.Clear(SKColors.Black); - var matrix = new SKMatrix + SKBitmap? bitmap = null; + try { - ScaleX = 0.324108899f, - ScaleY = 0.563934922f, - SkewX = -0.244337708f, - SkewY = 0.0377609022f, - TransX = 42.0407715f, - TransY = -198.104706f, - Persp0 = -9.08959337E-05f, - Persp1 = 6.85242048E-05f, - Persp2 = 0.988209724f - }; + bitmap = new SKBitmap(FinalWidth, FinalHeight); + using var canvas = new SKCanvas(bitmap); + canvas.Clear(SKColors.Black); + var matrix = new SKMatrix + { + ScaleX = 0.324108899f, + ScaleY = 0.563934922f, + SkewX = -0.244337708f, + SkewY = 0.0377609022f, + TransX = 42.0407715f, + TransY = -198.104706f, + Persp0 = -9.08959337E-05f, + Persp1 = 6.85242048E-05f, + Persp2 = 0.988209724f + }; - canvas.SetMatrix(matrix); - canvas.DrawBitmap(input, 0, 0); + canvas.SetMatrix(matrix); + canvas.DrawBitmap(input, 0, 0); - return bitmap; + return bitmap; + } + catch (Exception e) + { + _logger.LogError(e, "Detected intermediary error creating splashscreen image transforming the image"); + bitmap?.Dispose(); + throw; + } } } From 6813db06d7d092e89eaa7ee291f6b5b1eb7dc4cb Mon Sep 17 00:00:00 2001 From: gnattu Date: Sat, 19 Oct 2024 19:23:48 +0800 Subject: [PATCH 19/72] Infer more audio codec from containers (#12837) --- .../MediaEncoding/EncodingHelper.cs | 46 ++++--------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index c120e08fa2..bd5897a84d 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -629,49 +629,21 @@ namespace MediaBrowser.Controller.MediaEncoding /// Codec string. public string InferAudioCodec(string container) { - var ext = "." + (container ?? string.Empty); - - if (string.Equals(ext, ".mp3", StringComparison.OrdinalIgnoreCase)) - { - return "mp3"; - } - - if (string.Equals(ext, ".aac", StringComparison.OrdinalIgnoreCase)) + if (string.IsNullOrWhiteSpace(container)) { + // this may not work, but if the client is that broken we can not do anything better return "aac"; } - if (string.Equals(ext, ".wma", StringComparison.OrdinalIgnoreCase)) - { - return "wma"; - } + var inferredCodec = container.ToLowerInvariant(); - if (string.Equals(ext, ".ogg", StringComparison.OrdinalIgnoreCase)) + return inferredCodec switch { - return "vorbis"; - } - - if (string.Equals(ext, ".oga", StringComparison.OrdinalIgnoreCase)) - { - return "vorbis"; - } - - if (string.Equals(ext, ".ogv", StringComparison.OrdinalIgnoreCase)) - { - return "vorbis"; - } - - if (string.Equals(ext, ".webm", StringComparison.OrdinalIgnoreCase)) - { - return "vorbis"; - } - - if (string.Equals(ext, ".webma", StringComparison.OrdinalIgnoreCase)) - { - return "vorbis"; - } - - return "copy"; + "ogg" or "oga" or "ogv" or "webm" or "webma" => "opus", + "m4a" or "m4b" or "mp4" or "mov" or "mkv" or "mka" => "aac", + "ts" or "avi" or "flv" or "f4v" or "swf" => "mp3", + _ => inferredCodec + }; } /// From 12effd4e62e2e511b15010a290581e4088cc2bde Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 18 Oct 2024 11:26:45 +0000 Subject: [PATCH 20/72] Translated using Weblate (Lithuanian) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lt/ --- .../Localization/Core/lt-LT.json | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/lt-LT.json b/Emby.Server.Implementations/Localization/Core/lt-LT.json index 004ce68f58..95f738bd55 100644 --- a/Emby.Server.Implementations/Localization/Core/lt-LT.json +++ b/Emby.Server.Implementations/Localization/Core/lt-LT.json @@ -11,7 +11,7 @@ "Collections": "Kolekcijos", "DeviceOfflineWithName": "{0} buvo atjungtas", "DeviceOnlineWithName": "{0} prisijungęs", - "FailedLoginAttemptWithUserName": "Nesėkmingas prisijungimas iš {0}", + "FailedLoginAttemptWithUserName": "Nesėkmingas {0} bandymas prisijungti", "Favorites": "Mėgstami", "Folders": "Katalogai", "Genres": "Žanrai", @@ -127,6 +127,14 @@ "HearingImpaired": "Su klausos sutrikimais", "TaskRefreshTrickplayImages": "Generuoti Trickplay atvaizdus", "TaskRefreshTrickplayImagesDescription": "Sukuria trickplay peržiūras vaizdo įrašams įgalintose bibliotekose.", - "TaskCleanCollectionsAndPlaylists": "Sutvarko duomenis jūsų kolekcijose ir grojaraščiuose.", - "TaskCleanCollectionsAndPlaylistsDescription": "Pašalina nebeegzistuojančius elementus iš kolekcijų ir grojaraščių." + "TaskCleanCollectionsAndPlaylists": "Sutvarko duomenis jūsų kolekcijose ir grojaraščiuose", + "TaskCleanCollectionsAndPlaylistsDescription": "Pašalina nebeegzistuojančius elementus iš kolekcijų ir grojaraščių.", + "TaskAudioNormalization": "Garso Normalizavimas", + "TaskAudioNormalizationDescription": "Skenuoti garso normalizavimo informacijos failuose.", + "TaskExtractMediaSegments": "Medijos Segmentų Nuskaitymas", + "TaskDownloadMissingLyrics": "Parsisiųsti trūkstamus dainų tekstus", + "TaskExtractMediaSegmentsDescription": "Ištraukia arba gauna medijos segmentus iš MediaSegment ijungtų papildinių.", + "TaskMoveTrickplayImages": "Migruoti Trickplay Vaizdų Vietą", + "TaskMoveTrickplayImagesDescription": "Perkelia egzisuojančius trickplay failus pagal bibliotekos nustatymus.", + "TaskDownloadMissingLyricsDescription": "Parsisiųsti dainų žodžius" } From df06a3739530e4e0f4beeff4ba2fd2b73cb0e5ae Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 19 Oct 2024 08:31:01 -0600 Subject: [PATCH 21/72] Update github/codeql-action action to v3.26.13 (#12820) --- .github/workflows/ci-codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-codeql-analysis.yml b/.github/workflows/ci-codeql-analysis.yml index bc1930648f..7970cb52bc 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@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/init@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/autobuild@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12 + uses: github/codeql-action/analyze@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 From 4cc98114478bea4e56bb4b18fb5775ed30824f8b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 19 Oct 2024 08:45:52 -0600 Subject: [PATCH 22/72] Update dependency AsyncKeyedLock to 7.0.2 (#12812) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 5a85c984c8..181729c772 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,7 +4,7 @@ - + From cbd4e070bf86f7b66564fd8ab1c9fbf4274e7a0d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 19 Oct 2024 08:46:02 -0600 Subject: [PATCH 23/72] Update dependency z440.atl.core to 6.6.0 (#12846) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 181729c772..2e8f654af2 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -80,7 +80,7 @@ - + From df8edaa083232bd0fe45401501186e31d82e9f2e Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Sat, 19 Oct 2024 14:46:13 +0000 Subject: [PATCH 24/72] Fix seeking beyond EOF in HWA transcoding (#12847) --- MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index bd5897a84d..28f0d1fff7 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -2668,6 +2668,7 @@ namespace MediaBrowser.Controller.MediaEncoding public string GetFastSeekCommandLineParameter(EncodingJobInfo state, EncodingOptions options, string segmentContainer) { var time = state.BaseRequest.StartTimeTicks ?? 0; + var maxTime = state.RunTimeTicks ?? 0; var seekParam = string.Empty; if (time > 0) @@ -2678,6 +2679,14 @@ namespace MediaBrowser.Controller.MediaEncoding // This will help subtitle syncing. var isHlsRemuxing = state.IsVideoRequest && state.TranscodingType is TranscodingJobType.Hls && IsCopyCodec(state.OutputVideoCodec); var seekTick = isHlsRemuxing ? time + 5000000L : time; + + // Seeking beyond EOF makes no sense in transcoding. Clamp the seekTick value to + // [0, RuntimeTicks - 0.5s], so that the muxer gets packets and avoid error codes. + if (maxTime > 0) + { + seekTick = Math.Clamp(seekTick, 0, Math.Max(maxTime - 5000000L, 0)); + } + seekParam += string.Format(CultureInfo.InvariantCulture, "-ss {0}", _mediaEncoder.GetTimeParameter(seekTick)); if (state.IsVideoRequest) From 07b38b825a0e4193024fb6844d8d8095a47dfb0a Mon Sep 17 00:00:00 2001 From: AfmanS Date: Sat, 19 Oct 2024 16:28:15 +0000 Subject: [PATCH 25/72] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/ --- Emby.Server.Implementations/Localization/Core/pt-PT.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/pt-PT.json b/Emby.Server.Implementations/Localization/Core/pt-PT.json index 4f7ef3292f..0d0034c505 100644 --- a/Emby.Server.Implementations/Localization/Core/pt-PT.json +++ b/Emby.Server.Implementations/Localization/Core/pt-PT.json @@ -130,5 +130,10 @@ "TaskCleanCollectionsAndPlaylistsDescription": "Remove itens de coleções e listas de reprodução que já não existem.", "TaskCleanCollectionsAndPlaylists": "Limpar coleções e listas de reprodução", "TaskAudioNormalizationDescription": "Analisa os ficheiros para obter dados de normalização de áudio.", - "TaskAudioNormalization": "Normalização de áudio" + "TaskAudioNormalization": "Normalização de áudio", + "TaskExtractMediaSegments": "Analisar segmentos de média", + "TaskDownloadMissingLyrics": "Transferir letra em falta", + "TaskMoveTrickplayImages": "Migrar a localização da imagem do Trickplay", + "TaskDownloadMissingLyricsDescription": "Transferir letra para músicas", + "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de média a partir de plugins habilitados para MediaSegment." } From 0caed5b410a7bbee0eb787340656baaa57c1187e Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Sat, 19 Oct 2024 16:30:45 +0000 Subject: [PATCH 26/72] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/ --- Emby.Server.Implementations/Localization/Core/pt.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/pt.json b/Emby.Server.Implementations/Localization/Core/pt.json index 7e9be76e51..bc520b8549 100644 --- a/Emby.Server.Implementations/Localization/Core/pt.json +++ b/Emby.Server.Implementations/Localization/Core/pt.json @@ -130,8 +130,8 @@ "TaskCleanCollectionsAndPlaylists": "Limpar coleções e listas de reprodução", "TaskAudioNormalizationDescription": "Analisa os ficheiros para obter dados de normalização de áudio.", "TaskAudioNormalization": "Normalização de áudio", - "TaskDownloadMissingLyrics": "Baixar letras faltantes", - "TaskDownloadMissingLyricsDescription": "Baixa letras para músicas", + "TaskDownloadMissingLyrics": "Transferir letra em falta", + "TaskDownloadMissingLyricsDescription": "Transferir letra para músicas", "TaskMoveTrickplayImagesDescription": "Transfere ficheiros de miniatura de vídeo, conforme as definições da biblioteca.", "TaskExtractMediaSegments": "Varrimento de segmentos da média", "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de média de extensões com suporte a MediaSegment.", From b2c8c0d361b6b25f35ed59d546e4021ca02a7a19 Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Sat, 19 Oct 2024 16:31:40 +0000 Subject: [PATCH 27/72] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/ --- Emby.Server.Implementations/Localization/Core/pt-PT.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/pt-PT.json b/Emby.Server.Implementations/Localization/Core/pt-PT.json index 0d0034c505..6f4ec85ae3 100644 --- a/Emby.Server.Implementations/Localization/Core/pt-PT.json +++ b/Emby.Server.Implementations/Localization/Core/pt-PT.json @@ -131,7 +131,7 @@ "TaskCleanCollectionsAndPlaylists": "Limpar coleções e listas de reprodução", "TaskAudioNormalizationDescription": "Analisa os ficheiros para obter dados de normalização de áudio.", "TaskAudioNormalization": "Normalização de áudio", - "TaskExtractMediaSegments": "Analisar segmentos de média", + "TaskExtractMediaSegments": "Analisar segmentos de multimédia", "TaskDownloadMissingLyrics": "Transferir letra em falta", "TaskMoveTrickplayImages": "Migrar a localização da imagem do Trickplay", "TaskDownloadMissingLyricsDescription": "Transferir letra para músicas", From 2e615b003deb9d4af90b9413a6886ebe81501343 Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Sat, 19 Oct 2024 16:33:39 +0000 Subject: [PATCH 28/72] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/ --- .../Localization/Core/pt-PT.json | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/pt-PT.json b/Emby.Server.Implementations/Localization/Core/pt-PT.json index 6f4ec85ae3..ed711b5db3 100644 --- a/Emby.Server.Implementations/Localization/Core/pt-PT.json +++ b/Emby.Server.Implementations/Localization/Core/pt-PT.json @@ -27,8 +27,8 @@ "HeaderRecordingGroups": "Grupos de Gravação", "HomeVideos": "Vídeos Caseiros", "Inherit": "Herdar", - "ItemAddedWithName": "{0} foi adicionado à biblioteca", - "ItemRemovedWithName": "{0} foi removido da biblioteca", + "ItemAddedWithName": "{0} foi adicionado à mediateca", + "ItemRemovedWithName": "{0} foi removido da mediateca", "LabelIpAddressValue": "Endereço IP: {0}", "LabelRunningTimeValue": "Duração: {0}", "Latest": "Mais Recente", @@ -89,37 +89,37 @@ "UserPolicyUpdatedWithName": "Política de utilizador alterada para {0}", "UserStartedPlayingItemWithValues": "{0} está a reproduzir {1} em {2}", "UserStoppedPlayingItemWithValues": "{0} terminou a reprodução de {1} em {2}", - "ValueHasBeenAddedToLibrary": "{0} foi adicionado à sua biblioteca multimédia", + "ValueHasBeenAddedToLibrary": "{0} foi adicionado à sua mediateca", "ValueSpecialEpisodeName": "Especial - {0}", "VersionNumber": "Versão {0}", "TaskDownloadMissingSubtitlesDescription": "Procurar na internet por legendas em falta baseado na configuração de metadados.", - "TaskDownloadMissingSubtitles": "Fazer download de legendas em falta", + "TaskDownloadMissingSubtitles": "Transferir legendas em falta", "TaskRefreshChannelsDescription": "Atualizar informação sobre canais da Internet.", "TaskRefreshChannels": "Atualizar Canais", "TaskCleanTranscodeDescription": "Apagar ficheiros de transcode com mais de um dia.", "TaskCleanTranscode": "Limpar a Diretoria de Transcode", "TaskUpdatePluginsDescription": "Faz o download e instala updates para os plugins que estão configurados para atualizar automaticamente.", "TaskUpdatePlugins": "Atualizar Plugins", - "TaskRefreshPeopleDescription": "Atualizar metadados para atores e diretores na biblioteca.", + "TaskRefreshPeopleDescription": "Atualizar metadados para elenco e equipa técnica da tua mediateca.", "TaskRefreshPeople": "Atualizar Pessoas", "TaskCleanLogsDescription": "Apagar ficheiros de log que têm mais de {0} dias.", "TaskCleanLogs": "Limpar a Diretoria de Logs", - "TaskRefreshLibraryDescription": "Analisar a biblioteca de música para novos ficheiros e atualizar os metadados.", - "TaskRefreshLibrary": "Analisar Biblioteca de Música", + "TaskRefreshLibraryDescription": "Analisar a mediateca para novos ficheiros e atualizar os metadados.", + "TaskRefreshLibrary": "Analisar mediateca", "TaskRefreshChapterImagesDescription": "Criar thumbnails para os vídeos que têm capítulos.", "TaskRefreshChapterImages": "Extrair Imagens dos Capítulos", "TaskCleanCacheDescription": "Apagar ficheiros em cache que já não são necessários.", "TaskCleanCache": "Limpar Cache", "TasksChannelsCategory": "Canais da Internet", "TasksApplicationCategory": "Aplicação", - "TasksLibraryCategory": "Biblioteca", + "TasksLibraryCategory": "Mediateca", "TasksMaintenanceCategory": "Manutenção", "TaskCleanActivityLogDescription": "Apaga as entradas do registo de atividade anteriores à data configurada.", "TaskCleanActivityLog": "Limpar registo de atividade", "Undefined": "Indefinido", "Forced": "Forçado", "Default": "Padrão", - "TaskOptimizeDatabaseDescription": "Base de dados compacta e corta espaço livre. A execução desta tarefa depois de digitalizar a biblioteca ou de fazer outras alterações que impliquem modificações na base de dados pode melhorar o desempenho.", + "TaskOptimizeDatabaseDescription": "Otimiza e liberta espaço livre na base de dados. A execução desta tarefa depois de analisar a mediateca ou efetuar outras alterações que impliquem modificações na base de dados pode melhorar o desempenho.", "TaskOptimizeDatabase": "Otimizar base de dados", "TaskKeyframeExtractorDescription": "Extrai quadros-chave de ficheiros de video para criar listas de reprodução HLS mais precisas. Esta tarefa pode demorar algum tempo.", "TaskKeyframeExtractor": "Extrator de Quadros-chave", @@ -135,5 +135,5 @@ "TaskDownloadMissingLyrics": "Transferir letra em falta", "TaskMoveTrickplayImages": "Migrar a localização da imagem do Trickplay", "TaskDownloadMissingLyricsDescription": "Transferir letra para músicas", - "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de média a partir de plugins habilitados para MediaSegment." + "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de multimédia a partir de plugins com suporte para MediaSegment." } From 1b13273d61c77cac1a5567d182e3edd0cbca0490 Mon Sep 17 00:00:00 2001 From: AfmanS Date: Sat, 19 Oct 2024 16:32:00 +0000 Subject: [PATCH 29/72] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/ --- Emby.Server.Implementations/Localization/Core/pt-PT.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/pt-PT.json b/Emby.Server.Implementations/Localization/Core/pt-PT.json index ed711b5db3..92183c482f 100644 --- a/Emby.Server.Implementations/Localization/Core/pt-PT.json +++ b/Emby.Server.Implementations/Localization/Core/pt-PT.json @@ -135,5 +135,6 @@ "TaskDownloadMissingLyrics": "Transferir letra em falta", "TaskMoveTrickplayImages": "Migrar a localização da imagem do Trickplay", "TaskDownloadMissingLyricsDescription": "Transferir letra para músicas", - "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de multimédia a partir de plugins com suporte para MediaSegment." + "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de multimédia a partir de plugins com suporte para MediaSegment.", + "TaskMoveTrickplayImagesDescription": "Move ficheiros do trickplay de acordo com as configurações da mediateca." } From b3da2ff8f494c91fb19779d64db47fff521a155e Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Sat, 19 Oct 2024 16:31:53 +0000 Subject: [PATCH 30/72] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/ --- .../Localization/Core/pt.json | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/pt.json b/Emby.Server.Implementations/Localization/Core/pt.json index bc520b8549..395fbb6891 100644 --- a/Emby.Server.Implementations/Localization/Core/pt.json +++ b/Emby.Server.Implementations/Localization/Core/pt.json @@ -18,7 +18,7 @@ "Channels": "Canais", "UserDownloadingItemWithValues": "{0} está sendo baixado {1}", "VersionNumber": "Versão {0}", - "ValueHasBeenAddedToLibrary": "{0} foi adicionado à sua biblioteca multimédia", + "ValueHasBeenAddedToLibrary": "{0} foi adicionado à sua mediateca", "UserStoppedPlayingItemWithValues": "{0} terminou a reprodução de {1} em {2}", "UserStartedPlayingItemWithValues": "{0} está reproduzindo {1} em {2}", "UserPolicyUpdatedWithName": "A política do usuário {0} foi alterada", @@ -71,8 +71,8 @@ "Latest": "Mais Recente", "LabelRunningTimeValue": "Duração: {0}", "LabelIpAddressValue": "Endereço de IP: {0}", - "ItemRemovedWithName": "{0} foi removido da biblioteca", - "ItemAddedWithName": "{0} foi adicionado à biblioteca", + "ItemRemovedWithName": "{0} foi removido da mediateca", + "ItemAddedWithName": "{0} foi adicionado à mediateca", "Inherit": "Herdar", "HomeVideos": "Vídeos Caseiros", "HeaderRecordingGroups": "Grupos de Gravação", @@ -93,33 +93,33 @@ "AppDeviceValues": "Aplicação: {0}, Dispositivo: {1}", "TaskCleanCache": "Limpar Diretório de Cache", "TasksApplicationCategory": "Aplicação", - "TasksLibraryCategory": "Biblioteca", + "TasksLibraryCategory": "Mediateca", "TasksMaintenanceCategory": "Manutenção", "TaskRefreshChannels": "Atualizar Canais", "TaskUpdatePlugins": "Atualizar Plugins", "TaskCleanLogsDescription": "Deletar arquivos de log que existe a mais de {0} dias.", "TaskCleanLogs": "Limpar diretório de logs", - "TaskRefreshLibrary": "Escanear biblioteca de mídias", + "TaskRefreshLibrary": "Analisar mediateca", "TaskRefreshChapterImagesDescription": "Cria miniaturas para vídeos que têm capítulos.", "TaskCleanCacheDescription": "Apaga ficheiros em cache que já não são usados pelo sistema.", "TasksChannelsCategory": "Canais de Internet", "TaskRefreshChapterImages": "Extrair Imagens do Capítulo", "TaskDownloadMissingSubtitlesDescription": "Pesquisa na Internet as legendas em falta com base na configuração de metadados.", - "TaskDownloadMissingSubtitles": "Download das legendas em falta", + "TaskDownloadMissingSubtitles": "Transferir legendas em falta", "TaskRefreshChannelsDescription": "Atualiza as informações do canal da Internet.", "TaskCleanTranscodeDescription": "Apagar os ficheiros com mais de um dia, de Transcode.", "TaskCleanTranscode": "Limpar o diretório de Transcode", "TaskUpdatePluginsDescription": "Baixa e instala as atualizações para plug-ins configurados para atualização automática.", - "TaskRefreshPeopleDescription": "Atualiza os metadados para atores e diretores na tua biblioteca de media.", + "TaskRefreshPeopleDescription": "Atualizar metadados para elenco e equipa técnica da tua mediateca.", "TaskRefreshPeople": "Atualizar pessoas", - "TaskRefreshLibraryDescription": "Pesquisa sua biblioteca de media por novos arquivos e atualiza os metadados.", + "TaskRefreshLibraryDescription": "Analisar a mediateca para novos ficheiros e atualizar os metadados.", "TaskCleanActivityLog": "Limpar registro de atividade", "Undefined": "Indefinido", "Forced": "Forçado", "Default": "Predefinição", "TaskCleanActivityLogDescription": "Apaga itens no registro com idade acima do que é configurado.", "TaskOptimizeDatabase": "Otimizar base de dados", - "TaskOptimizeDatabaseDescription": "Base de dados compacta e corta espaço livre. A execução desta tarefa depois de digitalizar a biblioteca ou de fazer outras alterações que impliquem modificações na base de dados pode melhorar o desempenho.", + "TaskOptimizeDatabaseDescription": "Otimiza e liberta espaço livre na base de dados. A execução desta tarefa depois de analisar a mediateca ou efetuar outras alterações que impliquem modificações na base de dados pode melhorar o desempenho.", "External": "Externo", "HearingImpaired": "Problemas auditivos", "TaskKeyframeExtractor": "Extrator de quadro-chave", @@ -133,7 +133,7 @@ "TaskDownloadMissingLyrics": "Transferir letra em falta", "TaskDownloadMissingLyricsDescription": "Transferir letra para músicas", "TaskMoveTrickplayImagesDescription": "Transfere ficheiros de miniatura de vídeo, conforme as definições da biblioteca.", - "TaskExtractMediaSegments": "Varrimento de segmentos da média", - "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de média de extensões com suporte a MediaSegment.", - "TaskMoveTrickplayImages": "Migração de miniaturas de vídeo" + "TaskExtractMediaSegments": "Analisar segmentos de multimédia", + "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de multimédia a partir de plugins com suporte para MediaSegment.", + "TaskMoveTrickplayImages": "Migrar a localização da imagem do Trickplay" } From 48f9b96029bd8a98971e6aaf34018c6d8ccf9108 Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Sat, 19 Oct 2024 17:19:07 +0000 Subject: [PATCH 31/72] Translated using Weblate (Portuguese (Portugal)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/ --- Emby.Server.Implementations/Localization/Core/pt-PT.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/pt-PT.json b/Emby.Server.Implementations/Localization/Core/pt-PT.json index 92183c482f..879bf64b0c 100644 --- a/Emby.Server.Implementations/Localization/Core/pt-PT.json +++ b/Emby.Server.Implementations/Localization/Core/pt-PT.json @@ -8,7 +8,7 @@ "CameraImageUploadedFrom": "Uma nova imagem de câmara foi enviada a partir de {0}", "Channels": "Canais", "ChapterNameValue": "Capítulo {0}", - "Collections": "Colecções", + "Collections": "Coleções", "DeviceOfflineWithName": "{0} desligou-se", "DeviceOnlineWithName": "{0} ligou-se", "FailedLoginAttemptWithUserName": "Tentativa de login falhada a partir de {0}", @@ -136,5 +136,5 @@ "TaskMoveTrickplayImages": "Migrar a localização da imagem do Trickplay", "TaskDownloadMissingLyricsDescription": "Transferir letra para músicas", "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de multimédia a partir de plugins com suporte para MediaSegment.", - "TaskMoveTrickplayImagesDescription": "Move ficheiros do trickplay de acordo com as configurações da mediateca." + "TaskMoveTrickplayImagesDescription": "Move os ficheiros trickplay existentes de acordo com as definições da mediateca." } From 31382b232d23e7ba8a69359d73b0034d7c66e2f9 Mon Sep 17 00:00:00 2001 From: Blackspirits Date: Sat, 19 Oct 2024 17:01:10 +0000 Subject: [PATCH 32/72] Translated using Weblate (Portuguese) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/ --- Emby.Server.Implementations/Localization/Core/pt.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/pt.json b/Emby.Server.Implementations/Localization/Core/pt.json index 395fbb6891..2812832cae 100644 --- a/Emby.Server.Implementations/Localization/Core/pt.json +++ b/Emby.Server.Implementations/Localization/Core/pt.json @@ -132,7 +132,7 @@ "TaskAudioNormalization": "Normalização de áudio", "TaskDownloadMissingLyrics": "Transferir letra em falta", "TaskDownloadMissingLyricsDescription": "Transferir letra para músicas", - "TaskMoveTrickplayImagesDescription": "Transfere ficheiros de miniatura de vídeo, conforme as definições da biblioteca.", + "TaskMoveTrickplayImagesDescription": "Move os ficheiros trickplay existentes de acordo com as definições da mediateca.", "TaskExtractMediaSegments": "Analisar segmentos de multimédia", "TaskExtractMediaSegmentsDescription": "Extrai ou obtém segmentos de multimédia a partir de plugins com suporte para MediaSegment.", "TaskMoveTrickplayImages": "Migrar a localização da imagem do Trickplay" From 5b696124fc24e183aa62e5132cfba640791e210c Mon Sep 17 00:00:00 2001 From: JPVenson Date: Mon, 21 Oct 2024 05:27:18 +0200 Subject: [PATCH 33/72] Add catch to remove cached user if creation fails (#12574) --- Jellyfin.Server.Implementations/Users/UserManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jellyfin.Server.Implementations/Users/UserManager.cs b/Jellyfin.Server.Implementations/Users/UserManager.cs index eb4bc2aff7..1b6635938b 100644 --- a/Jellyfin.Server.Implementations/Users/UserManager.cs +++ b/Jellyfin.Server.Implementations/Users/UserManager.cs @@ -201,8 +201,6 @@ namespace Jellyfin.Server.Implementations.Users user.AddDefaultPermissions(); user.AddDefaultPreferences(); - _users.Add(user.Id, user); - return user; } @@ -227,6 +225,7 @@ namespace Jellyfin.Server.Implementations.Users dbContext.Users.Add(newUser); await dbContext.SaveChangesAsync().ConfigureAwait(false); + _users.Add(newUser.Id, newUser); } await _eventManager.PublishAsync(new UserCreatedEventArgs(newUser)).ConfigureAwait(false); @@ -560,6 +559,7 @@ namespace Jellyfin.Server.Implementations.Users dbContext.Users.Add(newUser); await dbContext.SaveChangesAsync().ConfigureAwait(false); + _users.Add(newUser.Id, newUser); } } From 88fb668cc564fe18a1b7853b6712564cb94d19e3 Mon Sep 17 00:00:00 2001 From: JPVenson Date: Mon, 21 Oct 2024 05:27:27 +0200 Subject: [PATCH 34/72] Added Unittest to check for unapplied model changes (#12854) --- .../EfMigrations/EfMigrationTests.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 tests/Jellyfin.Server.Implementations.Tests/EfMigrations/EfMigrationTests.cs diff --git a/tests/Jellyfin.Server.Implementations.Tests/EfMigrations/EfMigrationTests.cs b/tests/Jellyfin.Server.Implementations.Tests/EfMigrations/EfMigrationTests.cs new file mode 100644 index 0000000000..e6ccae1830 --- /dev/null +++ b/tests/Jellyfin.Server.Implementations.Tests/EfMigrations/EfMigrationTests.cs @@ -0,0 +1,18 @@ +using System; +using System.Threading.Tasks; +using Jellyfin.Server.Implementations.Migrations; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace Jellyfin.Server.Implementations.Tests.EfMigrations; + +public class EfMigrationTests +{ + [Fact] + public void CheckForUnappliedMigrations() + { + var dbDesignContext = new DesignTimeJellyfinDbFactory(); + var context = dbDesignContext.CreateDbContext([]); + Assert.False(context.Database.HasPendingModelChanges(), "There are unapplied changes to the EfCore model. Please create a Migration."); + } +} From 5cc49d25c4bd224ff453012828b502d3bde31696 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 17:13:53 +0000 Subject: [PATCH 35/72] Update github/codeql-action action to v3.27.0 --- .github/workflows/ci-codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-codeql-analysis.yml b/.github/workflows/ci-codeql-analysis.yml index 7970cb52bc..6ec21dc840 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@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 + uses: github/codeql-action/init@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 + uses: github/codeql-action/autobuild@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13 + uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 From bd78a36db88306ef1da4f573bba7f197d26ad462 Mon Sep 17 00:00:00 2001 From: nicito Date: Tue, 22 Oct 2024 14:17:44 +0000 Subject: [PATCH 36/72] Translated using Weblate (Bulgarian) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/ --- Emby.Server.Implementations/Localization/Core/bg-BG.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/bg-BG.json b/Emby.Server.Implementations/Localization/Core/bg-BG.json index 3810e8b34d..4f95b48803 100644 --- a/Emby.Server.Implementations/Localization/Core/bg-BG.json +++ b/Emby.Server.Implementations/Localization/Core/bg-BG.json @@ -126,5 +126,11 @@ "External": "Външен", "HearingImpaired": "Увреден слух", "TaskRefreshTrickplayImages": "Генерирай изображение", - "TaskRefreshTrickplayImagesDescription": "Създава прегледи на Trickplay за видеа в активирани библиотеки." + "TaskRefreshTrickplayImagesDescription": "Създава прегледи на Trickplay за видеа в активирани библиотеки.", + "TaskDownloadMissingLyrics": "Свали липсващи текстове", + "TaskDownloadMissingLyricsDescription": "Свали текстове за песни", + "TaskCleanCollectionsAndPlaylists": "Изчисти колекциите и плейлистовете", + "TaskCleanCollectionsAndPlaylistsDescription": "Премахни несъществуващи файлове в колекциите и плейлистите.", + "TaskAudioNormalization": "Нормализиране на звука", + "TaskAudioNormalizationDescription": "Сканирай файловете за нормализация на звука." } From f9ad453317ab40ce9f43d6980b41d215ce03528c Mon Sep 17 00:00:00 2001 From: Bas <44002186+854562@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:53:48 +0000 Subject: [PATCH 37/72] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/ --- Emby.Server.Implementations/Localization/Core/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/nl.json b/Emby.Server.Implementations/Localization/Core/nl.json index 8fd44da725..2327a73a99 100644 --- a/Emby.Server.Implementations/Localization/Core/nl.json +++ b/Emby.Server.Implementations/Localization/Core/nl.json @@ -23,7 +23,7 @@ "HeaderFavoriteShows": "Favoriete series", "HeaderFavoriteSongs": "Favoriete nummers", "HeaderLiveTV": "Live-tv", - "HeaderNextUp": "Volgende", + "HeaderNextUp": "Als volgende", "HeaderRecordingGroups": "Opnamegroepen", "HomeVideos": "Homevideo's", "Inherit": "Erven", From abd6649e5d55ea0a582f4c3042466b352d5998d0 Mon Sep 17 00:00:00 2001 From: fract exe Date: Wed, 23 Oct 2024 10:52:16 +0000 Subject: [PATCH 38/72] Translated using Weblate (Croatian) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hr/ --- Emby.Server.Implementations/Localization/Core/hr.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/hr.json b/Emby.Server.Implementations/Localization/Core/hr.json index a7dabaa19f..d5ab7fa095 100644 --- a/Emby.Server.Implementations/Localization/Core/hr.json +++ b/Emby.Server.Implementations/Localization/Core/hr.json @@ -130,5 +130,11 @@ "TaskAudioNormalization": "Normalizacija zvuka", "TaskAudioNormalizationDescription": "Skenira datoteke u potrazi za podacima o normalizaciji zvuka.", "TaskCleanCollectionsAndPlaylistsDescription": "Uklanja stavke iz zbirki i popisa za reprodukciju koje više ne postoje.", - "TaskCleanCollectionsAndPlaylists": "Očisti zbirke i popise za reprodukciju" + "TaskCleanCollectionsAndPlaylists": "Očisti zbirke i popise za reprodukciju", + "TaskExtractMediaSegments": "Skeniranje dijelova medija", + "TaskDownloadMissingLyrics": "Preuzmi tekstove koji nedostaju", + "TaskDownloadMissingLyricsDescription": "Preuzmi tekstove pjesama", + "TaskExtractMediaSegmentsDescription": "Izvlači ili pribavlja dijelove medija iz omogućenih media pluginova.", + "TaskMoveTrickplayImages": "Preseli lokaciju Trickplay slika", + "TaskMoveTrickplayImagesDescription": "Preseli lokaciju Trickplay slika prema postavkama zbirke." } From fd411cda182b6d99d67d6a8d60c2f5e0d12bf0b6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 12:51:35 -0600 Subject: [PATCH 39/72] Update CI dependencies (#12869) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci-codeql-analysis.yml | 4 ++-- .github/workflows/ci-compat.yml | 4 ++-- .github/workflows/ci-openapi.yml | 8 ++++---- .github/workflows/ci-tests.yml | 4 ++-- .github/workflows/commands.yml | 8 ++++---- .github/workflows/issue-template-check.yml | 4 ++-- .github/workflows/release-bump-version.yaml | 4 ++-- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci-codeql-analysis.yml b/.github/workflows/ci-codeql-analysis.yml index 6ec21dc840..1c55437a45 100644 --- a/.github/workflows/ci-codeql-analysis.yml +++ b/.github/workflows/ci-codeql-analysis.yml @@ -20,9 +20,9 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup .NET - uses: actions/setup-dotnet@6bd8b7f7774af54e05809fcc5431931b3eb1ddee # v4.0.1 + uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0 with: dotnet-version: '8.0.x' diff --git a/.github/workflows/ci-compat.yml b/.github/workflows/ci-compat.yml index 3dde5f21fb..c9d9f84493 100644 --- a/.github/workflows/ci-compat.yml +++ b/.github/workflows/ci-compat.yml @@ -11,7 +11,7 @@ jobs: permissions: read-all steps: - name: Checkout repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event.pull_request.head.sha }} repository: ${{ github.event.pull_request.head.repo.full_name }} @@ -35,7 +35,7 @@ jobs: permissions: read-all steps: - name: Checkout repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event.pull_request.head.sha }} repository: ${{ github.event.pull_request.head.repo.full_name }} diff --git a/.github/workflows/ci-openapi.yml b/.github/workflows/ci-openapi.yml index 399c0085b4..4633461ad7 100644 --- a/.github/workflows/ci-openapi.yml +++ b/.github/workflows/ci-openapi.yml @@ -16,12 +16,12 @@ jobs: permissions: read-all steps: - name: Checkout repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event.pull_request.head.sha }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Setup .NET - uses: actions/setup-dotnet@6bd8b7f7774af54e05809fcc5431931b3eb1ddee # v4.0.1 + uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0 with: dotnet-version: '8.0.x' - name: Generate openapi.json @@ -41,7 +41,7 @@ jobs: permissions: read-all steps: - name: Checkout repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event.pull_request.head.sha }} repository: ${{ github.event.pull_request.head.repo.full_name }} @@ -55,7 +55,7 @@ jobs: ANCESTOR_REF=$(git merge-base upstream/${{ github.base_ref }} origin/$HEAD_REF) git checkout --progress --force $ANCESTOR_REF - name: Setup .NET - uses: actions/setup-dotnet@6bd8b7f7774af54e05809fcc5431931b3eb1ddee # v4.0.1 + uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0 with: dotnet-version: '8.0.x' - name: Generate openapi.json diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 6c9740a851..54fb762e6b 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -19,9 +19,9 @@ jobs: runs-on: "${{ matrix.os }}" steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-dotnet@6bd8b7f7774af54e05809fcc5431931b3eb1ddee # v4.0.1 + - uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0 with: dotnet-version: ${{ env.SDK_VERSION }} diff --git a/.github/workflows/commands.yml b/.github/workflows/commands.yml index 446483fc1c..26b98f973d 100644 --- a/.github/workflows/commands.yml +++ b/.github/workflows/commands.yml @@ -24,7 +24,7 @@ jobs: reactions: '+1' - name: Checkout the latest code - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: token: ${{ secrets.JF_BOT_TOKEN }} fetch-depth: 0 @@ -51,7 +51,7 @@ jobs: reactions: eyes - name: Checkout the latest code - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: token: ${{ secrets.JF_BOT_TOKEN }} fetch-depth: 0 @@ -128,11 +128,11 @@ jobs: runs-on: ubuntu-latest steps: - name: pull in script - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: jellyfin/jellyfin-triage-script - name: install python - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: python-version: '3.12' cache: 'pip' diff --git a/.github/workflows/issue-template-check.yml b/.github/workflows/issue-template-check.yml index 04aa66edb8..b72e552af0 100644 --- a/.github/workflows/issue-template-check.yml +++ b/.github/workflows/issue-template-check.yml @@ -10,11 +10,11 @@ jobs: issues: write steps: - name: pull in script - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: jellyfin/jellyfin-triage-script - name: install python - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: python-version: '3.12' cache: 'pip' diff --git a/.github/workflows/release-bump-version.yaml b/.github/workflows/release-bump-version.yaml index e0ab4f1396..0da9c44f89 100644 --- a/.github/workflows/release-bump-version.yaml +++ b/.github/workflows/release-bump-version.yaml @@ -33,7 +33,7 @@ jobs: yq-version: v4.9.8 - name: Checkout Repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ env.TAG_BRANCH }} @@ -66,7 +66,7 @@ jobs: NEXT_VERSION: ${{ github.event.inputs.NEXT_VERSION }} steps: - name: Checkout Repository - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ env.TAG_BRANCH }} From 87c8feed4a31c73f66c7a67a7a6dfb5509a4e0d2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 12:51:43 -0600 Subject: [PATCH 40/72] Update dependency Serilog.Sinks.Async to 2.1.0 (#12870) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 2e8f654af2..5aadeb2541 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -60,7 +60,7 @@ - + From 3ceb8337e7c98fef47bd68753fbdf3b6ab9ecf5a Mon Sep 17 00:00:00 2001 From: Nyanmisaka Date: Sat, 26 Oct 2024 02:52:27 +0800 Subject: [PATCH 41/72] Fix check for format option in scale_cuda filter (#12874) --- MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs b/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs index b49fbf2aba..23d9ca7ef5 100644 --- a/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs +++ b/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs @@ -150,7 +150,7 @@ namespace MediaBrowser.MediaEncoding.Encoder private static readonly Dictionary _filterOptionsDict = new Dictionary { - { 0, new string[] { "scale_cuda", "Output format (default \"same\")" } }, + { 0, new string[] { "scale_cuda", "format" } }, { 1, new string[] { "tonemap_cuda", "GPU accelerated HDR to SDR tonemapping" } }, { 2, new string[] { "tonemap_opencl", "bt2390" } }, { 3, new string[] { "overlay_opencl", "Action to take when encountering EOF from secondary input" } }, From 61861b1904006992b0d30fd753e695ffd087123d Mon Sep 17 00:00:00 2001 From: Rafael Morine Date: Fri, 25 Oct 2024 10:46:26 +0000 Subject: [PATCH 42/72] Translated using Weblate (Russian) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/ --- Emby.Server.Implementations/Localization/Core/ru.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/ru.json b/Emby.Server.Implementations/Localization/Core/ru.json index 01b8bfbe24..856ccb1ed9 100644 --- a/Emby.Server.Implementations/Localization/Core/ru.json +++ b/Emby.Server.Implementations/Localization/Core/ru.json @@ -132,5 +132,9 @@ "TaskAudioNormalization": "Нормализация звука", "TaskAudioNormalizationDescription": "Сканирует файлы на наличие данных о нормализации звука.", "TaskDownloadMissingLyrics": "Загрузить недостающий текст", - "TaskDownloadMissingLyricsDescription": "Загружает текст песен" + "TaskDownloadMissingLyricsDescription": "Загружает текст песен", + "TaskMoveTrickplayImages": "Перенесение местоположения изображений Trickplay", + "TaskExtractMediaSegments": "Сканирование медиасегментов", + "TaskExtractMediaSegmentsDescription": "Извлекает или получает медиасегменты из плагинов MediaSegment.", + "TaskMoveTrickplayImagesDescription": "Перемещает существующие файлы trickplay в соответствии с настройками медиатеки." } From a0c634a6edcebdf0ee1ed28fc51dfefaab8b9392 Mon Sep 17 00:00:00 2001 From: Jellyfin Release Bot Date: Sat, 26 Oct 2024 13:32:51 -0400 Subject: [PATCH 43/72] Bump version to 10.11.0 --- Emby.Naming/Emby.Naming.csproj | 2 +- Jellyfin.Data/Jellyfin.Data.csproj | 2 +- MediaBrowser.Common/MediaBrowser.Common.csproj | 2 +- MediaBrowser.Controller/MediaBrowser.Controller.csproj | 2 +- MediaBrowser.Model/MediaBrowser.Model.csproj | 2 +- SharedVersion.cs | 4 ++-- src/Jellyfin.Extensions/Jellyfin.Extensions.csproj | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Emby.Naming/Emby.Naming.csproj b/Emby.Naming/Emby.Naming.csproj index 7eb131575d..53b297b068 100644 --- a/Emby.Naming/Emby.Naming.csproj +++ b/Emby.Naming/Emby.Naming.csproj @@ -36,7 +36,7 @@ Jellyfin Contributors Jellyfin.Naming - 10.10.0 + 10.11.0 https://github.com/jellyfin/jellyfin GPL-3.0-only diff --git a/Jellyfin.Data/Jellyfin.Data.csproj b/Jellyfin.Data/Jellyfin.Data.csproj index e24e37740d..0c17d71e79 100644 --- a/Jellyfin.Data/Jellyfin.Data.csproj +++ b/Jellyfin.Data/Jellyfin.Data.csproj @@ -18,7 +18,7 @@ Jellyfin Contributors Jellyfin.Data - 10.10.0 + 10.11.0 https://github.com/jellyfin/jellyfin GPL-3.0-only diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj index c1945bf931..51787d6a05 100644 --- a/MediaBrowser.Common/MediaBrowser.Common.csproj +++ b/MediaBrowser.Common/MediaBrowser.Common.csproj @@ -8,7 +8,7 @@ Jellyfin Contributors Jellyfin.Common - 10.10.0 + 10.11.0 https://github.com/jellyfin/jellyfin GPL-3.0-only diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 1ef2eb343d..62f36bf28a 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -8,7 +8,7 @@ Jellyfin Contributors Jellyfin.Controller - 10.10.0 + 10.11.0 https://github.com/jellyfin/jellyfin GPL-3.0-only diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 9489fe1905..a3a575c0f4 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -8,7 +8,7 @@ Jellyfin Contributors Jellyfin.Model - 10.10.0 + 10.11.0 https://github.com/jellyfin/jellyfin GPL-3.0-only diff --git a/SharedVersion.cs b/SharedVersion.cs index f98cfbc74e..d26eb31aec 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("10.10.0")] -[assembly: AssemblyFileVersion("10.10.0")] +[assembly: AssemblyVersion("10.11.0")] +[assembly: AssemblyFileVersion("10.11.0")] diff --git a/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj b/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj index f786cc3b40..1a42679fce 100644 --- a/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj +++ b/src/Jellyfin.Extensions/Jellyfin.Extensions.csproj @@ -15,7 +15,7 @@ Jellyfin Contributors Jellyfin.Extensions - 10.10.0 + 10.11.0 https://github.com/jellyfin/jellyfin GPL-3.0-only From 6b135ea209a2e498dcb177be9b8ccafb70319ea2 Mon Sep 17 00:00:00 2001 From: Hadrien Patte Date: Sat, 26 Oct 2024 21:19:46 +0200 Subject: [PATCH 44/72] Update issue template version from 10.9.11 to 10.10.0 --- .github/ISSUE_TEMPLATE/issue report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/issue report.yml b/.github/ISSUE_TEMPLATE/issue report.yml index b522412088..9181a1e7da 100644 --- a/.github/ISSUE_TEMPLATE/issue report.yml +++ b/.github/ISSUE_TEMPLATE/issue report.yml @@ -86,7 +86,7 @@ body: label: Jellyfin Server version description: What version of Jellyfin are you using? options: - - 10.9.11+ + - 10.10.0+ - Master - Unstable - Older* From 9d676f88363598f4286b1579b05690af8fdf13f9 Mon Sep 17 00:00:00 2001 From: Hadrien Patte Date: Sun, 27 Oct 2024 18:58:20 +0100 Subject: [PATCH 45/72] Auto update issue template version on new release --- bump_version | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bump_version b/bump_version index 72bbbfbf51..6d08dc72fe 100755 --- a/bump_version +++ b/bump_version @@ -28,6 +28,7 @@ jellyfin_subprojects=( Emby.Naming/Emby.Naming.csproj src/Jellyfin.Extensions/Jellyfin.Extensions.csproj ) +issue_template_file="./.github/ISSUE_TEMPLATE/issue report.yml" new_version="$1" new_version_sed="$( cut -f1 -d'-' <<<"${new_version}" )" @@ -56,6 +57,9 @@ for subproject in ${jellyfin_subprojects[@]}; do sed -i "s|${old_version}|${new_version_sed}|g" ${subproject} done +# Set the version in the GitHub issue template file +sed -i "s|${old_version}|${new_version_sed}|g" ${issue_template_file} + # Stage the changed files for commit git add . git status -v From 6392970066f2b0279447db40c3fe759fc90155de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Palm=C3=B8?= Date: Sun, 27 Oct 2024 12:31:27 +0000 Subject: [PATCH 46/72] Translated using Weblate (Danish) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/da/ --- .../Localization/Core/da.json | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/da.json b/Emby.Server.Implementations/Localization/Core/da.json index 121a0eba8f..c17fbc4141 100644 --- a/Emby.Server.Implementations/Localization/Core/da.json +++ b/Emby.Server.Implementations/Localization/Core/da.json @@ -72,7 +72,7 @@ "ServerNameNeedsToBeRestarted": "{0} skal genstartes", "Shows": "Serier", "Songs": "Sange", - "StartupEmbyServerIsLoading": "Jellyfin Server er i gang med at starte. Forsøg igen om et øjeblik.", + "StartupEmbyServerIsLoading": "Jellyfin er i gang med at starte. Prøv igen om et øjeblik.", "SubtitleDownloadFailureForItem": "Fejlet i download af undertekster for {0}", "SubtitleDownloadFailureFromForItem": "Undertekster kunne ikke hentes fra {0} til {1}", "Sync": "Synkroniser", @@ -93,13 +93,13 @@ "ValueSpecialEpisodeName": "Special - {0}", "VersionNumber": "Version {0}", "TaskDownloadMissingSubtitlesDescription": "Søger på internettet efter manglende undertekster baseret på metadata-konfigurationen.", - "TaskDownloadMissingSubtitles": "Hentede medie mangler undertekster", + "TaskDownloadMissingSubtitles": "Hent manglende undertekster", "TaskUpdatePluginsDescription": "Henter og installerer opdateringer for plugins, som er konfigurerede til at blive opdateret automatisk.", - "TaskUpdatePlugins": "Opdater Plugins", + "TaskUpdatePlugins": "Opdater plugins", "TaskCleanLogsDescription": "Sletter log-filer som er mere end {0} dage gamle.", - "TaskCleanLogs": "Ryd Log-mappe", + "TaskCleanLogs": "Ryd log-mappe", "TaskRefreshLibraryDescription": "Scanner dit mediebibliotek for nye filer og opdateret metadata.", - "TaskRefreshLibrary": "Scan Mediebibliotek", + "TaskRefreshLibrary": "Scan mediebibliotek", "TaskCleanCacheDescription": "Sletter cache-filer som systemet ikke længere bruger.", "TaskCleanCache": "Ryd cache-mappe", "TasksChannelsCategory": "Internetkanaler", @@ -108,33 +108,33 @@ "TasksMaintenanceCategory": "Vedligeholdelse", "TaskRefreshChapterImages": "Udtræk kapitelbilleder", "TaskRefreshChapterImagesDescription": "Laver miniaturebilleder for videoer, der har kapitler.", - "TaskRefreshChannelsDescription": "Opdaterer information for internetkanal.", - "TaskRefreshChannels": "Opdater Kanaler", - "TaskCleanTranscodeDescription": "Fjerner transcode-filer, som er mere end 1 dag gammel.", - "TaskCleanTranscode": "Tøm Transcode-mappen", - "TaskRefreshPeople": "Opdater Personer", + "TaskRefreshChannelsDescription": "Opdaterer information for internetkanaler.", + "TaskRefreshChannels": "Opdater kanaler", + "TaskCleanTranscodeDescription": "Fjerner omkodningsfiler, som er mere end 1 dag gamle.", + "TaskCleanTranscode": "Tøm omkodningsmappen", + "TaskRefreshPeople": "Opdater personer", "TaskRefreshPeopleDescription": "Opdaterer metadata for skuespillere og instruktører i dit mediebibliotek.", "TaskCleanActivityLogDescription": "Sletter linjer i aktivitetsloggen ældre end den konfigurerede alder.", - "TaskCleanActivityLog": "Ryd Aktivitetslog", + "TaskCleanActivityLog": "Ryd aktivitetslog", "Undefined": "Udefineret", "Forced": "Tvunget", "Default": "Standard", - "TaskOptimizeDatabaseDescription": "Komprimerer databasen og frigør plads. Denne handling køres efter at have scannet mediebiblioteket, eller efter at have lavet ændringer til databasen, for at højne ydeevnen.", - "TaskOptimizeDatabase": "Optimér database", - "TaskKeyframeExtractorDescription": "Udtrækker billeder fra videofiler for at lave mere præcise HLS-playlister. Denne opgave kan tage lang tid.", - "TaskKeyframeExtractor": "Udtræk af nøglebillede", + "TaskOptimizeDatabaseDescription": "Komprimerer databasen for at frigøre plads. Denne handling køres efter at have scannet mediebiblioteket, eller efter at have lavet ændringer til databasen.", + "TaskOptimizeDatabase": "Optimer database", + "TaskKeyframeExtractorDescription": "Udtrækker rammer fra videofiler for at lave mere præcise HLS-playlister. Denne opgave kan tage lang tid.", + "TaskKeyframeExtractor": "Udtræk nøglerammer", "External": "Ekstern", "HearingImpaired": "Hørehæmmet", - "TaskRefreshTrickplayImages": "Generér Trickplay Billeder", - "TaskRefreshTrickplayImagesDescription": "Laver trickplay forhåndsvisninger for videoer i aktiverede biblioteker.", + "TaskRefreshTrickplayImages": "Generer trickplay-billeder", + "TaskRefreshTrickplayImagesDescription": "Laver trickplay-billeder for videoer i aktiverede biblioteker.", "TaskCleanCollectionsAndPlaylists": "Ryd op i samlinger og afspilningslister", "TaskCleanCollectionsAndPlaylistsDescription": "Fjerner elementer fra samlinger og afspilningslister der ikke eksisterer længere.", - "TaskAudioNormalizationDescription": "Skanner filer for data vedrørende audio-normalisering.", - "TaskAudioNormalization": "Audio-normalisering", - "TaskDownloadMissingLyricsDescription": "Hentede sange mangler sangtekster", - "TaskDownloadMissingLyrics": "Hentede medie mangler sangtekster", - "TaskExtractMediaSegments": "Scan mediesegment", - "TaskMoveTrickplayImages": "Migrer billedelokation for Trickplay", - "TaskMoveTrickplayImagesDescription": "Flyt eksisterende trickplay-filer jævnfør biblioteksindstillilnger.", - "TaskExtractMediaSegmentsDescription": "Ekstraherer eller henter mediesegmenter fra plugins som understøtter MediaSegment." + "TaskAudioNormalizationDescription": "Skanner filer for data vedrørende lydnormalisering.", + "TaskAudioNormalization": "Lydnormalisering", + "TaskDownloadMissingLyricsDescription": "Søger på internettet efter manglende sangtekster baseret på metadata-konfigurationen", + "TaskDownloadMissingLyrics": "Hent manglende sangtekster", + "TaskExtractMediaSegments": "Scan for mediesegmenter", + "TaskMoveTrickplayImages": "Migrer billedelokationer for trickplay-billeder", + "TaskMoveTrickplayImagesDescription": "Flyt eksisterende trickplay-billeder jævnfør biblioteksindstillinger.", + "TaskExtractMediaSegmentsDescription": "Udtrækker eller henter mediesegmenter fra plugins som understøtter MediaSegment." } From 12db844d14aafa1b6e02606bc7ce22af9c07b35a Mon Sep 17 00:00:00 2001 From: Spiros Vita Date: Sun, 27 Oct 2024 17:04:47 +0000 Subject: [PATCH 47/72] Translated using Weblate (Greek) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/ --- Emby.Server.Implementations/Localization/Core/el.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/el.json b/Emby.Server.Implementations/Localization/Core/el.json index 056a2e4755..55f266032e 100644 --- a/Emby.Server.Implementations/Localization/Core/el.json +++ b/Emby.Server.Implementations/Localization/Core/el.json @@ -130,5 +130,11 @@ "TaskAudioNormalization": "Ομοιομορφία ήχου", "TaskAudioNormalizationDescription": "Ανίχνευση αρχείων για δεδομένα ομοιομορφίας ήχου.", "TaskCleanCollectionsAndPlaylists": "Καθαρισμός συλλογών και λιστών αναπαραγωγής", - "TaskCleanCollectionsAndPlaylistsDescription": "Αφαιρούνται στοιχεία από τις συλλογές και τις λίστες αναπαραγωγής που δεν υπάρχουν πλέον." + "TaskCleanCollectionsAndPlaylistsDescription": "Αφαιρούνται στοιχεία από τις συλλογές και τις λίστες αναπαραγωγής που δεν υπάρχουν πλέον.", + "TaskMoveTrickplayImages": "Αλλαγή τοποθεσίας εικόνων Trickplay", + "TaskDownloadMissingLyrics": "Λήψη στίχων που λείπουν", + "TaskMoveTrickplayImagesDescription": "Μετακινεί τα υπάρχοντα αρχεία trickplay σύμφωνα με τις ρυθμίσεις της βιβλιοθήκης.", + "TaskDownloadMissingLyricsDescription": "Κατεβάζει στίχους για τραγούδια", + "TaskExtractMediaSegments": "Σάρωση τμημάτων πολυμέσων", + "TaskExtractMediaSegmentsDescription": "Εξάγει ή βρίσκει τμήματα πολυμέσων από επεκτάσεις που χρησιμοποιούν το MediaSegment." } From 0bce3500fbb8a286eab13a2f96ebbeb8d0fe96de Mon Sep 17 00:00:00 2001 From: akshay Date: Sun, 27 Oct 2024 11:03:36 +0000 Subject: [PATCH 48/72] Translated using Weblate (Hindi) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hi/ --- Emby.Server.Implementations/Localization/Core/hi.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/hi.json b/Emby.Server.Implementations/Localization/Core/hi.json index 380c08e0d2..813b18ad4b 100644 --- a/Emby.Server.Implementations/Localization/Core/hi.json +++ b/Emby.Server.Implementations/Localization/Core/hi.json @@ -99,7 +99,7 @@ "ValueHasBeenAddedToLibrary": "{0} आपके माध्यम ग्रन्थालय में उपजात हो गया हैं", "TasksLibraryCategory": "संग्रहालय", "TaskOptimizeDatabase": "जानकारी प्रवृद्धि", - "TaskDownloadMissingSubtitles": "असमेत अनुलेख को अवाहरति करें", + "TaskDownloadMissingSubtitles": "लापता अनुलेख डाउनलोड करें", "TaskRefreshLibrary": "माध्यम संग्राहत को छाने", "TaskCleanActivityLog": "क्रियाकलाप लॉग साफ करें", "TasksChannelsCategory": "इंटरनेट प्रणाली", @@ -127,5 +127,7 @@ "TaskRefreshTrickplayImages": "ट्रिकप्लै चित्रों को सृजन करे", "TaskRefreshTrickplayImagesDescription": "नियत संग्रहों में चलचित्रों का ट्रीकप्लै दर्शनों को सृजन करे.", "TaskAudioNormalization": "श्रव्य सामान्यीकरण", - "TaskAudioNormalizationDescription": "श्रव्य सामान्यीकरण के लिए फाइलें अन्वेषण करें" + "TaskAudioNormalizationDescription": "श्रव्य सामान्यीकरण के लिए फाइलें अन्वेषण करें", + "TaskDownloadMissingLyrics": "लापता गानों के बोल डाउनलोड करेँ", + "TaskDownloadMissingLyricsDescription": "गानों के बोल डाउनलोड करता है" } From d4e8c641ea6ec1af78387e3549982a5f6488c2ed Mon Sep 17 00:00:00 2001 From: TalalSh Date: Tue, 29 Oct 2024 05:18:58 +0000 Subject: [PATCH 49/72] Translated using Weblate (Arabic) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/ --- Emby.Server.Implementations/Localization/Core/ar.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/ar.json b/Emby.Server.Implementations/Localization/Core/ar.json index bd45b0b968..e9c095c67d 100644 --- a/Emby.Server.Implementations/Localization/Core/ar.json +++ b/Emby.Server.Implementations/Localization/Core/ar.json @@ -131,5 +131,8 @@ "TaskCleanCollectionsAndPlaylistsDescription": "حذف عناصر من المجموعات وقوائم التشغيل التي لم تعد موجودة.", "TaskAudioNormalization": "تطبيع الصوت", "TaskAudioNormalizationDescription": "مسح الملفات لتطبيع بيانات الصوت.", - "TaskDownloadMissingLyrics": "تنزيل عبارات القصيدة" + "TaskDownloadMissingLyrics": "تنزيل عبارات القصيدة", + "TaskDownloadMissingLyricsDescription": "كلمات", + "TaskExtractMediaSegments": "فحص مقاطع الوسائط", + "TaskExtractMediaSegmentsDescription": "وسائط" } From 9259623abb5253045ae0b81b1ced336ce62fabba Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 31 Oct 2024 13:15:18 +0000 Subject: [PATCH 50/72] Update dependency Svg.Skia to 2.0.0.2 --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 5aadeb2541..442a62dd9b 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -71,7 +71,7 @@ - + From 258ae9d4c22a4c61ef2b9dea116206c748e2c16c Mon Sep 17 00:00:00 2001 From: Roi Gabay Date: Fri, 1 Nov 2024 13:48:09 +0000 Subject: [PATCH 51/72] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/ --- Emby.Server.Implementations/Localization/Core/he.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/he.json b/Emby.Server.Implementations/Localization/Core/he.json index af57b1693e..413b01ba79 100644 --- a/Emby.Server.Implementations/Localization/Core/he.json +++ b/Emby.Server.Implementations/Localization/Core/he.json @@ -16,7 +16,7 @@ "Folders": "תיקיות", "Genres": "ז׳אנרים", "HeaderAlbumArtists": "אמני האלבום", - "HeaderContinueWatching": "להמשיך לצפות", + "HeaderContinueWatching": "המשך צפייה", "HeaderFavoriteAlbums": "אלבומים מועדפים", "HeaderFavoriteArtists": "אמנים מועדפים", "HeaderFavoriteEpisodes": "פרקים מועדפים", @@ -133,8 +133,8 @@ "TaskCleanCollectionsAndPlaylists": "מנקה אוספים ורשימות השמעה", "TaskDownloadMissingLyrics": "הורדת מילים חסרות", "TaskDownloadMissingLyricsDescription": "הורדת מילים לשירים", - "TaskMoveTrickplayImages": "מעביר את מיקום תמונות Trickplay", + "TaskMoveTrickplayImages": "העברת מיקום התמונות", "TaskExtractMediaSegments": "סריקת מדיה", "TaskExtractMediaSegmentsDescription": "מחלץ חלקי מדיה מתוספים המאפשרים זאת.", - "TaskMoveTrickplayImagesDescription": "מזיז קבצי trickplay קיימים בהתאם להגדרות הספרייה." + "TaskMoveTrickplayImagesDescription": "הזזת קבצי trickplay קיימים בהתאם להגדרות הספרייה." } From 66aad36d1f9497ccb01d6ff80eb873a5975c6160 Mon Sep 17 00:00:00 2001 From: Bas <44002186+854562@users.noreply.github.com> Date: Thu, 31 Oct 2024 17:44:24 +0000 Subject: [PATCH 52/72] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/ --- Emby.Server.Implementations/Localization/Core/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/nl.json b/Emby.Server.Implementations/Localization/Core/nl.json index 2327a73a99..1eee6cda9c 100644 --- a/Emby.Server.Implementations/Localization/Core/nl.json +++ b/Emby.Server.Implementations/Localization/Core/nl.json @@ -117,7 +117,7 @@ "TaskCleanActivityLogDescription": "Verwijdert activiteitenlogs ouder dan de ingestelde leeftijd.", "TaskCleanActivityLog": "Activiteitenlogboek legen", "Undefined": "Niet gedefinieerd", - "Forced": "Geforceerd", + "Forced": "Gedwongen", "Default": "Standaard", "TaskOptimizeDatabaseDescription": "Comprimeert de database en trimt vrije ruimte. Het uitvoeren van deze taak kan de prestaties verbeteren, na het scannen van de bibliotheek of andere aanpassingen die invloed hebben op de database.", "TaskOptimizeDatabase": "Database optimaliseren", From 30e20a01468d0ac39435adc509b574e1e2b1ffbd Mon Sep 17 00:00:00 2001 From: Roi Gabay Date: Sat, 2 Nov 2024 08:26:22 +0000 Subject: [PATCH 53/72] Translated using Weblate (Hebrew) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/ --- Emby.Server.Implementations/Localization/Core/he.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/he.json b/Emby.Server.Implementations/Localization/Core/he.json index 413b01ba79..34d5cf0509 100644 --- a/Emby.Server.Implementations/Localization/Core/he.json +++ b/Emby.Server.Implementations/Localization/Core/he.json @@ -32,8 +32,8 @@ "LabelIpAddressValue": "Ip כתובת: {0}", "LabelRunningTimeValue": "משך צפייה: {0}", "Latest": "אחרון", - "MessageApplicationUpdated": "שרת הJellyfin עודכן", - "MessageApplicationUpdatedTo": "שרת ה־Jellyfin עודכן לגרסה {0}", + "MessageApplicationUpdated": "שרת ג'ליפין עודכן", + "MessageApplicationUpdatedTo": "שרת ג'ליפין עודכן לגרסה {0}", "MessageNamedServerConfigurationUpdatedWithValue": "סעיף הגדרת השרת {0} עודכן", "MessageServerConfigurationUpdated": "תצורת השרת עודכנה", "MixedContent": "תוכן מעורב", @@ -43,7 +43,7 @@ "NameInstallFailed": "התקנת {0} נכשלה", "NameSeasonNumber": "עונה {0}", "NameSeasonUnknown": "עונה לא ידועה", - "NewVersionIsAvailable": "גרסה חדשה של שרת Jellyfin זמינה להורדה.", + "NewVersionIsAvailable": "גרסה חדשה של שרת ג'ליפין זמינה להורדה.", "NotificationOptionApplicationUpdateAvailable": "קיים עדכון זמין ליישום", "NotificationOptionApplicationUpdateInstalled": "עדכון ליישום הותקן", "NotificationOptionAudioPlayback": "ניגון שמע החל", @@ -72,7 +72,7 @@ "ServerNameNeedsToBeRestarted": "{0} דורש הפעלה מחדש", "Shows": "סדרות", "Songs": "שירים", - "StartupEmbyServerIsLoading": "שרת Jellyfin בהליכי טעינה. נא לנסות שנית בהקדם.", + "StartupEmbyServerIsLoading": "שרת ג'ליפין טוען. נא לנסות שוב בקרוב.", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", "SubtitleDownloadFailureFromForItem": "הורדת כתוביות מ־{0} עבור {1} נכשלה", "Sync": "סנכרון", @@ -136,5 +136,5 @@ "TaskMoveTrickplayImages": "העברת מיקום התמונות", "TaskExtractMediaSegments": "סריקת מדיה", "TaskExtractMediaSegmentsDescription": "מחלץ חלקי מדיה מתוספים המאפשרים זאת.", - "TaskMoveTrickplayImagesDescription": "הזזת קבצי trickplay קיימים בהתאם להגדרות הספרייה." + "TaskMoveTrickplayImagesDescription": "הזזת קבצי טריקפליי קיימים בהתאם להגדרות הספרייה." } From a416c438da1cc94389aa96d97929b27f3c08e5a7 Mon Sep 17 00:00:00 2001 From: SethPattee <97485847+SethPattee@users.noreply.github.com> Date: Sun, 3 Nov 2024 07:43:27 -0700 Subject: [PATCH 54/72] Added + in username regex validator, Test + in username, issue #10414 (#12819) --- Jellyfin.Server.Implementations/Users/UserManager.cs | 2 +- .../Users/UserManagerTests.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Jellyfin.Server.Implementations/Users/UserManager.cs b/Jellyfin.Server.Implementations/Users/UserManager.cs index 1b6635938b..c7ae0f4dbe 100644 --- a/Jellyfin.Server.Implementations/Users/UserManager.cs +++ b/Jellyfin.Server.Implementations/Users/UserManager.cs @@ -113,7 +113,7 @@ namespace Jellyfin.Server.Implementations.Users // This is some regex that matches only on unicode "word" characters, as well as -, _ and @ // In theory this will cut out most if not all 'control' characters which should help minimize any weirdness // Usernames can contain letters (a-z + whatever else unicode is cool with), numbers (0-9), at-signs (@), dashes (-), underscores (_), apostrophes ('), periods (.) and spaces ( ) - [GeneratedRegex(@"^[\w\ \-'._@]+$")] + [GeneratedRegex(@"^[\w\ \-'._@+]+$")] private static partial Regex ValidUsernameRegex(); /// diff --git a/tests/Jellyfin.Server.Implementations.Tests/Users/UserManagerTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Users/UserManagerTests.cs index 295f558fad..665afe1118 100644 --- a/tests/Jellyfin.Server.Implementations.Tests/Users/UserManagerTests.cs +++ b/tests/Jellyfin.Server.Implementations.Tests/Users/UserManagerTests.cs @@ -10,6 +10,9 @@ namespace Jellyfin.Server.Implementations.Tests.Users [InlineData("this_is_valid")] [InlineData("this is also valid")] [InlineData("0@_-' .")] + [InlineData("Aa0@_-' .+")] + [InlineData("thisisa+testemail@test.foo")] + [InlineData("------@@@--+++----@@--abcdefghijklmn---------@----_-_-___-_ .9foo+")] public void ThrowIfInvalidUsername_WhenValidUsername_DoesNotThrowArgumentException(string username) { var ex = Record.Exception(() => UserManager.ThrowIfInvalidUsername(username)); From 600a09f1fc73486d0fc0815eb3b48fa862678ca8 Mon Sep 17 00:00:00 2001 From: benedikt257 Date: Sun, 3 Nov 2024 10:55:48 -0500 Subject: [PATCH 55/72] Backport pull request #12891 from jellyfin/release-10.10.z Fix TMDB import failing when no IMDB ID is set for a movie Original-merge: c6629aebf871af861b42f711f12ff920117f4bce Merged-by: crobibero Backported-by: Joshua M. Boniface --- CONTRIBUTORS.md | 1 + MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index a9deb1c4a2..bcc428abbd 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -192,6 +192,7 @@ - [jaina heartles](https://github.com/heartles) - [oxixes](https://github.com/oxixes) - [elfalem](https://github.com/elfalem) + - [benedikt257](https://github.com/benedikt257) # Emby Contributors diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs index 8d68e2dcfe..eef08b251f 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieProvider.cs @@ -198,7 +198,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies }; movie.SetProviderId(MetadataProvider.Tmdb, tmdbId); - movie.SetProviderId(MetadataProvider.Imdb, movieResult.ImdbId); + movie.TrySetProviderId(MetadataProvider.Imdb, movieResult.ImdbId); if (movieResult.BelongsToCollection is not null) { movie.SetProviderId(MetadataProvider.TmdbCollection, movieResult.BelongsToCollection.Id.ToString(CultureInfo.InvariantCulture)); From 510312045a4af2bd0478b3f6542e2c4884fa5d57 Mon Sep 17 00:00:00 2001 From: revam Date: Sun, 3 Nov 2024 10:55:49 -0500 Subject: [PATCH 56/72] Backport pull request #12909 from jellyfin/release-10.10.z Don't try to prune images for virtual episodes. Original-merge: f99e0407fd67358fc07c30ac4cbfa736be5f4daa Merged-by: crobibero Backported-by: Joshua M. Boniface --- CONTRIBUTORS.md | 1 + MediaBrowser.Providers/Manager/ItemImageProvider.cs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index bcc428abbd..e44608135c 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -193,6 +193,7 @@ - [oxixes](https://github.com/oxixes) - [elfalem](https://github.com/elfalem) - [benedikt257](https://github.com/benedikt257) + - [revam](https://github.com/revam) # Emby Contributors diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index 36a7c2fabe..9b738ce6f3 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -387,8 +387,8 @@ namespace MediaBrowser.Providers.Manager item.RemoveImages(images); - // Cleanup old metadata directory for episodes if empty - if (item is Episode) + // Cleanup old metadata directory for episodes if empty, as long as it's not a virtual item + if (item is Episode && !item.IsVirtualItem) { var oldLocalMetadataDirectory = Path.Combine(item.ContainingFolderPath, "metadata"); if (_fileSystem.DirectoryExists(oldLocalMetadataDirectory) && !_fileSystem.GetFiles(oldLocalMetadataDirectory).Any()) From d81fec6b7c20c67a4515a00d63a788abeea36307 Mon Sep 17 00:00:00 2001 From: JPVenson Date: Sun, 3 Nov 2024 10:55:50 -0500 Subject: [PATCH 57/72] Backport pull request #12915 from jellyfin/release-10.10.z Fixed possible NullReferenceException in SessionManager Original-merge: 3592c629e78e80c9d2fc9e368c5d61a11c1bf688 Merged-by: crobibero Backported-by: Joshua M. Boniface --- Emby.Server.Implementations/Session/SessionManager.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs index 6a8ad2bdc5..fe2c3d24f6 100644 --- a/Emby.Server.Implementations/Session/SessionManager.cs +++ b/Emby.Server.Implementations/Session/SessionManager.cs @@ -1938,7 +1938,11 @@ namespace Emby.Server.Implementations.Session // Don't report acceleration type for non-admin users. result = result.Select(r => { - r.TranscodingInfo.HardwareAccelerationType = HardwareAccelerationType.none; + if (r.TranscodingInfo is not null) + { + r.TranscodingInfo.HardwareAccelerationType = HardwareAccelerationType.none; + } + return r; }); } From 9e386ecc27f846ad9e45fb5a5ba5a416a2344d04 Mon Sep 17 00:00:00 2001 From: gnattu Date: Sun, 3 Nov 2024 10:55:51 -0500 Subject: [PATCH 58/72] Backport pull request #12931 from jellyfin/release-10.10.z Set AudioCodec when building stream Original-merge: a1658839998374eb61663c4681c34f192e00c80c Merged-by: nielsvanvelzen Backported-by: Joshua M. Boniface --- MediaBrowser.Model/Dlna/StreamBuilder.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index a25ddc367d..767e012029 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -208,6 +208,14 @@ namespace MediaBrowser.Model.Dlna var longBitrate = Math.Min(transcodingBitrate, playlistItem.AudioBitrate ?? transcodingBitrate); playlistItem.AudioBitrate = longBitrate > int.MaxValue ? int.MaxValue : Convert.ToInt32(longBitrate); + + // Pure audio transcoding does not support comma separated list of transcoding codec at the moment. + // So just use the AudioCodec as is would be safe enough as the _transcoderSupport.CanEncodeToAudioCodec + // would fail so this profile will not even be picked up. + if (playlistItem.AudioCodecs.Count == 0 && !string.IsNullOrWhiteSpace(transcodingProfile.AudioCodec)) + { + playlistItem.AudioCodecs = [transcodingProfile.AudioCodec]; + } } playlistItem.TranscodeReasons = transcodeReasons; From 46fb6c157931309147b5267a54074c8228759419 Mon Sep 17 00:00:00 2001 From: gnattu Date: Sun, 3 Nov 2024 10:55:53 -0500 Subject: [PATCH 59/72] Backport pull request #12940 from jellyfin/release-10.10.z Remove DynamicImageResponse local image after saved to metadata folder Original-merge: 3a9b48a2aa535d38ad9e8937345b4e610b426606 Merged-by: joshuaboniface Backported-by: Joshua M. Boniface --- .../Images/BaseDynamicImageProvider.cs | 1 - .../Providers/IProviderManager.cs | 3 ++- .../Manager/ItemImageProvider.cs | 4 +--- .../Manager/ProviderManager.cs | 21 ++++++++++++++++--- .../Manager/ItemImageProviderTests.cs | 3 +++ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs b/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs index 82db7c46b3..0a3d740ccf 100644 --- a/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs +++ b/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs @@ -122,7 +122,6 @@ namespace Emby.Server.Implementations.Images } await ProviderManager.SaveImage(item, outputPath, mimeType, imageType, null, false, cancellationToken).ConfigureAwait(false); - File.Delete(outputPath); return ItemUpdateType.ImageUpdate; } diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs index 38fc5f2cca..0d3a334dfb 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -77,7 +77,8 @@ namespace MediaBrowser.Controller.Providers Task SaveImage(BaseItem item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken); /// - /// Saves the image. + /// Saves the image by giving the image path on filesystem. + /// This method will remove the image on the source path after saving it to the destination. /// /// Image to save. /// Source of image. diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index 9b738ce6f3..64954818a5 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -229,9 +229,7 @@ namespace MediaBrowser.Providers.Manager { var mimeType = MimeTypes.GetMimeType(response.Path); - var stream = AsyncFile.OpenRead(response.Path); - - await _providerManager.SaveImage(item, stream, mimeType, imageType, null, cancellationToken).ConfigureAwait(false); + await _providerManager.SaveImage(item, response.Path, mimeType, imageType, null, null, cancellationToken).ConfigureAwait(false); } } diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 81a9af68be..c5689550d4 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Net; using System.Net.Http; using System.Net.Mime; +using System.Runtime.ExceptionServices; using System.Threading; using System.Threading.Tasks; using AsyncKeyedLock; @@ -251,15 +252,29 @@ namespace MediaBrowser.Providers.Manager } /// - public Task SaveImage(BaseItem item, string source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken) + public async Task SaveImage(BaseItem item, string source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken) { if (string.IsNullOrWhiteSpace(source)) { throw new ArgumentNullException(nameof(source)); } - var fileStream = AsyncFile.OpenRead(source); - return new ImageSaver(_configurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, saveLocallyWithMedia, cancellationToken); + try + { + var fileStream = AsyncFile.OpenRead(source); + await new ImageSaver(_configurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, fileStream, mimeType, type, imageIndex, saveLocallyWithMedia, cancellationToken); + } + finally + { + try + { + File.Delete(source); + } + catch (Exception ex) + { + _logger.LogError(ex, "Source file {Source} not found or in use, skip removing", source); + } + } } /// diff --git a/tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs b/tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs index 0c7d2487cb..0d99e9af0e 100644 --- a/tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs +++ b/tests/Jellyfin.Providers.Tests/Manager/ItemImageProviderTests.cs @@ -292,6 +292,9 @@ namespace Jellyfin.Providers.Tests.Manager providerManager.Setup(pm => pm.SaveImage(item, It.IsAny(), It.IsAny(), imageType, null, It.IsAny())) .Callback((callbackItem, _, _, callbackType, _, _) => callbackItem.SetImagePath(callbackType, 0, new FileSystemMetadata())) .Returns(Task.CompletedTask); + providerManager.Setup(pm => pm.SaveImage(item, It.IsAny(), It.IsAny(), imageType, null, null, It.IsAny())) + .Callback((callbackItem, _, _, callbackType, _, _, _) => callbackItem.SetImagePath(callbackType, 0, new FileSystemMetadata())) + .Returns(Task.CompletedTask); var itemImageProvider = GetItemImageProvider(providerManager.Object, null); var result = await itemImageProvider.RefreshImages(item, libraryOptions, new List { dynamicProvider.Object }, refreshOptions, CancellationToken.None); From 1dd3792984416e5ff365cd259b270eab94c0cd5a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 3 Nov 2024 10:51:06 -0700 Subject: [PATCH 60/72] Update dependency z440.atl.core to 6.7.0 (#12943) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 442a62dd9b..eddc53f9ed 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -80,7 +80,7 @@ - + From 5776163d6ef50359b985ab26262a626624a7f22b Mon Sep 17 00:00:00 2001 From: guroww Date: Mon, 4 Nov 2024 18:21:14 +0000 Subject: [PATCH 61/72] Translated using Weblate (Bulgarian) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/ --- .../Localization/Core/bg-BG.json | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/bg-BG.json b/Emby.Server.Implementations/Localization/Core/bg-BG.json index 4f95b48803..72f5757531 100644 --- a/Emby.Server.Implementations/Localization/Core/bg-BG.json +++ b/Emby.Server.Implementations/Localization/Core/bg-BG.json @@ -121,7 +121,7 @@ "TaskCleanActivityLog": "Изчисти дневника с активност", "TaskOptimizeDatabaseDescription": "Прави базата данни по-компактна и освобождава място. Пускането на тази задача след сканиране на библиотеката или правене на други промени, свързани с модификации на базата данни, може да подобри производителността.", "TaskOptimizeDatabase": "Оптимизирай базата данни", - "TaskKeyframeExtractorDescription": "Извличат се ключови кадри от видеофайловете ,за да се създаде по точен ХЛС списък . Задачата може да отнеме много време.", + "TaskKeyframeExtractorDescription": "Извличат се ключови кадри от видеофайловете ,за да се създаде по точен HLS списък . Задачата може да отнеме много време.", "TaskKeyframeExtractor": "Извличане на ключови кадри", "External": "Външен", "HearingImpaired": "Увреден слух", @@ -129,8 +129,12 @@ "TaskRefreshTrickplayImagesDescription": "Създава прегледи на Trickplay за видеа в активирани библиотеки.", "TaskDownloadMissingLyrics": "Свали липсващи текстове", "TaskDownloadMissingLyricsDescription": "Свали текстове за песни", - "TaskCleanCollectionsAndPlaylists": "Изчисти колекциите и плейлистовете", + "TaskCleanCollectionsAndPlaylists": "Изчисти колекциите и плейлистите", "TaskCleanCollectionsAndPlaylistsDescription": "Премахни несъществуващи файлове в колекциите и плейлистите.", "TaskAudioNormalization": "Нормализиране на звука", - "TaskAudioNormalizationDescription": "Сканирай файловете за нормализация на звука." + "TaskAudioNormalizationDescription": "Сканирай файловете за нормализация на звука.", + "TaskExtractMediaSegmentsDescription": "Изважда медиини сегменти от MediaSegment плъгини.", + "TaskMoveTrickplayImages": "Мигриране на Локацията за Trickplay изображения", + "TaskMoveTrickplayImagesDescription": "Премества съществуващите trickplay изображения спрямо настройките на библиотеката.", + "TaskExtractMediaSegments": "Сканиране за сегменти" } From e34ea6400b10d5bd0fdeca7ab77b8acec9c27fdf Mon Sep 17 00:00:00 2001 From: Tomi Date: Mon, 4 Nov 2024 05:16:47 +0000 Subject: [PATCH 62/72] Translated using Weblate (Finnish) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/ --- Emby.Server.Implementations/Localization/Core/fi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/fi.json b/Emby.Server.Implementations/Localization/Core/fi.json index 8a88cf28e9..c9f580cd5f 100644 --- a/Emby.Server.Implementations/Localization/Core/fi.json +++ b/Emby.Server.Implementations/Localization/Core/fi.json @@ -130,5 +130,10 @@ "TaskCleanCollectionsAndPlaylists": "Puhdista kokoelmat ja soittolistat", "TaskAudioNormalization": "Äänenvoimakkuuden normalisointi", "TaskAudioNormalizationDescription": "Etsii tiedostoista äänenvoimakkuuden normalisointitietoja.", - "TaskDownloadMissingLyrics": "Lataa puuttuva lyriikka" + "TaskDownloadMissingLyrics": "Lataa puuttuva lyriikka", + "TaskExtractMediaSegments": "Mediasegmentin skannaus", + "TaskDownloadMissingLyricsDescription": "Ladataan sanoituksia", + "TaskExtractMediaSegmentsDescription": "Poimii tai hankkii mediasegmenttejä MediaSegment-yhteensopivista laajennuksista.", + "TaskMoveTrickplayImages": "Siirrä Trickplay-kuvien sijainti", + "TaskMoveTrickplayImagesDescription": "Siirtää olemassa olevia trickplay-tiedostoja kirjaston asetusten mukaan." } From bf00899f92881c987f019ad7d20f0cef42d4e3e7 Mon Sep 17 00:00:00 2001 From: newton181 Date: Mon, 4 Nov 2024 22:53:21 +0000 Subject: [PATCH 63/72] Translated using Weblate (Spanish (Latin America)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_419/ --- Emby.Server.Implementations/Localization/Core/es_419.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/es_419.json b/Emby.Server.Implementations/Localization/Core/es_419.json index b458ed4230..2534f37c16 100644 --- a/Emby.Server.Implementations/Localization/Core/es_419.json +++ b/Emby.Server.Implementations/Localization/Core/es_419.json @@ -131,5 +131,9 @@ "TaskAudioNormalizationDescription": "Analiza los archivos para normalizar el audio.", "TaskCleanCollectionsAndPlaylists": "Limpieza de colecciones y listas de reproducción", "TaskDownloadMissingLyrics": "Descargar letra faltante", - "TaskDownloadMissingLyricsDescription": "Descarga letras de canciones" + "TaskDownloadMissingLyricsDescription": "Descarga letras de canciones", + "TaskExtractMediaSegmentsDescription": "Extrae u obtiene segmentos de medios de complementos habilitados para MediaSegment.", + "TaskMoveTrickplayImagesDescription": "Mueve archivos de trickplay existentes según la configuración de la biblioteca.", + "TaskExtractMediaSegments": "Escaneo de segmentos de medios", + "TaskMoveTrickplayImages": "Migrar la ubicación de la imagen de Trickplay" } From 257d8d12b8f0a426840175e0a04f59a0a1de60fd Mon Sep 17 00:00:00 2001 From: VC Date: Wed, 6 Nov 2024 01:50:50 +0000 Subject: [PATCH 64/72] Translated using Weblate (Chinese (Traditional Han script, Hong Kong)) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant_HK/ --- Emby.Server.Implementations/Localization/Core/zh-HK.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/zh-HK.json b/Emby.Server.Implementations/Localization/Core/zh-HK.json index 3ab9774c27..e2f768f1fc 100644 --- a/Emby.Server.Implementations/Localization/Core/zh-HK.json +++ b/Emby.Server.Implementations/Localization/Core/zh-HK.json @@ -126,5 +126,12 @@ "External": "外部", "HearingImpaired": "聽力障礙", "TaskRefreshTrickplayImages": "建立 Trickplay 圖像", - "TaskRefreshTrickplayImagesDescription": "為已啟用 Trickplay 的媒體庫內的影片建立 Trickplay 預覽圖。" + "TaskRefreshTrickplayImagesDescription": "為已啟用 Trickplay 的媒體庫內的影片建立 Trickplay 預覽圖。", + "TaskExtractMediaSegments": "掃描媒體段落", + "TaskExtractMediaSegmentsDescription": "從MediaSegment中被允許的插件獲取媒體段落。", + "TaskDownloadMissingLyrics": "下載欠缺歌詞", + "TaskDownloadMissingLyricsDescription": "下載歌詞", + "TaskCleanCollectionsAndPlaylists": "整理媒體與播放清單", + "TaskAudioNormalization": "音訊同等化", + "TaskAudioNormalizationDescription": "掃描檔案裏的音訊同等化資料。" } From 71daa3e5a1bb4555d41c038b27b338a8750f6f2d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 19:19:17 +0000 Subject: [PATCH 65/72] Update github/codeql-action action to v3.27.1 --- .github/workflows/ci-codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-codeql-analysis.yml b/.github/workflows/ci-codeql-analysis.yml index 1c55437a45..9ff679995a 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@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/init@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 with: languages: ${{ matrix.language }} queries: +security-extended - name: Autobuild - uses: github/codeql-action/autobuild@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/autobuild@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@662472033e021d55d94146f66f6058822b0b39fd # v3.27.0 + uses: github/codeql-action/analyze@4f3212b61783c3c68e8309a0f18a699764811cda # v3.27.1 From 9ee86428139028dc4ac06468cb616b69c1133ace Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 22:29:58 +0000 Subject: [PATCH 66/72] Update dependency z440.atl.core to 6.8.0 --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index eddc53f9ed..e78f868fc3 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -80,7 +80,7 @@ - + From ceefb71fe9f9a843528403d786d8783734afdfac Mon Sep 17 00:00:00 2001 From: koreapyj Date: Sun, 10 Nov 2024 08:09:26 +0000 Subject: [PATCH 67/72] Translated using Weblate (Korean) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/ --- Emby.Server.Implementations/Localization/Core/ko.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/ko.json b/Emby.Server.Implementations/Localization/Core/ko.json index a739cba358..13bacb2d27 100644 --- a/Emby.Server.Implementations/Localization/Core/ko.json +++ b/Emby.Server.Implementations/Localization/Core/ko.json @@ -130,5 +130,11 @@ "TaskAudioNormalizationDescription": "오디오의 볼륨 수준을 일정하게 조정하기 위해 파일을 스캔합니다.", "TaskRefreshTrickplayImages": "비디오 탐색용 미리보기 썸네일 생성", "TaskRefreshTrickplayImagesDescription": "활성화된 라이브러리에서 비디오의 트릭플레이 미리보기를 생성합니다.", - "TaskCleanCollectionsAndPlaylistsDescription": "더 이상 존재하지 않는 컬렉션 및 재생 목록에서 항목을 제거합니다." + "TaskCleanCollectionsAndPlaylistsDescription": "더 이상 존재하지 않는 컬렉션 및 재생 목록에서 항목을 제거합니다.", + "TaskExtractMediaSegments": "미디어 세그먼트 스캔", + "TaskExtractMediaSegmentsDescription": "MediaSegment를 지원하는 플러그인에서 미디어 세그먼트를 추출하거나 가져옵니다.", + "TaskMoveTrickplayImages": "트릭플레이 이미지 위치 마이그레이션", + "TaskMoveTrickplayImagesDescription": "추출된 트릭플레이 이미지를 라이브러리 설정에 따라 이동합니다.", + "TaskDownloadMissingLyrics": "누락된 가사 다운로드", + "TaskDownloadMissingLyricsDescription": "가사 다운로드" } From a5e05a7f146a6742dfd7cd9f14e71f9baac144df Mon Sep 17 00:00:00 2001 From: darkabella Date: Sun, 10 Nov 2024 20:14:52 +0000 Subject: [PATCH 68/72] Translated using Weblate (Catalan) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ca/ --- Emby.Server.Implementations/Localization/Core/ca.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/ca.json b/Emby.Server.Implementations/Localization/Core/ca.json index 6b3b78fa12..629efdd04d 100644 --- a/Emby.Server.Implementations/Localization/Core/ca.json +++ b/Emby.Server.Implementations/Localization/Core/ca.json @@ -132,5 +132,6 @@ "TaskAudioNormalization": "Normalització d'Àudio", "TaskAudioNormalizationDescription": "Escaneja arxius per dades de normalització d'àudio.", "TaskDownloadMissingLyricsDescription": "Baixar lletres de les cançons", - "TaskDownloadMissingLyrics": "Baixar lletres que falten" + "TaskDownloadMissingLyrics": "Baixar lletres que falten", + "TaskExtractMediaSegments": "Escaneig de segments multimèdia" } From 772e9a6d4a39b08b97ef93c2ec896cf265780914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aindri=C3=BA=20Mac=20Giolla=20Eoin?= Date: Sun, 10 Nov 2024 15:37:40 +0000 Subject: [PATCH 69/72] Translated using Weblate (Irish) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ga/ --- .../Localization/Core/ga.json | 143 ++++++++++++++++-- 1 file changed, 133 insertions(+), 10 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/ga.json b/Emby.Server.Implementations/Localization/Core/ga.json index b511ed6ba9..b8e787c20a 100644 --- a/Emby.Server.Implementations/Localization/Core/ga.json +++ b/Emby.Server.Implementations/Localization/Core/ga.json @@ -1,16 +1,139 @@ { "Albums": "Albaim", - "Artists": "Ealaíontóir", - "AuthenticationSucceededWithUserName": "{0} fíordheimhnithe", - "Books": "leabhair", - "CameraImageUploadedFrom": "Tá íomhá ceamara nua uaslódáilte ó {0}", + "Artists": "Ealaíontóirí", + "AuthenticationSucceededWithUserName": "D'éirigh le fíordheimhniú {0}", + "Books": "Leabhair", + "CameraImageUploadedFrom": "Uaslódáladh íomhá ceamara nua ó {0}", "Channels": "Cainéil", "ChapterNameValue": "Caibidil {0}", "Collections": "Bailiúcháin", - "Default": "Mainneachtain", - "DeviceOfflineWithName": "scoireadh {0}", - "DeviceOnlineWithName": "{0} ceangailte", - "External": "Forimeallach", - "FailedLoginAttemptWithUserName": "Iarracht ar theip ar fhíordheimhniú ó {0}", - "Favorites": "Ceanáin" + "Default": "Réamhshocrú", + "DeviceOfflineWithName": "Tá {0} dícheangailte", + "DeviceOnlineWithName": "Tá {0} nasctha", + "External": "Seachtrach", + "FailedLoginAttemptWithUserName": "Theip ar iarracht logáil isteach ó {0}", + "Favorites": "Ceanáin", + "TaskExtractMediaSegments": "Scanadh Deighleog na Meán", + "TaskMoveTrickplayImages": "Imirce Suíomh Íomhá Trickplay", + "TaskDownloadMissingLyrics": "Íosluchtaigh liricí ar iarraidh", + "TaskKeyframeExtractor": "Keyframe Eastarraingteoir", + "TaskAudioNormalization": "Normalú Fuaime", + "TaskAudioNormalizationDescription": "Scanann comhaid le haghaidh sonraí normalaithe fuaime.", + "TaskRefreshLibraryDescription": "Déanann sé do leabharlann meán a scanadh le haghaidh comhaid nua agus athnuachana meiteashonraí.", + "TaskCleanLogs": "Eolaire Logchomhad Glan", + "TaskCleanLogsDescription": "Scriostar comhaid loga atá níos mó ná {0} lá d'aois.", + "TaskRefreshPeopleDescription": "Nuashonraítear meiteashonraí d’aisteoirí agus stiúrthóirí i do leabharlann meán.", + "TaskRefreshTrickplayImages": "Gin Íomhánna Trickplay", + "TaskRefreshTrickplayImagesDescription": "Cruthaíonn sé réamhamhairc trickplay le haghaidh físeáin i leabharlanna cumasaithe.", + "TaskRefreshChannels": "Cainéil Athnuaigh", + "TaskRefreshChannelsDescription": "Athnuachan eolas faoi chainéil idirlín.", + "TaskOptimizeDatabase": "Bunachar sonraí a bharrfheabhsú", + "TaskKeyframeExtractorDescription": "Baintear eochairfhrámaí as comhaid físe chun seinmliostaí HLS níos cruinne a chruthú. Féadfaidh an tasc seo a bheith ar siúl ar feadh i bhfad.", + "TaskCleanCollectionsAndPlaylistsDescription": "Baintear míreanna as bailiúcháin agus seinmliostaí nach ann dóibh a thuilleadh.", + "TaskDownloadMissingLyricsDescription": "Íosluchtaigh liricí do na hamhráin", + "TaskUpdatePluginsDescription": "Íoslódálann agus suiteálann nuashonruithe do bhreiseáin atá cumraithe le nuashonrú go huathoibríoch.", + "TaskDownloadMissingSubtitlesDescription": "Déanann sé cuardach ar an idirlíon le haghaidh fotheidil atá ar iarraidh bunaithe ar chumraíocht meiteashonraí.", + "TaskExtractMediaSegmentsDescription": "Sliocht nó faigheann codanna meán ó bhreiseáin chumasaithe MediaSegment.", + "TaskCleanCollectionsAndPlaylists": "Glan suas bailiúcháin agus seinmliostaí", + "TaskOptimizeDatabaseDescription": "Comhdhlúthaíonn bunachar sonraí agus gearrtar spás saor in aisce. Má ritheann tú an tasc seo tar éis scanadh a dhéanamh ar an leabharlann nó athruithe eile a dhéanamh a thugann le tuiscint gur cheart go bhfeabhsófaí an fheidhmíocht.", + "TaskMoveTrickplayImagesDescription": "Bogtar comhaid trickplay atá ann cheana de réir socruithe na leabharlainne.", + "AppDeviceValues": "Aip: {0}, Gléas: {1}", + "Application": "Feidhmchlár", + "Folders": "Fillteáin", + "Forced": "Éigean", + "Genres": "Seánraí", + "HeaderAlbumArtists": "Ealaíontóirí albam", + "HeaderContinueWatching": "Leanúint ar aghaidh ag Breathnú", + "HeaderFavoriteAlbums": "Albam is fearr leat", + "HeaderFavoriteArtists": "Ealaíontóirí is Fearr", + "HeaderFavoriteEpisodes": "Eipeasóid is fearr leat", + "HeaderFavoriteShows": "Seónna is Fearr", + "HeaderFavoriteSongs": "Amhráin is fearr leat", + "HeaderLiveTV": "Teilifís beo", + "HeaderNextUp": "Ar Aghaidh Suas", + "HeaderRecordingGroups": "Grúpaí Taifeadta", + "HearingImpaired": "Lag éisteachta", + "HomeVideos": "Físeáin Baile", + "Inherit": "Oidhreacht", + "ItemAddedWithName": "Cuireadh {0} leis an leabharlann", + "ItemRemovedWithName": "Baineadh {0} den leabharlann", + "LabelIpAddressValue": "Seoladh IP: {0}", + "LabelRunningTimeValue": "Am rite: {0}", + "Latest": "Is déanaí", + "MessageApplicationUpdated": "Tá Freastalaí Jellyfin nuashonraithe", + "MessageApplicationUpdatedTo": "Nuashonraíodh Freastalaí Jellyfin go {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Nuashonraíodh an chuid cumraíochta freastalaí {0}", + "MessageServerConfigurationUpdated": "Nuashonraíodh cumraíocht an fhreastalaí", + "MixedContent": "Ábhar measctha", + "Movies": "Scannáin", + "Music": "Ceol", + "MusicVideos": "Físeáin Ceoil", + "NameInstallFailed": "Theip ar shuiteáil {0}", + "NameSeasonNumber": "Séasúr {0}", + "NameSeasonUnknown": "Séasúr Anaithnid", + "NewVersionIsAvailable": "Tá leagan nua de Jellyfin Server ar fáil le híoslódáil.", + "NotificationOptionApplicationUpdateAvailable": "Nuashonrú feidhmchláir ar fáil", + "NotificationOptionApplicationUpdateInstalled": "Nuashonrú feidhmchláir suiteáilte", + "NotificationOptionAudioPlayback": "Cuireadh tús le hathsheinm fuaime", + "NotificationOptionAudioPlaybackStopped": "Cuireadh deireadh le hathsheinm fuaime", + "NotificationOptionCameraImageUploaded": "Íosluchtaigh grianghraf ceamara", + "NotificationOptionInstallationFailed": "Teip suiteála", + "NotificationOptionNewLibraryContent": "Ábhar nua curtha leis", + "NotificationOptionPluginError": "Teip breiseán", + "NotificationOptionPluginInstalled": "Breiseán suiteáilte", + "NotificationOptionPluginUninstalled": "Breiseán díshuiteáilte", + "NotificationOptionPluginUpdateInstalled": "Nuashonrú breiseán suiteáilte", + "NotificationOptionServerRestartRequired": "Teastaíonn atosú an fhreastalaí", + "NotificationOptionTaskFailed": "Teip tasc sceidealta", + "NotificationOptionUserLockedOut": "Úsáideoir glasáilte amach", + "NotificationOptionVideoPlayback": "Cuireadh tús le hathsheinm físe", + "NotificationOptionVideoPlaybackStopped": "Cuireadh deireadh le hathsheinm físe", + "Photos": "Grianghraif", + "Playlists": "Seinmliostaí", + "Plugin": "Breiseán", + "PluginInstalledWithName": "Suiteáladh {0}", + "PluginUninstalledWithName": "Díshuiteáladh {0}", + "PluginUpdatedWithName": "Nuashonraíodh {0}", + "ProviderValue": "Soláthraí: {0}", + "ScheduledTaskFailedWithName": "Theip ar {0}", + "ScheduledTaskStartedWithName": "Thosaigh {0}", + "ServerNameNeedsToBeRestarted": "Ní mór {0} a atosú", + "Shows": "Seónna", + "Songs": "Amhráin", + "StartupEmbyServerIsLoading": "Tá freastalaí Jellyfin á luchtú. Bain triail eile as gan mhoill.", + "SubtitleDownloadFailureFromForItem": "Theip ar fhotheidil a íoslódáil ó {0} le haghaidh {1}", + "Sync": "Sioncrónaigh", + "System": "Córas", + "TvShows": "Seónna Teilifíse", + "Undefined": "Neamhshainithe", + "User": "Úsáideoir", + "UserCreatedWithName": "Cruthaíodh úsáideoir {0}", + "UserDeletedWithName": "Scriosadh úsáideoir {0}", + "UserDownloadingItemWithValues": "Tá {0} á íoslódáil {1}", + "UserLockedOutWithName": "Tá úsáideoir {0} glasáilte amach", + "UserOfflineFromDevice": "Tá {0} dícheangailte ó {1}", + "UserOnlineFromDevice": "Tá {0} ar líne ó {1}", + "UserPasswordChangedWithName": "Athraíodh pasfhocal don úsáideoir {0}", + "UserPolicyUpdatedWithName": "Nuashonraíodh polasaí úsáideora le haghaidh {0}", + "UserStartedPlayingItemWithValues": "Tá {0} ag seinnt {1} ar {2}", + "UserStoppedPlayingItemWithValues": "Chríochnaigh {0} ag imirt {1} ar {2}", + "ValueHasBeenAddedToLibrary": "Cuireadh {0} le do leabharlann meán", + "ValueSpecialEpisodeName": "Speisialta - {0}", + "VersionNumber": "Leagan {0}", + "TasksMaintenanceCategory": "Cothabháil", + "TasksLibraryCategory": "Leabharlann", + "TasksApplicationCategory": "Feidhmchlár", + "TasksChannelsCategory": "Cainéil Idirlín", + "TaskCleanActivityLog": "Loga Gníomhaíochta Glan", + "TaskCleanActivityLogDescription": "Scrios iontrálacha loga gníomhaíochta atá níos sine ná an aois chumraithe.", + "TaskCleanCache": "Eolaire Taisce Glan", + "TaskCleanCacheDescription": "Scriostar comhaid taisce nach bhfuil ag teastáil ón gcóras a thuilleadh.", + "TaskRefreshChapterImages": "Sliocht Íomhánna Caibidil", + "TaskRefreshChapterImagesDescription": "Cruthaíonn mionsamhlacha le haghaidh físeáin a bhfuil caibidlí acu.", + "TaskRefreshLibrary": "Scan Leabharlann na Meán", + "TaskRefreshPeople": "Daoine Athnuaigh", + "TaskUpdatePlugins": "Nuashonraigh Breiseáin", + "TaskCleanTranscodeDescription": "Scriostar comhaid traschódaithe níos mó ná lá amháin d'aois.", + "TaskCleanTranscode": "Eolaire Transcode Glan", + "TaskDownloadMissingSubtitles": "Íosluchtaigh fotheidil ar iarraidh" } From 2d28b2ff6e05ec659bc968fc3a2743095902e38c Mon Sep 17 00:00:00 2001 From: Bas <44002186+854562@users.noreply.github.com> Date: Sun, 10 Nov 2024 14:03:04 +0000 Subject: [PATCH 70/72] Translated using Weblate (Dutch) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/ --- Emby.Server.Implementations/Localization/Core/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Localization/Core/nl.json b/Emby.Server.Implementations/Localization/Core/nl.json index 1eee6cda9c..8828eadcb5 100644 --- a/Emby.Server.Implementations/Localization/Core/nl.json +++ b/Emby.Server.Implementations/Localization/Core/nl.json @@ -11,7 +11,7 @@ "Collections": "Collecties", "DeviceOfflineWithName": "Verbinding met {0} is verbroken", "DeviceOnlineWithName": "{0} is verbonden", - "FailedLoginAttemptWithUserName": "Mislukte aanmeldpoging vanaf {0}", + "FailedLoginAttemptWithUserName": "Mislukte aanmeldpoging van {0}", "Favorites": "Favorieten", "Folders": "Mappen", "Genres": "Genres", From 817ca1775a2d8b4088e6baa948f5db1140e3f24c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 17:15:53 -0700 Subject: [PATCH 71/72] Update dependency AsyncKeyedLock to 7.1.3 (#13007) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index e78f868fc3..a27b600df1 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,7 +4,7 @@ - + From 53683809d94cae373882d59e8b6761c517e0af1d Mon Sep 17 00:00:00 2001 From: George Vella Date: Tue, 12 Nov 2024 17:26:27 +0000 Subject: [PATCH 72/72] Translated using Weblate (Maltese) Translation: Jellyfin/Jellyfin Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/mt/ --- .../Localization/Core/mt.json | 98 ++++++++++--------- 1 file changed, 52 insertions(+), 46 deletions(-) diff --git a/Emby.Server.Implementations/Localization/Core/mt.json b/Emby.Server.Implementations/Localization/Core/mt.json index c9e11165de..c3da37c583 100644 --- a/Emby.Server.Implementations/Localization/Core/mt.json +++ b/Emby.Server.Implementations/Localization/Core/mt.json @@ -1,42 +1,42 @@ { "Albums": "Albums", - "AppDeviceValues": "App: {0}, Apparat: {1}", + "AppDeviceValues": "Applikazzjoni: {0}, Device: {1}", "Application": "Applikazzjoni", "Artists": "Artisti", "AuthenticationSucceededWithUserName": "{1} awtentikat b'suċċess", "Books": "Kotba", - "CameraImageUploadedFrom": "Ttellgħet immaġni ġdida tal-kamera minn {1}", - "Channels": "Kanali", + "CameraImageUploadedFrom": "Ttella' ritratt ġdid tal-kamera minn {1}", + "Channels": "Stazzjonijiet", "ChapterNameValue": "Kapitlu {0}", "Collections": "Kollezzjonijiet", - "DeviceOfflineWithName": "{0} inqatgħa", - "DeviceOnlineWithName": "{0} qabad", + "DeviceOfflineWithName": "{0} tneħħa", + "DeviceOnlineWithName": "{0} tqabbad", "External": "Estern", - "FailedLoginAttemptWithUserName": "Tentattiv t'aċċess fallut minn {0}", + "FailedLoginAttemptWithUserName": "Attentat ta' login minn {0}", "Favorites": "Favoriti", "Forced": "Sfurzat", "Genres": "Ġeneri", "HeaderAlbumArtists": "Artisti tal-album", - "HeaderContinueWatching": "Kompli Segwi", + "HeaderContinueWatching": "Kompli Ara", "HeaderFavoriteAlbums": "Albums Favoriti", "HeaderFavoriteArtists": "Artisti Favoriti", "HeaderFavoriteEpisodes": "Episodji Favoriti", "HeaderFavoriteShows": "Programmi Favoriti", "HeaderFavoriteSongs": "Kanzunetti Favoriti", "HeaderNextUp": "Li Jmiss", - "SubtitleDownloadFailureFromForItem": "Is-sottotitli naqsu milli jitniżżlu minn {0} għal {1}", - "UserPasswordChangedWithName": "Il-password inbidel għall-utent {0}", + "SubtitleDownloadFailureFromForItem": "Is-sottotitli ma setgħux jitniżżlu minn {0} għal {1}", + "UserPasswordChangedWithName": "Il-password għall-utent {0} inbidlet", "TaskUpdatePluginsDescription": "Iniżżel u jinstalla aġġornamenti għal plugins li huma kkonfigurati biex jaġġornaw awtomatikament.", - "TaskDownloadMissingSubtitlesDescription": "Ifittex fuq l-internet għal sottotitli neqsin abbażi tal-konfigurazzjoni tal-metadata.", - "TaskOptimizeDatabaseDescription": "Jikkompatti d-database u jaqta' l-ispazju ħieles. It-tħaddim ta' dan il-kompitu wara li tiskennja l-librerija jew tagħmel bidliet oħra li jimplikaw modifiki fid-database jistgħu jtejbu l-prestazzjoni.", + "TaskDownloadMissingSubtitlesDescription": "Ifittex fuq l-internet għal sottotitli neqsin skont il-konfigurazzjoni tal-metadata.", + "TaskOptimizeDatabaseDescription": "Jikkompatta d-database u jaqta' l-ispazju ħieles. It-tħaddim ta' dan it-task wara li tiskennja l-librerija jew tagħmel bidliet oħra li jimplikaw modifiki fid-database jistgħu jtejbu l-mod kif jaħdem.", "Default": "Standard", "Folders": "Folders", "HeaderLiveTV": "TV Dirett", - "HeaderRecordingGroups": "Gruppi ta' Reġistrazzjoni", + "HeaderRecordingGroups": "Gruppi ta' Rikordjar", "HearingImpaired": "Nuqqas ta' Smigħ", - "HomeVideos": "Vidjows Personali", + "HomeVideos": "Filmati Personali", "Inherit": "Jiret", - "ItemAddedWithName": "{0} ġie miżjud mal-librerija", + "ItemAddedWithName": "{0} żdied fil-librerija", "ItemRemovedWithName": "{0} tneħħa mil-librerija", "LabelIpAddressValue": "Indirizz IP: {0}", "Latest": "Tal-Aħħar", @@ -47,7 +47,7 @@ "MixedContent": "Kontenut imħallat", "Movies": "Films", "Music": "Mużika", - "MusicVideos": "Vidjows tal-Mużika", + "MusicVideos": "Music Videos", "NameInstallFailed": "L-installazzjoni ta' {0} falliet", "NameSeasonNumber": "Staġun {0}", "NameSeasonUnknown": "Staġun Mhux Magħruf", @@ -58,13 +58,13 @@ "NotificationOptionApplicationUpdateInstalled": "Aġġornament tal-applikazzjoni ġie installat", "NotificationOptionAudioPlayback": "Il-playback tal-awdjo beda", "NotificationOptionAudioPlaybackStopped": "Il-playback tal-awdjo twaqqaf", - "NotificationOptionInstallationFailed": "Installazzjoni falliet", - "NotificationOptionNewLibraryContent": "Kontenut ġdid miżjud", - "NotificationOptionPluginError": "Ħsara fil-plugin", + "NotificationOptionInstallationFailed": "Falliment tal-Installazzjoni", + "NotificationOptionNewLibraryContent": "Kontenut ġdid żdied", + "NotificationOptionPluginError": "Falliment fil-plugin", "NotificationOptionPluginInstalled": "Plugin installat", "NotificationOptionPluginUninstalled": "Plugin tneħħa", - "NotificationOptionServerRestartRequired": "Meħtieġ l-istartjar mill-ġdid tas-server", - "NotificationOptionTaskFailed": "Falliment tal-kompitu skedat", + "NotificationOptionServerRestartRequired": "Hemm bżonn li tagħmel restart lis-server", + "NotificationOptionTaskFailed": "Falliment tat-task skedat", "NotificationOptionUserLockedOut": "Utent imsakkar", "Photos": "Ritratti", "Playlists": "Playlists", @@ -75,12 +75,12 @@ "ProviderValue": "Fornitur: {0}", "ScheduledTaskFailedWithName": "{0} falla", "ScheduledTaskStartedWithName": "{0} beda", - "ServerNameNeedsToBeRestarted": "{0} jeħtieġ li jerġa' jinbeda", + "ServerNameNeedsToBeRestarted": "{0} jeħtieġ restart", "Songs": "Kanzunetti", - "StartupEmbyServerIsLoading": "Jellyfin Server qed jixgħel. Jekk jogħġbok erġa' pprova dalwaqt.", + "StartupEmbyServerIsLoading": "Jellyfin Server qed jillowdja. Jekk jogħġbok erġa' pprova ftit tal-ħin oħra.", "Sync": "Sinkronizza", "System": "Sistema", - "Undefined": "Mhux Definit", + "Undefined": "Bla Definizzjoni", "User": "Utent", "UserCreatedWithName": "L-utent {0} inħoloq", "UserDeletedWithName": "L-utent {0} tħassar", @@ -89,45 +89,51 @@ "UserOfflineFromDevice": "{0} skonnettja minn {1}", "UserOnlineFromDevice": "{0} huwa online minn {1}", "NotificationOptionPluginUpdateInstalled": "Aġġornament ta' plugin ġie installat", - "NotificationOptionVideoPlayback": "Il-playback tal-vidjow beda", - "NotificationOptionVideoPlaybackStopped": "Il-playback tal-vidjow waqaf", - "Shows": "Programmi", - "TvShows": "Programmi tat-TV", - "UserPolicyUpdatedWithName": "Il-policy tal-utent ġiet aġġornata għal {0}", - "UserStartedPlayingItemWithValues": "{0} qed iħaddem {1} fuq {2}", - "UserStoppedPlayingItemWithValues": "{0} waqaf iħaddem {1} fuq {2}", + "NotificationOptionVideoPlayback": "Il-playback tal-filmat beda", + "NotificationOptionVideoPlaybackStopped": "Il-playback tal-filmat twaqqaf", + "Shows": "Serje", + "TvShows": "Serje Televiżivi", + "UserPolicyUpdatedWithName": "Il-politka tal-utent ġiet aġġornata għal {0}", + "UserStartedPlayingItemWithValues": "{0} qed jara {1} fuq {2}", + "UserStoppedPlayingItemWithValues": "{0} waqaf jara {1} fuq {2}", "ValueHasBeenAddedToLibrary": "{0} ġie miżjud mal-librerija tal-midja tiegħek", "ValueSpecialEpisodeName": "Speċjali - {0}", "VersionNumber": "Verżjoni {0}", "TasksMaintenanceCategory": "Manutenzjoni", "TasksLibraryCategory": "Librerija", "TasksApplicationCategory": "Applikazzjoni", - "TasksChannelsCategory": "Kanali tal-Internet", + "TasksChannelsCategory": "Stazzjonijiet tal-Internet", "TaskCleanActivityLog": "Naddaf il-Logg tal-Attività", - "TaskCleanActivityLogDescription": "Iħassar l-entrati tar-reġistru tal-attività eqdem mill-età kkonfigurata.", + "TaskCleanActivityLogDescription": "Iħassar id-daħliet tar-reġistru tal-attività eqdem mill-età li kienet kkonfigurata.", "TaskCleanCache": "Naddaf id-Direttorju tal-Cache", "TaskCleanCacheDescription": "Iħassar il-fajls tal-cache li m'għadhomx meħtieġa mis-sistema.", - "TaskRefreshChapterImages": "Oħroġ l-Immaġini tal-Kapitolu", + "TaskRefreshChapterImages": "Oħroġ ir-Ritratti tal-Kapitlu", "TaskRefreshChapterImagesDescription": "Joħloq thumbnails għal vidjows li għandhom kapitli.", - "TaskAudioNormalization": "Normalizzazzjoni Awdjo", - "TaskAudioNormalizationDescription": "Skennja fajls għal data ta' normalizzazzjoni awdjo.", + "TaskAudioNormalization": "Normalizzazzjoni tal-Awdjo", + "TaskAudioNormalizationDescription": "Skennja fajls għal data fuq in-normalizzazzjoni tal-awdjo.", "TaskRefreshLibrary": "Skennja l-Librerija tal-Midja", "TaskRefreshLibraryDescription": "Jiskennja l-librerija tal-midja tiegħek għal fajls ġodda u jġedded il-metadejta.", "TaskCleanLogs": "Naddaf id-Direttorju tal-Logg", "TaskCleanLogsDescription": "Iħassar fajls tal-logg eqdem minn {0} ijiem.", - "TaskRefreshPeople": "Aġġorna Persuni", - "TaskRefreshPeopleDescription": "Jaġġorna l-metadejta għall-atturi u d-diretturi fil-librerija tal-midja tiegħek.", + "TaskRefreshPeople": "Aġġorna l-Persuni", + "TaskRefreshPeopleDescription": "Jaġġorna l-metadata għall-atturi u d-diretturi fil-librerija tal-midja tiegħek.", "TaskRefreshTrickplayImages": "Iġġenera Stampi Trickplay", - "TaskRefreshTrickplayImagesDescription": "Joħloq previews trickplay għal vidjows fil-libreriji attivati.", - "TaskUpdatePlugins": "Aġġorna il-Plugins", - "TaskCleanTranscode": "Naddaf id-Direttorju tat-Transcode", - "TaskCleanTranscodeDescription": "Iħassar fajls transcode eqdem minn ġurnata.", - "TaskRefreshChannels": "Aġġorna l-Kanali", - "TaskRefreshChannelsDescription": "Aġġorna l-informazzjoni tal-kanali tal-internet.", + "TaskRefreshTrickplayImagesDescription": "Joħloq previews trickplay għal videos fil-libreriji li għalihom hi attivata.", + "TaskUpdatePlugins": "Aġġorna l-Plugins", + "TaskCleanTranscode": "Naddaf id-Direttorju tat-Transcoding", + "TaskCleanTranscodeDescription": "Iħassar fajls tat-transcoding li huma eqdem minn ġurnata.", + "TaskRefreshChannels": "Aġġorna l-Istazzjonijiet", + "TaskRefreshChannelsDescription": "Aġġorna l-informazzjoni tal-istazzjonijiet tal-internet.", "TaskDownloadMissingSubtitles": "Niżżel is-sottotitli nieqsa", - "TaskOptimizeDatabase": "Ottimizza d-database", + "TaskOptimizeDatabase": "Ottimiżża d-database", "TaskKeyframeExtractor": "Estrattur ta' Keyframes", - "TaskKeyframeExtractorDescription": "Jiġbed il-keyframes mill-fajls tal-vidjow biex joħloq playlists HLS aktar preċiżi. Dan il-kompitu jista' jdum għal żmien twil.", + "TaskKeyframeExtractorDescription": "Jiġbed il-keyframes mill-fajls tal-videos biex jagħmel playlists HLS aktar preċiżi. Dan it-task jista' jdum żmien twil biex ilesti.", "TaskCleanCollectionsAndPlaylists": "Naddaf il-kollezzjonijiet u l-playlists", - "TaskCleanCollectionsAndPlaylistsDescription": "Ineħħi oġġetti minn kollezzjonijiet u playlists li m'għadhomx jeżistu." + "TaskCleanCollectionsAndPlaylistsDescription": "Ineħħi oġġetti minn kollezzjonijiet u playlists li m'għadhomx jeżistu.", + "TaskDownloadMissingLyrics": "Niżżel il-lirika nieqsa", + "TaskDownloadMissingLyricsDescription": "Iniżżel il-lirika għal-kanzunetti", + "TaskExtractMediaSegments": "Scan tas-Sezzjoni tal-Midja", + "TaskExtractMediaSegmentsDescription": "Jestratta jew iġib sezzjonijiet tal-midja minn plugins attivati tal-MediaSegment.", + "TaskMoveTrickplayImages": "Mexxi l-post tat-Trickplay Image", + "TaskMoveTrickplayImagesDescription": "Tmexxi l-files tat-trickplay li jeżistu skont kif inhi kkonfigurata l-librerija." }