Index: plugins/magnatune/magnatune/TrackListHandler.py
===================================================================
--- plugins/magnatune/magnatune/TrackListHandler.py	(revision 4871)
+++ plugins/magnatune/magnatune/TrackListHandler.py	(working copy)
@@ -23,13 +23,14 @@
 
 class TrackListHandler(xml.sax.handler.ContentHandler):
 
-	def __init__(self, db, entry_type, sku_dict, home_dict, buy_dict):
+	def __init__(self, db, entry_type, sku_dict, home_dict, buy_dict, art_dict):
 		xml.sax.handler.ContentHandler.__init__(self)
 		self.__db = db
 		self.__entry_type = entry_type
 		self.__sku_dict = sku_dict
 		self.__home_dict = home_dict
 		self.__buy_dict = buy_dict
+		self.__art_dict = art_dict
 		self.__track = {}
 
 	def startElement(self, name, attrs):
@@ -60,6 +64,7 @@
 				self.__sku_dict[self.__track['url']] = self.__track['albumsku']
 				self.__home_dict[self.__track['url']] = self.__track['home']
 				self.__buy_dict[self.__track['url']] = self.__track['buy'].replace("buy_album", "buy_cd", 1)
+				self.__art_dict[self.__track['url']] = self.__track['cover_small']
 
 				self.__db.commit()
 			except Exception,e: # This happens on duplicate uris being added
Index: plugins/magnatune/magnatune/__init__.py
===================================================================
--- plugins/magnatune/magnatune/__init__.py	(revision 4871)
+++ plugins/magnatune/magnatune/__init__.py	(working copy)
@@ -130,6 +130,8 @@
 		manager.insert_action_group(self.action_group, 0)
 		self.ui_id = manager.add_ui_from_string(popup_ui)
 		manager.ensure_update()
+		
+		self.pec_id = shell.get_player().connect('playing-song-changed', self.playing_entry_changed)
 
 	def deactivate(self, shell):
 		manager = shell.get_player().get_property('ui-manager')
@@ -137,6 +139,8 @@
 		manager.remove_action_group(self.action_group)
 		self.action_group = None
 
+		shell.get_player().disconnect (self.pec_id)
+
 		self.db.entry_delete_by_type(self.entry_type)
 		self.db.commit()
 		self.db = None
@@ -146,6 +150,8 @@
 		self.shell = None
 		self.keyring = None
 
+	def playing_entry_changed (self, sp, entry):
+		self.source.playing_entry_changed (entry)
 
 	def get_keyring(self):
 		if self.keyring is None:
Index: plugins/magnatune/magnatune/MagnatuneSource.py
===================================================================
--- plugins/magnatune/magnatune/MagnatuneSource.py	(revision 4871)
+++ plugins/magnatune/magnatune/MagnatuneSource.py	(working copy)
@@ -28,6 +28,7 @@
 import urllib, zipfile
 
 has_gnome_keyring = False
+
 #try:
 #	import gnomekeyring
 #	has_gnome_keyring = True
@@ -59,6 +60,7 @@
 		self.__sku_dict = {}
 		self.__home_dict = {}
 		self.__buy_dict = {}
+		self.__art_dict = {}
 
 		# catalogue stuff
 		self.__activated = False
@@ -307,7 +309,7 @@
 				return
 
 		parser = xml.sax.make_parser()
-		parser.setContentHandler(TrackListHandler(self.__db, self.__entry_type, self.__sku_dict, self.__home_dict, self.__buy_dict))
+		parser.setContentHandler(TrackListHandler(self.__db, self.__entry_type, self.__sku_dict, self.__home_dict, self.__buy_dict, self.__art_dict))
 		handle.read (64 * 1024, self.__load_catalogue_read_cb, parser)
 
 	def __load_catalogue(self):
@@ -564,6 +562,18 @@
 		manager = shell.get_player().get_property('ui-manager')
 		manager.get_action("/MagnatuneSourceViewPopup/MagnatuneCancelDownload").set_sensitive(False)
 
+	def playing_entry_changed (self, entry):
+		if not self.__db or not entry:
+			return
+
+		if entry.get_entry_type() != self.__db.entry_type_get_by_name("MagnatuneEntryType"):
+			return
+		
+		url = str(self.__art_dict[self.__db.entry_get(entry, rhythmdb.PROP_LOCATION)])
+		
+		self.__db.emit_entry_extra_metadata_notify (entry, 'rb:coverArt-uri', url)
+
+
 gobject.type_register(MagnatuneSource)
 
 
