private ReleaseData GetReleaseImages(DatabaseRelease release)
        {
            ReleaseData data = new ReleaseData();

            data.Release = release;

            var searchResult   = this.RunSearch(release);
            var releaseResults = searchResult.Results.Cast <ReleaseSearchResult>().ToArray();
            List <ReleaseSearchResult> releasesToScan = new List <ReleaseSearchResult>();

            var firstReleases = releaseResults.Take(15).Select(r => this.discogs.GetRelease(r.Id)).ToArray();

            if (firstReleases.Any(r => this.MatchTracklist(release, r) && r.Images != null && r.Images.Length > 0))
            {
                foreach (ReleaseSearchResult releaseResult in releaseResults.Take(30))
                {
                    Release discogsRelease = this.discogs.GetRelease(releaseResult.Id);
                    if (this.MatchTracklist(release, discogsRelease) && discogsRelease.Images != null && discogsRelease.Images.Length > 0)
                    {
                        releasesToScan.Add(releaseResult);
                    }
                }
            }
            else
            {
                releasesToScan.AddRange(releaseResults);
            }

            foreach (var releaseResult in releasesToScan)
            {
                if (data.Images.Count >= 9)
                {
                    break;
                }

                var discogsRelease = discogs.GetRelease(releaseResult.Id);
                var image          = discogsRelease.Aggregate.DesiredImage;
                if (image == null)
                {
                    continue;
                }
                var imageData = this.discogs.GetImage(image.Uri);

                data.Images.Add(new ImageItem()
                {
                    Image = image,
                    Data  = imageData
                });
            }

            data.Deduplicate();

            return(data);
        }
        private ReleaseData GetReleaseImages(DatabaseRelease release)
        {
            ReleaseData data = new ReleaseData();
            data.Release = release;

            var searchResult = this.RunSearch(release);
            var releaseResults = searchResult.Results.Cast<ReleaseSearchResult>().ToArray();
            List<ReleaseSearchResult> releasesToScan = new List<ReleaseSearchResult>();

            var firstReleases = releaseResults.Take(15).Select(r => this.discogs.GetRelease(r.Id)).ToArray();
            if (firstReleases.Any(r => this.MatchTracklist(release, r) && r.Images != null && r.Images.Length > 0))
            {
                foreach (ReleaseSearchResult releaseResult in releaseResults.Take(30))
                {
                    Release discogsRelease = this.discogs.GetRelease(releaseResult.Id);
                    if (this.MatchTracklist(release, discogsRelease) && discogsRelease.Images != null && discogsRelease.Images.Length > 0)
                    {
                        releasesToScan.Add(releaseResult);
                    }
                }
            }
            else
            {
                releasesToScan.AddRange(releaseResults);
            }

            foreach (var releaseResult in releasesToScan)
            {
                if (data.Images.Count >= 9)
                {
                    break;
                }

                var discogsRelease = discogs.GetRelease(releaseResult.Id);
                var image = discogsRelease.Aggregate.DesiredImage;
                if (image == null)
                {
                    continue;
                }
                var imageData = this.discogs.GetImage(image.Uri);

                data.Images.Add(new ImageItem()
                {
                    Image = image,
                    Data = imageData
                });
            }

            data.Deduplicate();

            return data;
        }