diff -u xmms-scrobbler-0.3.7/xmms_scrobbler.c xmms-scrobbler-0.3.6/xmms_scrobbler.c
--- xmms-scrobbler-0.3.7/xmms_scrobbler.c	2005-02-01 18:57:12.000000000 -0500
+++ xmms-scrobbler-0.3.6/xmms_scrobbler.c	2005-02-05 12:18:16.470930603 -0500
@@ -121,8 +121,9 @@
 static void *xs_thread(void *data)
 {
 	int playing, pos, len, prevpos = -1, prevlen = -1,
-		otime = -1, oldtime = 0, dosubmit, run = 1;
-	char *charpos;
+		otime = -1, oldtime = 0, dosubmit, run = 1, i;
+	char *charpos, *dirname;
+	gboolean direxists;
 
 	otime = xmms_remote_get_output_time(0);
 	
@@ -198,14 +199,44 @@
 				if ((cfgfile = xmms_cfg_open_default_file())
 					!= NULL)
 				{
+					char *direntry = calloc(32, 1);
+
+					dirname = fname;
 					tmp = strrchr(fname, '.');
 					*tmp = '\0';
 					track = (char)atoi(tmp - 2);
 					pdebug(fmt_vastr("Track: %d", track),
 						DEBUG);
+					tmp = strrchr(dirname, '/');
+					*(tmp + 1) = '\0';
+					direxists = xmms_cfg_read_string(
+						cfgfile, "CDDA",
+						"directory", &fname);
+					for(i = 0; direxists == TRUE
+						&& strcmp(dirname, fname) != 0;)
+					{
+						i++;
+						snprintf(direntry, 31,
+							"directory%d", i);
+						direxists =
+							xmms_cfg_read_string(
+							  cfgfile, "CDDA",
+							  direntry, &fname);
+					}
+					if(i > 0)
+					{
+						snprintf(direntry, 31,
+							"device%d", i);
+					}
+					else
+					{
+						snprintf(direntry, 31,
+							"device");
+					}
 					xmms_cfg_read_string(cfgfile, "CDDA",
-						"device", &fname);
+						direntry, &fname);
 					xmms_cfg_free(cfgfile);
+					free(direntry);
 					pdebug(fmt_vastr("CD Device: %s",
 						fname), DEBUG);
 				}
