From ecd2dab0a2550c80ae054576d9c05ddb24d5e47b Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Wed, 17 Jul 2024 15:48:21 +0200 Subject: Add TrySetProviderId extension --- .../Library/Resolvers/Movies/BoxSetResolver.cs | 6 +--- .../Library/Resolvers/Movies/MovieResolver.cs | 12 ++------ .../Library/Resolvers/TV/SeriesResolver.cs | 35 +++++----------------- 3 files changed, 10 insertions(+), 43 deletions(-) (limited to 'Emby.Server.Implementations/Library') diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs index 955055313e..4b15073858 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs @@ -68,11 +68,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies var justName = Path.GetFileName(item.Path.AsSpan()); var id = justName.GetAttributeValue("tmdbid"); - - if (!string.IsNullOrEmpty(id)) - { - item.SetProviderId(MetadataProvider.Tmdb, id); - } + item.TrySetProviderId(MetadataProvider.Tmdb, id); } } } diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 1a210e3cc8..4debe722b9 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -373,22 +373,14 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies { // Check for TMDb id var tmdbid = justName.GetAttributeValue("tmdbid"); - - if (!string.IsNullOrWhiteSpace(tmdbid)) - { - item.SetProviderId(MetadataProvider.Tmdb, tmdbid); - } + item.TrySetProviderId(MetadataProvider.Tmdb, tmdbid); } if (!string.IsNullOrEmpty(item.Path)) { // Check for IMDb id - we use full media path, as we can assume that this will match in any use case (whether id in parent dir or in file name) var imdbid = item.Path.AsSpan().GetAttributeValue("imdbid"); - - if (!string.IsNullOrWhiteSpace(imdbid)) - { - item.SetProviderId(MetadataProvider.Imdb, imdbid); - } + item.TrySetProviderId(MetadataProvider.Imdb, imdbid); } } } diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs index 1484c34bcc..fb48d7bf17 100644 --- a/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs @@ -186,46 +186,25 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV var justName = Path.GetFileName(path.AsSpan()); var imdbId = justName.GetAttributeValue("imdbid"); - if (!string.IsNullOrEmpty(imdbId)) - { - item.SetProviderId(MetadataProvider.Imdb, imdbId); - } + item.TrySetProviderId(MetadataProvider.Imdb, imdbId); var tvdbId = justName.GetAttributeValue("tvdbid"); - if (!string.IsNullOrEmpty(tvdbId)) - { - item.SetProviderId(MetadataProvider.Tvdb, tvdbId); - } + item.TrySetProviderId(MetadataProvider.Tvdb, tvdbId); var tvmazeId = justName.GetAttributeValue("tvmazeid"); - if (!string.IsNullOrEmpty(tvmazeId)) - { - item.SetProviderId(MetadataProvider.TvMaze, tvmazeId); - } + item.TrySetProviderId(MetadataProvider.TvMaze, tvmazeId); var tmdbId = justName.GetAttributeValue("tmdbid"); - if (!string.IsNullOrEmpty(tmdbId)) - { - item.SetProviderId(MetadataProvider.Tmdb, tmdbId); - } + item.TrySetProviderId(MetadataProvider.Tmdb, tmdbId); var anidbId = justName.GetAttributeValue("anidbid"); - if (!string.IsNullOrEmpty(anidbId)) - { - item.SetProviderId("AniDB", anidbId); - } + item.TrySetProviderId("AniDB", anidbId); var aniListId = justName.GetAttributeValue("anilistid"); - if (!string.IsNullOrEmpty(aniListId)) - { - item.SetProviderId("AniList", aniListId); - } + item.TrySetProviderId("AniList", aniListId); var aniSearchId = justName.GetAttributeValue("anisearchid"); - if (!string.IsNullOrEmpty(aniSearchId)) - { - item.SetProviderId("AniSearch", aniSearchId); - } + item.TrySetProviderId("AniSearch", aniSearchId); } } } -- cgit v1.2.3 From d3f0346f0498538ae3c0f34e4d17a6e1d044b4f8 Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Sat, 20 Apr 2024 16:43:25 +0200 Subject: Enable nullable for UserItemData MetadataResult.GetOrAddUserData doesn't ever get used and is probably broken since the migration to .NET Core as it still expects a Guid for userId --- .../Data/SqliteUserDataRepository.cs | 8 +++--- .../EntryPoints/UserDataChangeNotifier.cs | 5 ++-- .../Library/MediaSourceManager.cs | 7 ++--- MediaBrowser.Controller/Entities/UserItemData.cs | 10 +------ .../Providers/MetadataResult.cs | 31 ---------------------- MediaBrowser.Model/Dto/UserItemDataDto.cs | 5 ++-- MediaBrowser.Model/Session/UserDataChangeInfo.cs | 6 ++--- .../Providers/BaseVideoNfoProvider.cs | 5 ---- .../Parsers/MovieNfoParserTests.cs | 5 +++- 9 files changed, 20 insertions(+), 62 deletions(-) (limited to 'Emby.Server.Implementations/Library') diff --git a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs index 634eaf85ef..bfdcc08f42 100644 --- a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs @@ -333,10 +333,10 @@ namespace Emby.Server.Implementations.Data /// The user item data. private UserItemData ReadRow(SqliteDataReader reader) { - var userData = new UserItemData(); - - userData.Key = reader[0].ToString(); - // userData.UserId = reader[1].ReadGuidFromBlob(); + var userData = new UserItemData + { + Key = reader.GetString(0) + }; if (reader.TryGetDouble(2, out var rating)) { diff --git a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs index 957ad9c01b..47f9dfbc87 100644 --- a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs +++ b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -138,13 +137,13 @@ namespace Emby.Server.Implementations.EntryPoints return new UserDataChangeInfo { - UserId = userId.ToString("N", CultureInfo.InvariantCulture), + UserId = userId, UserDataList = changedItems .DistinctBy(x => x.Id) .Select(i => { var dto = _userDataManager.GetUserDataDto(i, user); - dto.ItemId = i.Id.ToString("N", CultureInfo.InvariantCulture); + dto.ItemId = i.Id; return dto; }) .ToArray() diff --git a/Emby.Server.Implementations/Library/MediaSourceManager.cs b/Emby.Server.Implementations/Library/MediaSourceManager.cs index bb22ca82fa..90a01c052c 100644 --- a/Emby.Server.Implementations/Library/MediaSourceManager.cs +++ b/Emby.Server.Implementations/Library/MediaSourceManager.cs @@ -379,7 +379,8 @@ namespace Emby.Server.Implementations.Library private void SetDefaultSubtitleStreamIndex(MediaSourceInfo source, UserItemData userData, User user, bool allowRememberingSelection) { - if (userData.SubtitleStreamIndex.HasValue + if (userData is not null + && userData.SubtitleStreamIndex.HasValue && user.RememberSubtitleSelections && user.SubtitleMode != SubtitlePlaybackMode.None && allowRememberingSelection) @@ -411,7 +412,7 @@ namespace Emby.Server.Implementations.Library private void SetDefaultAudioStreamIndex(MediaSourceInfo source, UserItemData userData, User user, bool allowRememberingSelection) { - if (userData.AudioStreamIndex.HasValue && user.RememberAudioSelections && allowRememberingSelection) + if (userData is not null && userData.AudioStreamIndex.HasValue && user.RememberAudioSelections && allowRememberingSelection) { var index = userData.AudioStreamIndex.Value; // Make sure the saved index is still valid @@ -434,7 +435,7 @@ namespace Emby.Server.Implementations.Library if (mediaType == MediaType.Video) { - var userData = item is null ? new UserItemData() : _userDataManager.GetUserData(user, item); + var userData = item is null ? null : _userDataManager.GetUserData(user, item); var allowRememberingSelection = item is null || item.EnableRememberingTrackSelections; diff --git a/MediaBrowser.Controller/Entities/UserItemData.cs b/MediaBrowser.Controller/Entities/UserItemData.cs index ecca440f05..15bd41a9c3 100644 --- a/MediaBrowser.Controller/Entities/UserItemData.cs +++ b/MediaBrowser.Controller/Entities/UserItemData.cs @@ -1,5 +1,3 @@ -#nullable disable - #pragma warning disable CS1591 using System; @@ -19,17 +17,11 @@ namespace MediaBrowser.Controller.Entities /// private double? _rating; - /// - /// Gets or sets the user id. - /// - /// The user id. - public Guid UserId { get; set; } - /// /// Gets or sets the key. /// /// The key. - public string Key { get; set; } + public required string Key { get; set; } /// /// Gets or sets the users 0-10 rating. diff --git a/MediaBrowser.Controller/Providers/MetadataResult.cs b/MediaBrowser.Controller/Providers/MetadataResult.cs index 952dd48703..cfff3eb144 100644 --- a/MediaBrowser.Controller/Providers/MetadataResult.cs +++ b/MediaBrowser.Controller/Providers/MetadataResult.cs @@ -2,9 +2,7 @@ #pragma warning disable CA1002, CA2227, CS1591 -using System; using System.Collections.Generic; -using System.Globalization; using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Entities; @@ -33,8 +31,6 @@ namespace MediaBrowser.Controller.Providers set => _remoteImages = value; } - public List UserDataList { get; set; } - public List People { get; set; } public bool HasMetadata { get; set; } @@ -68,32 +64,5 @@ namespace MediaBrowser.Controller.Providers People.Clear(); } } - - public UserItemData GetOrAddUserData(string userId) - { - UserDataList ??= new List(); - - UserItemData userData = null; - - foreach (var i in UserDataList) - { - if (string.Equals(userId, i.UserId.ToString("N", CultureInfo.InvariantCulture), StringComparison.OrdinalIgnoreCase)) - { - userData = i; - } - } - - if (userData is null) - { - userData = new UserItemData() - { - UserId = new Guid(userId) - }; - - UserDataList.Add(userData); - } - - return userData; - } } } diff --git a/MediaBrowser.Model/Dto/UserItemDataDto.cs b/MediaBrowser.Model/Dto/UserItemDataDto.cs index adb2cd2ab3..3bb45a0e04 100644 --- a/MediaBrowser.Model/Dto/UserItemDataDto.cs +++ b/MediaBrowser.Model/Dto/UserItemDataDto.cs @@ -1,4 +1,3 @@ -#nullable disable using System; namespace MediaBrowser.Model.Dto @@ -66,12 +65,12 @@ namespace MediaBrowser.Model.Dto /// Gets or sets the key. /// /// The key. - public string Key { get; set; } + public required string Key { get; set; } /// /// Gets or sets the item identifier. /// /// The item identifier. - public string ItemId { get; set; } + public Guid ItemId { get; set; } } } diff --git a/MediaBrowser.Model/Session/UserDataChangeInfo.cs b/MediaBrowser.Model/Session/UserDataChangeInfo.cs index 0fd24edccd..ccd768da51 100644 --- a/MediaBrowser.Model/Session/UserDataChangeInfo.cs +++ b/MediaBrowser.Model/Session/UserDataChangeInfo.cs @@ -1,4 +1,4 @@ -#nullable disable +using System; using MediaBrowser.Model.Dto; namespace MediaBrowser.Model.Session @@ -12,12 +12,12 @@ namespace MediaBrowser.Model.Session /// Gets or sets the user id. /// /// The user id. - public string UserId { get; set; } + public Guid UserId { get; set; } /// /// Gets or sets the user data list. /// /// The user data list. - public UserItemDataDto[] UserDataList { get; set; } + public required UserItemDataDto[] UserDataList { get; set; } } } diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs index 9954424a4c..85f327c934 100644 --- a/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/BaseVideoNfoProvider.cs @@ -54,11 +54,6 @@ namespace MediaBrowser.XbmcMetadata.Providers result.People = tmpItem.People; result.Images = tmpItem.Images; result.RemoteImages = tmpItem.RemoteImages; - - if (tmpItem.UserDataList is not null) - { - result.UserDataList = tmpItem.UserDataList; - } } /// diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs index 0a153b9cc1..5bc4abd06d 100644 --- a/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs +++ b/tests/Jellyfin.XbmcMetadata.Tests/Parsers/MovieNfoParserTests.cs @@ -53,7 +53,10 @@ namespace Jellyfin.XbmcMetadata.Tests.Parsers var userData = new Mock(); userData.Setup(x => x.GetUserData(_testUser, It.IsAny())) - .Returns(new UserItemData()); + .Returns(new UserItemData() + { + Key = "Something" + }); var directoryService = new Mock(); _localImageFileMetadata = new FileSystemMetadata() -- cgit v1.2.3