I recently played with building a C# media player with built-in music library and wanted it to show album covers like Windows Media Player 11 does. It proved quite difficult because there is no free service for downloads of album covers as far as I know. Then I stumbled upon a Coding4Fun article that used the Amazon web service for retrieval of book covers and thought it might also work for album covers. Sure enough, it did.

You can start to download album covers in three simple steps that only take 5 minutes.

  • Register for free at Amazon to get your devtag (or use mine, see the code below)
  • Add a web reference to your Visual Studio project
  • Use a simple method to download the album art

After you’ve registered to get your devtag, you can add the web service to your Visual Studio project. The address of the Amazon web service is http://soap.amazon.com/schemas3/AmazonWebServices.wsdl. Be sure to rename the Web reference name to "Amazon" in the dialog below.

 

That’s all the groundwork; now just use this simple method to start downloading album covers.

using System;

using System.Web;

using System.Web.Services.Protocols;

using System.Net;

using System.IO;

using Amazon;

 

public bool DownloadAlbumArt(string albumArtist, string albumTitle, string dirName)

{

  using (WebClient webClient = new WebClient())

  {

    KeywordRequest req = new KeywordRequest();

    req.keyword = albumArtist + " " + albumTitle;

    // Remember to register to get your own devtag.

    req.devtag = "D1QFTS4VAA6C72";

    req.mode = "music";

    req.type = "lite";

    req.page = "1";

 

    using (AmazonSearchService search = new AmazonSearchService())

    {

      try

      {

        ProductInfo productInfo = search.KeywordSearchRequest(req);

 

        if (productInfo.Details.Length > 0)

        {

          string url = productInfo.Details[0].ImageUrlLarge;

          webClient.DownloadFile(url, dirName + "/" + albumTitle + ".jpg");

        }

 

        return productInfo.Details.Length > 0;

      }

      catch (SoapException)

      {

        return false;

      }

    }

  }
}

Then call the method with this line of code:

DownloadAlbumArt("metallica", "load", @"c:\");

That will download this album cover to C:\load.jpg.

This is another example of something that seems difficult at first, but actually is pretty easy.

Comments


Comments are closed