|
@@ -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
|