private DataList<ImageInfo> getImages(string artistName, string albumName, Int64? fileId, Boolean getOneImage) { try { DataList<ImageInfo> returnList = new DataList<ImageInfo>(); if (canCallAmazon(artistName, albumName)) { AmazonECS service = new AmazonECSQuery(accessKeyId, ""); byte[] returnArr = null; ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "Music"; request.ResponseGroup = new List<String>(new String[] { "Images" }); request.Artist = artistName; request.Title = albumName; ItemSearchResponse response = service.ItemSearch(request); if (response.Items.Count == 1) { DataList<Item> items = new DataList<Item>(response.Items[0].Item); foreach (Item itm in items) { if (itm.MediumImage != null) { String url = itm.MediumImage.URL; String extension = Static.GetFileExtension(itm.MediumImage.URL); String md5Hash; using (WebClient Client = new WebClient()) { returnArr = Client.DownloadData(url); md5Hash = new Hex(MD5Stream.GetHash(returnArr)); returnList.Add(new ImageInfo { Data = returnArr, Extension = extension, webUrl = url, md5Hash = md5Hash }); } if (getOneImage) break; } } if (returnList.Count > 0) calledAmazon(artistName, albumName, true); Logging.Info(typeof(AmazonAssociatesImageProvider), String.Format("Amazon Search for {0} ({1}) {2} results", artistName, albumName, returnList.Count)); } else if (response.Items.Count > 1) Logging.Warn(typeof(AmazonAssociatesImageProvider), "More than one search result"); else Logging.Warn(typeof(AmazonAssociatesImageProvider), String.Format("No search result ({0}, {1})", artistName, albumName)); } else { Logging.Debug(typeof(AmazonAssociatesImageProvider), String.Format("Will not call Amazon, because of last calls: {0}, {1}, {2}", artistName, albumName, fileId)); } return returnList; } catch (Exception e) { Logging.Error(typeof(AmazonAssociatesImageProvider), e); calledAmazon(artistName, albumName, false); return null; } }