+++ /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 () + "\""
-