Force utf8 in string encoding. Still incorrect values with umlauts
[mussorgsky] / src / album_art_spec.py
index fca3c62..4735c65 100644 (file)
@@ -4,24 +4,27 @@ import unicodedata
 import string
 
 COVERS_LOCATION = os.getenv ("HOME") + "/.cache/media-art/"
-THUMBS_LOCATION = os.getenv ("HOME") + "/.thumbnails/normal/"
+THUMBS_LOCATION = os.getenv ("HOME") + "/.thumbnails/cropped/"
+
+# Hardcoded locations for testing in scratchbox 
+#
+#COVERS_LOCATION = "/home/user/.cache/media-art/"
+#THUMBS_LOCATION = "/home/user/.thumbnails/cropped/"
 
 def getCoverArtFileName (album):
     """Returns the cover art's filename that is formed from the album name."""
-    album = unicode (album)
+    album = unicode (album, "utf8")
     albumString=dropInsideContent(album,"[","]" )
     albumString=dropInsideContent(albumString,"{","}" )
-    albumString=dropInsideContent(albumString,"(",")" )    
-    albumString=albumString.strip('()_{}[]!@#$^&*+=|\\/"\'?<>~`')
-    albumString=albumString.lstrip(' ')
-    albumString=albumString.rstrip(' ')
+    albumString=dropInsideContent(albumString,"(",")" )
+    for special_char in '()_{}[]!@#$^&*+=|\\/"\'?<>~`':
+        albumString=albumString.replace(special_char, "")
     albumString=dropInsideContent(albumString,"{","}" )
     albumString=albumString.lower()
     albumString=string.replace(albumString,"\t"," ")
-    albumString=string.replace(albumString,"  "," ")    
-    
+    albumString=" ".join (albumString.split ())
     try:
-        albumString=unicodedata.normalize('NFKD',albumString).encode()
+        albumString=unicodedata.normalize('NFKD',albumString).encode("utf8")
         albumString=albumString.encode()
     except:
         try:
@@ -42,10 +45,14 @@ def getCoverArtFileName (album):
 
 def getCoverArtThumbFileName (album):
     artFile = getCoverArtFileName(album)
-    thumbFile = THUMBS_LOCATION + md5.new(artFile).hexdigest()+".jpeg"
+    if not artFile.startswith ("file://"):
+        artFile = "file://" + artFile
+    thumbFile = THUMBS_LOCATION + md5.new(artFile).hexdigest() + ".jpeg"
     return thumbFile
 
 def get_thumb_filename_for_path (path):
+    if not path.startswith ("file://"):
+        path = "file://" + path
     thumbnail = THUMBS_LOCATION + md5.new (path).hexdigest () + ".jpeg"
     return thumbnail
 
@@ -57,6 +64,21 @@ def dropInsideContent(s, startMarker, endMarker):
     return s
 
 if __name__ == "__main__":
+    import sys
+    from optparse import OptionParser
+
+    parser = OptionParser()
+    parser.add_option ("-a", "--artist", dest="artist", type="string",
+                       help="ARTIST to look for", metavar="ARTIST")
+    parser.add_option ("-b", "--album", dest="album", type="string",
+                       help="ALBUM to look for", metavar="ALBUM")
+
+    (options, args) = parser.parse_args ()
+    print options
+    if (not options.artist and not options.album):
+        parser.print_help ()
+        sys.exit (-1)
 
-    print "album art: %s" % (getCoverArtFileName (unicode("Absolution")))
-    print "thumbnail: %s" % (getCoverArtThumbFileName (u"Absolution"))
+    print "Album art        :", getCoverArtFileName (options.album)
+    print "Thumbnail (album):", getCoverArtThumbFileName (options.album)
+    print "Thumbnail (path) :", get_thumb_filename_for_path (getCoverArtFileName(options.album))