--- /dev/null
+# -*- coding: utf-8 -*-
+from PySide.QtCore import QRegExp
+import re
+import hashlib
+import os
+
+MULTIWHITE = re.compile ("\s\s+")
+
+MEDIAART_PATH = os.path.join (os.environ["HOME"], ".cache", "media-art")
+GENERATED_PATH = os.path.join (os.environ["HOME"], ".cache", "music-suite", "generated")
+THUMB_PATH = os.path.join (os.environ["HOME"], ".cache", "music-suite", "thumbnails")
+
+#
+# Python translation of :
+# https://qt.gitorious.org/qt/qt/blobs/d12681a4cf1227d0e92fc7cf12aa3977e6ffe3fe/src/corelib/tools/qhash.cpp#line76
+#
+def qhash (inputstr):
+
+ if isinstance (inputstr, str):
+ instr = inputstr
+ elif isinstance (inputstr, unicode):
+ instr = inputstr.encode ("utf8")
+ else:
+ return -1
+
+ h = 0x00000000
+ for i in range (0, len (instr)):
+ h = (h << 4) + ord(instr[i])
+ h ^= (h & 0xf0000000) >> 23
+ h &= 0x0fffffff
+
+ return h
+
+class AlbumArt:
+ def __init__ (self, album, artist, flavor="common", aaType="album"):
+ self.album = album
+ self.albumMD5 = self.__get_md5 (album)
+ self.artist = artist
+ self.artistMD5 = self.__get_md5 (artist)
+ self.flavor = "common"
+ self.aaType = "album"
+
+ def get_media_art_path (self):
+ """
+ The raw media-art downloaded or taken from the folder with the music files
+ """
+ filename = "album-" + self.artistMD5 + "-" + self.albumMD5 + ".jpeg"
+ return os.path.join (MEDIAART_PATH, filename)
+
+ def get_generated (self):
+ filename = str (qhash (self.album + self.artist + self.flavor + self.aaType)) + ".png"
+ return os.path.join (GENERATED_PATH, self.flavor, filename)
+
+ def get_thumbnail (self):
+ filename = str (qhash (self.album + self.artist + self.flavor + self.aaType)) + ".jpeg"
+ return os.path.join (THUMB_PATH, self.flavor, filename)
+
+
+
+ def __get_md5 (self, something):
+ if not something or len (something) == 0:
+ something = " "
+ else:
+ # This can very probably be done with the native python regexp
+ blocks = QRegExp ("(\\([^\\)]*\\))" +
+ "|(\\[[^\\]]*\\])" +
+ "|(\\{[^\\}]*\\})" +
+ "|(\\<[^\\>]*\\>)")
+ something = blocks.replace (something, "")
+
+ evilchars = QRegExp ("[\\(\\)\\_\\{\\}\\[\\]\\!\\@\\#\\$\\^\\&\\*\\+\\=\\|\\\\\\/\\\"\\'\\?\\<\\>\\~\\`]+")
+ something = evilchars.replace (something, "")
+
+
+ something = MULTIWHITE.sub (" ", something)
+ something = something.strip ()
+
+ md5 = hashlib.md5 (something.lower ().encode ("utf-8"))
+ return md5.hexdigest ()
+
+
+if __name__ == "__main__":
+
+ aa = AlbumArt ("Breakfast in america", "Björk")
+ print "Source: \"" + aa.get_media_art_path () + "\""
+ print "Generated: \"" + aa.get_generated () + "\""
+ print "Thumbnail: \"" + aa.get_thumbnail () + "\""
+