6 COVERS_LOCATION = os.getenv ("HOME") + "/.cache/media-art/"
7 THUMBS_LOCATION = os.getenv ("HOME") + "/.thumbnails/cropped/"
9 # Hardcoded locations for testing in scratchbox
11 #COVERS_LOCATION = "/home/user/.cache/media-art/"
12 #THUMBS_LOCATION = "/home/user/.thumbnails/cropped/"
14 def getCoverArtFileName (album):
15 """Returns the cover art's filename that is formed from the album name."""
16 album = unicode (album)
17 albumString=dropInsideContent(album,"[","]" )
18 albumString=dropInsideContent(albumString,"{","}" )
19 albumString=dropInsideContent(albumString,"(",")" )
20 albumString=albumString.strip('()_{}[]!@#$^&*+=|\\/"\'?<>~`')
21 albumString=albumString.lstrip(' ')
22 albumString=albumString.rstrip(' ')
23 albumString=dropInsideContent(albumString,"{","}" )
24 albumString=albumString.lower()
25 albumString=string.replace(albumString,"\t"," ")
26 albumString=string.replace(albumString," "," ")
29 albumString=unicodedata.normalize('NFKD',albumString).encode()
30 albumString=albumString.encode()
33 albumString=albumString.encode('latin-1', 'ignore')
34 albumString=unicodedata.normalize('NFKD',albumString).encode("ascii")
35 albumString=str(albumString)
38 albumString=str(albumString)
39 print "DEBUG: Using plain string"
40 if len(albumString)==0: albumString=" "
42 albumMD5=md5.new(albumString).hexdigest()
43 emptyMD5=md5.new(" ").hexdigest()
44 albumArt=COVERS_LOCATION + "album-" + emptyMD5 + "-" + albumMD5 + ".jpeg"
48 def getCoverArtThumbFileName (album):
49 artFile = getCoverArtFileName(album)
50 if not artFile.startswith ("file://"):
51 artFile = "file://" + artFile
52 thumbFile = THUMBS_LOCATION + md5.new(artFile).hexdigest() + ".jpeg"
55 def get_thumb_filename_for_path (path):
56 if not path.startswith ("file://"):
57 path = "file://" + path
58 thumbnail = THUMBS_LOCATION + md5.new (path).hexdigest () + ".jpeg"
61 def dropInsideContent(s, startMarker, endMarker):
62 startPos=s.find(startMarker)
63 endPos=s.find(endMarker)
64 if startPos>0 and endPos>0 and endPos>startPos:
65 return s[0:startPos]+s[endPos+1:len(s)]
68 if __name__ == "__main__":
70 from optparse import OptionParser
72 parser = OptionParser()
73 parser.add_option ("-a", "--artist", dest="artist", type="string",
74 help="ARTIST to look for", metavar="ARTIST")
75 parser.add_option ("-b", "--album", dest="album", type="string",
76 help="ALBUM to look for", metavar="ALBUM")
78 (options, args) = parser.parse_args ()
80 if (not options.artist and not options.album):
84 print "Album art :", getCoverArtFileName (options.album)
85 print "Thumbnail (album):", getCoverArtThumbFileName (options.album)
86 print "Thumbnail (path) :", get_thumb_filename_for_path (getCoverArtFileName(options.album))