diff options
5 files changed, 37 insertions, 40 deletions
diff --git a/MediaBrowser.Providers/Plugins/MusicBrainz/Configuration/PluginConfiguration.cs b/MediaBrowser.Providers/Plugins/MusicBrainz/Configuration/PluginConfiguration.cs index 1d4b88087..22229e377 100644 --- a/MediaBrowser.Providers/Plugins/MusicBrainz/Configuration/PluginConfiguration.cs +++ b/MediaBrowser.Providers/Plugins/MusicBrainz/Configuration/PluginConfiguration.cs @@ -23,11 +23,7 @@ public class PluginConfiguration : BasePluginConfiguration { get => _server; - set - { - _server = value.TrimEnd('/'); - Query.DefaultServer = _server; - } + set => _server = value.TrimEnd('/'); } /// <summary> @@ -46,8 +42,6 @@ public class PluginConfiguration : BasePluginConfiguration { _rateLimit = value; } - - Query.DelayBetweenRequests = _rateLimit; } } diff --git a/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs index e88a51c19..4d9feca6d 100644 --- a/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs +++ b/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs @@ -28,6 +28,12 @@ public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum, Albu /// </summary> public MusicBrainzAlbumProvider() { + MusicBrainz.Plugin.Instance!.ConfigurationChanged += (_, _) => + { + Query.DefaultServer = MusicBrainz.Plugin.Instance.Configuration.Server; + Query.DelayBetweenRequests = MusicBrainz.Plugin.Instance.Configuration.RateLimit; + }; + _musicBrainzQuery = new Query(); } @@ -45,14 +51,14 @@ public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum, Albu if (!string.IsNullOrEmpty(releaseId)) { - var releaseResult = await _musicBrainzQuery.LookupReleaseAsync(new Guid(releaseId), Include.Releases, cancellationToken).ConfigureAwait(false); - return GetResultFromResponse(releaseResult).SingleItemAsEnumerable(); + var releaseResult = await _musicBrainzQuery.LookupReleaseAsync(new Guid(releaseId), Include.ReleaseGroups, cancellationToken).ConfigureAwait(false); + return GetReleaseResult(releaseResult).SingleItemAsEnumerable(); } if (!string.IsNullOrEmpty(releaseGroupId)) { - var releaseGroupResult = await _musicBrainzQuery.LookupReleaseGroupAsync(new Guid(releaseGroupId), Include.ReleaseGroups, null, cancellationToken).ConfigureAwait(false); - return GetResultsFromResponse(releaseGroupResult.Releases); + var releaseGroupResult = await _musicBrainzQuery.LookupReleaseGroupAsync(new Guid(releaseGroupId), Include.None, null, cancellationToken).ConfigureAwait(false); + return GetReleaseGroupResult(releaseGroupResult.Releases); } var artistMusicBrainzId = searchInfo.GetMusicBrainzArtistId(); @@ -64,7 +70,7 @@ public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum, Albu if (releaseSearchResults.Results.Count > 0) { - return GetResultsFromResponse(releaseSearchResults.Results); + return GetReleaseSearchResult(releaseSearchResults.Results); } } else @@ -77,14 +83,14 @@ public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum, Albu if (releaseSearchResults.Results.Count > 0) { - return GetResultsFromResponse(releaseSearchResults.Results); + return GetReleaseSearchResult(releaseSearchResults.Results); } } return Enumerable.Empty<RemoteSearchResult>(); } - private IEnumerable<RemoteSearchResult> GetResultsFromResponse(IEnumerable<ISearchResult<IRelease>>? releaseSearchResults) + private IEnumerable<RemoteSearchResult> GetReleaseSearchResult(IEnumerable<ISearchResult<IRelease>>? releaseSearchResults) { if (releaseSearchResults is null) { @@ -93,11 +99,11 @@ public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum, Albu foreach (var result in releaseSearchResults) { - yield return GetResultFromResponse(result.Item); + yield return GetReleaseResult(result.Item); } } - private IEnumerable<RemoteSearchResult> GetResultsFromResponse(IEnumerable<IRelease>? releaseSearchResults) + private IEnumerable<RemoteSearchResult> GetReleaseGroupResult(IEnumerable<IRelease>? releaseSearchResults) { if (releaseSearchResults is null) { @@ -106,11 +112,11 @@ public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum, Albu foreach (var result in releaseSearchResults) { - yield return GetResultFromResponse(result); + yield return GetReleaseResult(result); } } - private RemoteSearchResult GetResultFromResponse(IRelease releaseSearchResult) + private RemoteSearchResult GetReleaseResult(IRelease releaseSearchResult) { var searchResult = new RemoteSearchResult { @@ -159,10 +165,13 @@ public class MusicBrainzAlbumProvider : IRemoteMetadataProvider<MusicAlbum, Albu if (string.IsNullOrWhiteSpace(releaseId) && !string.IsNullOrWhiteSpace(releaseGroupId)) { // TODO: Actually try to match the release. Simply taking the first result is stupid. - var releaseGroup = await _musicBrainzQuery.LookupReleaseGroupAsync(new Guid(releaseGroupId), Include.ReleaseGroups, null, cancellationToken).ConfigureAwait(false); + var releaseGroup = await _musicBrainzQuery.LookupReleaseGroupAsync(new Guid(releaseGroupId), Include.None, null, cancellationToken).ConfigureAwait(false); var release = releaseGroup.Releases?.Count > 0 ? releaseGroup.Releases[0] : null; - releaseId = release?.Id.ToString(); - result.HasMetadata = true; + if (release != null) + { + releaseId = release.Id.ToString(); + result.HasMetadata = true; + } } // If there is no release ID, lookup a release with the info we have diff --git a/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistExternalId.cs b/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistExternalId.cs index e2fb5621b..b89e67270 100644 --- a/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistExternalId.cs +++ b/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistExternalId.cs @@ -6,7 +6,7 @@ using MediaBrowser.Model.Providers; namespace MediaBrowser.Providers.Plugins.MusicBrainz; /// <summary> -/// MusicBrains Artist ExternalId. +/// MusicBrainz artist external id. /// </summary> public class MusicBrainzArtistExternalId : IExternalId { diff --git a/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistProvider.cs b/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistProvider.cs index 1d2c9c2c8..2cc3a13be 100644 --- a/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistProvider.cs +++ b/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzArtistProvider.cs @@ -29,6 +29,12 @@ public class MusicBrainzArtistProvider : IRemoteMetadataProvider<MusicArtist, Ar /// </summary> public MusicBrainzArtistProvider() { + MusicBrainz.Plugin.Instance!.ConfigurationChanged += (_, _) => + { + Query.DefaultServer = MusicBrainz.Plugin.Instance.Configuration.Server; + Query.DelayBetweenRequests = MusicBrainz.Plugin.Instance.Configuration.RateLimit; + }; + _musicBrainzQuery = new Query(); } @@ -42,7 +48,7 @@ public class MusicBrainzArtistProvider : IRemoteMetadataProvider<MusicArtist, Ar if (!string.IsNullOrWhiteSpace(artistId)) { - var artistResult = await _musicBrainzQuery.LookupArtistAsync(new Guid(artistId), Include.Artists, null, null, cancellationToken).ConfigureAwait(false); + var artistResult = await _musicBrainzQuery.LookupArtistAsync(new Guid(artistId), Include.Aliases, null, null, cancellationToken).ConfigureAwait(false); return GetResultFromResponse(artistResult).SingleItemAsEnumerable(); } @@ -80,19 +86,6 @@ public class MusicBrainzArtistProvider : IRemoteMetadataProvider<MusicArtist, Ar } } - private IEnumerable<RemoteSearchResult> GetResultsFromResponse(IEnumerable<IArtist>? releaseSearchResults) - { - if (releaseSearchResults is null) - { - yield break; - } - - foreach (var result in releaseSearchResults) - { - yield return GetResultFromResponse(result); - } - } - private RemoteSearchResult GetResultFromResponse(IArtist artist) { var searchResult = new RemoteSearchResult diff --git a/MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs b/MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs index 270d76e6d..39cfd727f 100644 --- a/MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs +++ b/MediaBrowser.Providers/Plugins/MusicBrainz/Plugin.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Net.Http.Headers; -using System.Reflection; +using MediaBrowser.Common; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; using MediaBrowser.Model.Plugins; @@ -21,14 +21,15 @@ public class Plugin : BasePlugin<PluginConfiguration>, IHasWebPages /// </summary> /// <param name="applicationPaths">Instance of the <see cref="IApplicationPaths"/> interface.</param> /// <param name="xmlSerializer">Instance of the <see cref="IXmlSerializer"/> interface.</param> - public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) + /// <param name="applicationHost">Instance of the <see cref="IApplicationHost"/> interface.</param> + public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer, IApplicationHost applicationHost) : base(applicationPaths, xmlSerializer) { Instance = this; // TODO: Change this to "JellyfinMusicBrainzPlugin" once we take it out of the server repo. - Query.DefaultUserAgent.Add(new ProductInfoHeaderValue("Jellyfin", Assembly.GetExecutingAssembly().GetName().Version?.ToString(3))); - Query.DefaultUserAgent.Add(new ProductInfoHeaderValue("(apps@jellyfin.org)")); + Query.DefaultUserAgent.Add(new ProductInfoHeaderValue(applicationHost.Name.Replace(' ', '-'), applicationHost.ApplicationVersionString)); + Query.DefaultUserAgent.Add(new ProductInfoHeaderValue($"({applicationHost.ApplicationUserAgentAddress})")); Query.DelayBetweenRequests = Instance.Configuration.RateLimit; Query.DefaultServer = Instance.Configuration.Server; } |
