fca3c621fba08979bbccde500d388561534397d9
[mussorgsky] / src / album_art_spec.py
1 import os
2 import md5
3 import unicodedata
4 import string
5
6 COVERS_LOCATION = os.getenv ("HOME") + "/.cache/media-art/"
7 THUMBS_LOCATION = os.getenv ("HOME") + "/.thumbnails/normal/"
8
9 def getCoverArtFileName (album):
10     """Returns the cover art's filename that is formed from the album name."""
11     album = unicode (album)
12     albumString=dropInsideContent(album,"[","]" )
13     albumString=dropInsideContent(albumString,"{","}" )
14     albumString=dropInsideContent(albumString,"(",")" )    
15     albumString=albumString.strip('()_{}[]!@#$^&*+=|\\/"\'?<>~`')
16     albumString=albumString.lstrip(' ')
17     albumString=albumString.rstrip(' ')
18     albumString=dropInsideContent(albumString,"{","}" )
19     albumString=albumString.lower()
20     albumString=string.replace(albumString,"\t"," ")
21     albumString=string.replace(albumString,"  "," ")    
22     
23     try:
24         albumString=unicodedata.normalize('NFKD',albumString).encode()
25         albumString=albumString.encode()
26     except:
27         try:
28             albumString=albumString.encode('latin-1', 'ignore')
29             albumString=unicodedata.normalize('NFKD',albumString).encode("ascii")
30             albumString=str(albumString)
31             print albumString
32         except Exception, e:
33             albumString=str(albumString)
34             print "DEBUG: Using plain string"
35     if len(albumString)==0: albumString=" "
36      
37     albumMD5=md5.new(albumString).hexdigest()    
38     emptyMD5=md5.new(" ").hexdigest()
39     albumArt=COVERS_LOCATION + "album-" + emptyMD5 + "-" + albumMD5 + ".jpeg"
40     return albumArt
41
42
43 def getCoverArtThumbFileName (album):
44     artFile = getCoverArtFileName(album)
45     thumbFile = THUMBS_LOCATION + md5.new(artFile).hexdigest()+".jpeg"
46     return thumbFile
47
48 def get_thumb_filename_for_path (path):
49     thumbnail = THUMBS_LOCATION + md5.new (path).hexdigest () + ".jpeg"
50     return thumbnail
51
52 def dropInsideContent(s, startMarker, endMarker):
53     startPos=s.find(startMarker)
54     endPos=s.find(endMarker)
55     if startPos>0 and endPos>0 and endPos>startPos:
56             return s[0:startPos]+s[endPos+1:len(s)]
57     return s
58
59 if __name__ == "__main__":
60
61     print "album art: %s" % (getCoverArtFileName (unicode("Absolution")))
62     print "thumbnail: %s" % (getCoverArtThumbFileName (u"Absolution"))