diff --git a/plugins/artdisplay/artdisplay/CoverArtDatabase.py b/plugins/artdisplay/artdisplay/CoverArtDatabase.py
index f3e9b13..d05e546 100644
--- a/plugins/artdisplay/artdisplay/CoverArtDatabase.py
+++ b/plugins/artdisplay/artdisplay/CoverArtDatabase.py
@@ -22,15 +22,26 @@ import os
 import gtk
 import itertools
 import gobject
+from urllib import unquote
+
+ART_SEARCHES_LOCAL = []
+ART_SEARCHES_REMOTE = []
+
+from LocalCoverArtSearch import LocalCoverArtSearch
+ART_SEARCHES_LOCAL.append(LocalCoverArtSearch)
 
 from PodcastCoverArtSearch import PodcastCoverArtSearch
+ART_SEARCHES_REMOTE.append(PodcastCoverArtSearch)
+
 from AmazonCoverArtSearch import AmazonCoverArtSearch
-from LocalCoverArtSearch import LocalCoverArtSearch
+ART_SEARCHES_REMOTE.append(AmazonCoverArtSearch)
 
-from urllib import unquote
+try:
+	from MusicBrainzCoverArtSearch import MusicBrainzCoverArtSearch
+	ART_SEARCHES_REMOTE.append(MusicBrainzCoverArtSearch)
+except Exception, e:
+	print "Couldn't load musicbrainz search module: ", e
 
-ART_SEARCHES_LOCAL = [LocalCoverArtSearch]
-ART_SEARCHES_REMOTE = [PodcastCoverArtSearch, AmazonCoverArtSearch]
 ART_FOLDER = '~/.gnome2/rhythmbox/covers'
 ART_CACHE_EXTENSION = 'jpg'
 ART_CACHE_FORMAT = 'jpeg'
diff --git a/plugins/artdisplay/artdisplay/Makefile.am b/plugins/artdisplay/artdisplay/Makefile.am
index 7265f86..73dccaa 100644
--- a/plugins/artdisplay/artdisplay/Makefile.am
+++ b/plugins/artdisplay/artdisplay/Makefile.am
@@ -4,6 +4,7 @@ plugindir = $(PLUGINDIR)/artdisplay
 plugin_PYTHON = 			\
 	PodcastCoverArtSearch.py	\
 	AmazonCoverArtSearch.py		\
+	MusicBrainzCoverArtSearch.py	\
 	LocalCoverArtSearch.py		\
 	CoverArtDatabase.py		\
 	__init__.py
diff --git a/plugins/artdisplay/artdisplay/MusicBrainzCoverArtSearch.py b/plugins/artdisplay/artdisplay/MusicBrainzCoverArtSearch.py
new file mode 100644
index 0000000..08cfb93
--- /dev/null
+++ b/plugins/artdisplay/artdisplay/MusicBrainzCoverArtSearch.py
@@ -0,0 +1,56 @@
+# -*- Mode: python; coding: utf-8; tab-width: 8; indent-tabs-mode: t; -*- 
+#
+# Copyright (C) 2007 - Alex Lancaster
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA.
+
+from musicbrainz2.webservice import Query, WebServiceError
+
+import rhythmdb
+
+AMAZON_IMAGE_PREFIX = "http://images.amazon.com/images/P/"
+AMAZON_IMAGE_SUFFIX = ".01.LZZZZZZZ.jpg"
+
+class MusicBrainzCoverArtSearch (object):
+	def __init__ (self, loader):
+		pass
+
+	def search (self, db, entry, on_search_completed_callback, *args):
+		image_url = None
+
+		mb_albumid = db.entry_get(entry, rhythmdb.PROP_MUSICBRAINZ_ALBUMID)
+                if mb_albumid != "":
+		  print "querying ASIN for album ID %s" % (mb_albumid)
+		  try:
+		      # unfortunately synchronous
+		      query = Query()
+		      asin = query.getReleaseById(mb_albumid).getAsin()
+
+                      # construct amazon image URL if we got an ASIN
+		      if asin != u'<mblogo>' and asin != u'':
+		          print "got ASIN %s" % (asin)
+			  image_url = AMAZON_IMAGE_PREFIX + asin + AMAZON_IMAGE_SUFFIX
+
+		  except WebServiceError, e:
+		    print "got web service error: " + e
+
+		on_search_completed_callback (self, entry, image_url, *args)
+
+	def search_next (self):
+		return False
+
+	def get_best_match_urls (self, search_results):
+		return [search_results]
+
