bestofimms
author fabien
Sun, 08 Feb 2004 17:27:21 -0500
branchimmsview
changeset 32 85c8f5280d48
parent 31 13f56bb29b96
child 33 ad808d18c693
permissions -rwxr-xr-x
[svn] Conversion of bestofimms to imms.py.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     1
#!/usr/bin/python
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     2
32
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
     3
import imms
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     4
from htmltmpl import TemplateManager, TemplateProcessor
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     5
import os
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     6
import ID3
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     7
from sys import stderr
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     8
from ogg.vorbis import VorbisFile
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     9
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    10
_template = __file__ + '.tmpl'
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    11
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    12
def rating_to_color(rating):
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    13
	i = rating - 75
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    14
    	if i <= 25:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    15
       		red = 255
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    16
		green = i * 255 / 25
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    17
		blue = 0
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    18
	elif i <= 50:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    19
		red = (50-i) * 255 / 25
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    20
		green = 255
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    21
		blue = 0
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    22
	else:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    23
		red = 0
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    24
		green = 255
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    25
		blue = (i-50) * 255 / 25
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    26
	return "#%02X%02X%02X" % (red, green, blue)
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    27
32
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    28
def sort_rating(x, y):
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    29
        return x['rating']-y['rating']
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    30
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    31
def grab_tunes():
32
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    32
	db = imms.IMMSDb()
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    33
        rates = db.get_ratings(125)
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    34
        uids = map(lambda x: x[0], rates)
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    35
        files = db.get_paths(uids)
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    36
        d = {}
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    37
        for fn in files:
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    38
                d[fn[0]] = fn[2]
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    39
        res = []
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    40
        for rate in rates:
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    41
                try:
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    42
                        t = { 'rating': rate[1],
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    43
                              'path' : d[rate[0]] }
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    44
                        res.append(t)
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    45
                except KeyError:
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    46
                        pass
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    47
        res.sort(lambda x, y: -sort_rating(x, y))
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    48
        return res
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    49
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    50
def check_tunes(tunes):
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    51
	res = []
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    52
	for tune in tunes:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    53
		song = tune['path']
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    54
		try:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    55
			os.stat(song)
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    56
		except:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    57
			continue
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    58
		tune['color'] = rating_to_color(tune['rating'])
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    59
		if song[-4:] == '.mp3':
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    60
			id3 = ID3.ID3(song)
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    61
			try:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    62
				tune['path'] = \
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    63
					id3['ARTIST'] + \
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    64
					' - ' + id3['TITLE']
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    65
			except:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    66
				pass
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    67
		elif song[-4:] == '.ogg':
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    68
			vf = VorbisFile(song)
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    69
			vc = vf.comment()
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    70
			try:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    71
				tune['path'] = \
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    72
					vc['ARTIST'][0] + \
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    73
					u' - ' + vc['TITLE'][0]
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    74
			except:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    75
				pass
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    76
		res.append(tune)
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    77
	return res
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    78
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    79
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    80
def output_web():
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    81
	tproc = TemplateProcessor()
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    82
	tmpl = TemplateManager().prepare(_template)
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    83
	tproc.set('Bestof', check_tunes(grab_tunes()))
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    84
	print tproc.process(tmpl)
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    85
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    86
if __name__ == '__main__':
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    87
	output_web()