From 3d3de5ce13732d8680b6e0bf5eb1342aaf93ae89 Mon Sep 17 00:00:00 2001 From: bean223 <116837163+bean223@users.noreply.github.com> Date: Wed, 17 Sep 2025 21:14:59 +0100 Subject: [PATCH 1/2] Update SkyHookProxy.cs --- .../MetadataSource/SkyHook/SkyHookProxy.cs | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index 1aaeaaba7..5395e889b 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -196,8 +196,7 @@ public List SearchForNewArtist(string title) if (IsMbidQuery(lowerTitle)) { - var slug = lowerTitle.Split(':')[1].Trim(); - + var slug = ExtractGuidFromQuery(lowerTitle); var isValid = Guid.TryParse(slug, out var searchGuid); if (slug.IsNullOrWhiteSpace() || slug.Any(char.IsWhiteSpace) || isValid == false) @@ -258,8 +257,7 @@ public List SearchForNewAlbum(string title, string artist) if (IsMbidQuery(lowerTitle)) { - var slug = lowerTitle.Split(':')[1].Trim(); - + var slug = ExtractGuidFromQuery(lowerTitle); var isValid = Guid.TryParse(slug, out var searchGuid); if (slug.IsNullOrWhiteSpace() || slug.Any(char.IsWhiteSpace) || isValid == false) @@ -432,7 +430,31 @@ public List SearchForNewEntity(string title) private static bool IsMbidQuery(string query) { - return query.StartsWith("lidarr:") || query.StartsWith("lidarrid:") || query.StartsWith("mbid:"); + return query.StartsWith("lidarr:") || query.StartsWith("lidarrid:") || query.StartsWith("mbid:") || + query.StartsWith("http://") || query.StartsWith("https://"); + } + + private static string ExtractGuidFromQuery(string query) + { + if (query.StartsWith("http://") || query.StartsWith("https://")) + { + var lastSlash = query.LastIndexOf('/'); + if (lastSlash >= 0 && lastSlash < query.Length - 1) + { + return query.Substring(lastSlash + 1).Trim(); + } + return string.Empty; + } + else if (query.StartsWith("lidarr:") || query.StartsWith("lidarrid:") || query.StartsWith("mbid:")) + { + var parts = query.Split(':'); + if (parts.Length > 1) + { + return parts[1].Trim(); + } + return string.Empty; + } + return string.Empty; } private Artist MapSearchResult(ArtistResource resource) From c9a76454bf22d06550927a3f931eb0fd5994cf3b Mon Sep 17 00:00:00 2001 From: bean223 <116837163+bean223@users.noreply.github.com> Date: Thu, 18 Sep 2025 07:36:00 +0100 Subject: [PATCH 2/2] Update SkyHookProxy.cs --- .../MetadataSource/SkyHook/SkyHookProxy.cs | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index 5395e889b..ef38a5fd5 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -194,9 +194,10 @@ public List SearchForNewArtist(string title) { var lowerTitle = title.ToLowerInvariant(); - if (IsMbidQuery(lowerTitle)) + if (IsMbidQuery(lowerTitle) || IsMbidUrl(lowerTitle)) { var slug = ExtractGuidFromQuery(lowerTitle); + var isValid = Guid.TryParse(slug, out var searchGuid); if (slug.IsNullOrWhiteSpace() || slug.Any(char.IsWhiteSpace) || isValid == false) @@ -255,9 +256,10 @@ public List SearchForNewAlbum(string title, string artist) { var lowerTitle = title.ToLowerInvariant(); - if (IsMbidQuery(lowerTitle)) + if (IsMbidQuery(lowerTitle) || IsMbidUrl(lowerTitle)) { var slug = ExtractGuidFromQuery(lowerTitle); + var isValid = Guid.TryParse(slug, out var searchGuid); if (slug.IsNullOrWhiteSpace() || slug.Any(char.IsWhiteSpace) || isValid == false) @@ -362,7 +364,7 @@ public List SearchForNewEntity(string title) { var lowerTitle = title.ToLowerInvariant(); - if (IsMbidQuery(lowerTitle)) + if (IsMbidQuery(lowerTitle) || IsMbidUrl(lowerTitle)) { try { @@ -430,19 +432,24 @@ public List SearchForNewEntity(string title) private static bool IsMbidQuery(string query) { - return query.StartsWith("lidarr:") || query.StartsWith("lidarrid:") || query.StartsWith("mbid:") || - query.StartsWith("http://") || query.StartsWith("https://"); + return query.StartsWith("lidarr:") || query.StartsWith("lidarrid:") || query.StartsWith("mbid:"); + } + + private static bool IsMbidUrl(string query) + { + return query.StartsWith("https://musicbrainz.org/") || query.StartsWith("http://musicbrainz.org/"); } private static string ExtractGuidFromQuery(string query) { - if (query.StartsWith("http://") || query.StartsWith("https://")) + if (query.StartsWith("https://musicbrainz.org/") || query.StartsWith("http://musicbrainz.org/")) { var lastSlash = query.LastIndexOf('/'); if (lastSlash >= 0 && lastSlash < query.Length - 1) { return query.Substring(lastSlash + 1).Trim(); } + return string.Empty; } else if (query.StartsWith("lidarr:") || query.StartsWith("lidarrid:") || query.StartsWith("mbid:")) @@ -452,8 +459,10 @@ private static string ExtractGuidFromQuery(string query) { return parts[1].Trim(); } + return string.Empty; } + return string.Empty; }