bestofimms
author fabien
Mon, 09 Feb 2004 23:29:08 -0500
branchimmsview
changeset 33 ad808d18c693
parent 32 85c8f5280d48
permissions -rwxr-xr-x
[svn] Many cleanup, both architecture (division of interface), encoding behavior and also many bugs corrected.
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
33
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
     3
import os
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
     4
from sys import stderr, argv
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     5
from htmltmpl import TemplateManager, TemplateProcessor
33
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
     6
from utils import get_song_info
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
     7
from imms import IMMSDb, rating_to_color
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
     8
32
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
     9
def sort_rating(x, y):
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    10
        return x['rating']-y['rating']
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    11
33
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    12
def grab_tunes(minrate = 75, maxrate = 150):
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    13
	db = IMMSDb()
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    14
        rates = db.get_ratings(minrate, maxrate)
32
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    15
        uids = map(lambda x: x[0], rates)
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    16
        files = db.get_paths(uids)
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    17
        d = {}
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    18
        for fn in files:
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    19
                d[fn[0]] = fn[2]
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    20
        res = []
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    21
        for rate in rates:
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    22
                try:
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    23
                        t = { 'rating': rate[1],
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    24
                              'path' : d[rate[0]] }
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    25
                        res.append(t)
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    26
                except KeyError:
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    27
                        pass
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    28
        res.sort(lambda x, y: -sort_rating(x, y))
85c8f5280d48 [svn] Conversion of bestofimms to imms.py.
fabien
parents: 31
diff changeset
    29
        return res
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    30
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    31
def check_tunes(tunes):
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    32
	res = []
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    33
	for tune in tunes:
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    34
		song = tune['path']
33
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    35
                if not os.path.isfile(song):
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    36
                        continue
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    37
                artist, title = get_song_info(song)
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    38
                if artist and title:
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    39
                        tune['path'] = artist + ' - ' + title
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    40
		tune['color'] = rating_to_color(tune['rating'])
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    41
		res.append(tune)
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    42
	return res
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    43
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    44
33
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    45
def output_web(template):
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    46
	tproc = TemplateProcessor()
33
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    47
	tmpl = TemplateManager().prepare(template)
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    48
	tproc.set('Bestof', check_tunes(grab_tunes(125)))
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    49
	return tproc.process(tmpl)
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    50
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    51
_template = 'bestofimms.tmpl'
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    52
if globals().has_key('__file__'):
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    53
        _template = __file__ + '.tmpl'
31
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    54
13f56bb29b96 [svn] New bestofimms, cleanimms, imms.py and utils.py.
fabien
parents:
diff changeset
    55
if __name__ == '__main__':
33
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    56
        if len(argv) > 1:
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    57
                _template = argv[1]
ad808d18c693 [svn] Many cleanup, both architecture (division of interface), encoding
fabien
parents: 32
diff changeset
    58
	print output_web(_template)