diff --git a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs index a912109aa..c2292b271 100644 --- a/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/SkyHook/SkyHookProxy.cs @@ -175,23 +175,38 @@ namespace NzbDrone.Core.MetadataSource.SkyHook //return tempList; + Album tempAlbum; - // TODO: This needs to handle multiple artists. - Artist artist = new Artist(); - artist.ArtistName = httpResponse.Resource.Results[0].ArtistName; - artist.ItunesId = httpResponse.Resource.Results[0].ArtistId; + List artists = new List(); + ArtistComparer artistComparer = new ArtistComparer(); foreach (var album in httpResponse.Resource.Results) { tempAlbum = new Album(); + // TODO: Perform MapAlbum call here tempAlbum.AlbumId = album.CollectionId; tempAlbum.Title = album.CollectionName; - artist.Albums.Add(tempAlbum); + + int index = artists.FindIndex(a => a.ItunesId == album.ArtistId); + + + if (index >= 0) + { + artists[index].Albums.Add(tempAlbum); + } + else + { + Artist tempArtist = new Artist(); + // TODO: Perform the MapArtist call here + tempArtist.ItunesId = album.ArtistId; + tempArtist.ArtistName = album.ArtistName; + tempArtist.Albums.Add(tempAlbum); + artists.Add(tempArtist); + } + } - var temp = new List(); - temp.Add(artist); - return temp; + return artists; // I need to return a list of mapped artists. diff --git a/src/NzbDrone.Core/Music/Artist.cs b/src/NzbDrone.Core/Music/Artist.cs index 50c297a56..6cf856efe 100644 --- a/src/NzbDrone.Core/Music/Artist.cs +++ b/src/NzbDrone.Core/Music/Artist.cs @@ -9,6 +9,20 @@ using System.Text; namespace NzbDrone.Core.Music { + + public class ArtistComparer : IEqualityComparer + { + public bool Equals(Artist x, Artist y) + { + return x.ItunesId == y.ItunesId; + } + + public int GetHashCode(Artist obj) + { + throw new NotImplementedException(); + } + } + public class Artist : ModelBase { public Artist()