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