=== modified file 'banshee/src/Core/Banshee.Core/Banshee.Base/CoverArtSpec.cs'
--- banshee/src/Core/Banshee.Core/Banshee.Base/CoverArtSpec.cs	2008-10-01 19:18:47 +0000
+++ banshee/src/Core/Banshee.Core/Banshee.Base/CoverArtSpec.cs	2008-11-19 22:55:25 +0000
@@ -29,6 +29,7 @@
 using System;
 using System.IO;
 using System.Text.RegularExpressions;
+using System.Security.Cryptography; 
 
 using Mono.Unix;
 
@@ -75,16 +76,16 @@
 
         public static string CreateArtistAlbumId (string artist, string album, bool asUriPart)
         {
-            if (artist == unknown_artist || artist == unknown_artist_tr || album == unknown_album || album == unknown_album_tr) {
+            if (artist == unknown_artist ||
+                artist == unknown_artist_tr ||
+                album == unknown_album ||
+                album == unknown_album_tr ||
+                String.IsNullOrEmpty (artist) ||
+                String.IsNullOrEmpty (album)) {
                 return null;
             }
-
-            string sm_artist = EscapePart (artist);
-            string sm_album = EscapePart (album);
-
-            return String.IsNullOrEmpty (sm_artist) || String.IsNullOrEmpty (sm_album)
-                ? null 
-                : String.Format ("{0}{1}{2}", sm_artist, asUriPart ? "/" : "-", sm_album); 
+            
+            return EscapePart (String.Format ("{0}\x00{1}", artist, album)); 
         }
         
         public static string EscapePart (string part)
@@ -98,8 +99,10 @@
                 part = part.Substring (0, lp_index);
             }
             
-            // TODO compile regex
-            return Regex.Replace (part, @"[^A-Za-z0-9]*", "").ToLower ();
+            byte[] part_bytes = System.Text.Encoding.UTF8.GetBytes (part.ToLower ());
+            HashAlgorithm hash = (HashAlgorithm) SHA1.Create ();
+            byte[] digest = hash.ComputeHash (part_bytes);
+            return BitConverter.ToString (digest).Replace ("-", "").ToLower ();
         }
         
         private static string root_path = Path.Combine (XdgBaseDirectorySpec.GetUserDirectory (

