--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bestofimms Sun Feb 08 16:55:24 2004 -0500
@@ -0,0 +1,78 @@
+#!/usr/bin/python
+
+import sqlite
+from htmltmpl import TemplateManager, TemplateProcessor
+import os
+import ID3
+from sys import stderr
+from ogg.vorbis import VorbisFile
+
+_imms_db = os.environ['HOME'] + '/.imms/imms.db'
+_template = __file__ + '.tmpl'
+
+def rating_to_color(rating):
+ i = rating - 75
+ if i <= 25:
+ red = 255
+ green = i * 255 / 25
+ blue = 0
+ elif i <= 50:
+ red = (50-i) * 255 / 25
+ green = 255
+ blue = 0
+ else:
+ red = 0
+ green = 255
+ blue = (i-50) * 255 / 25
+ return "#%02X%02X%02X" % (red, green, blue)
+
+def grab_tunes():
+ sql = sqlite.connect(_imms_db, autocommit = 1)
+ cu = sql.cursor()
+ cu.execute(''' SELECT r.rating, l.path
+ FROM Library l, Rating r
+ WHERE r.uid = l.uid AND r.rating >= 125
+ ORDER BY r.rating DESC;''')
+ return map(lambda x: {
+ 'rating' : x[0],
+ 'path': x[1]},
+ cu.fetchall() )
+
+def check_tunes(tunes):
+ res = []
+ for tune in tunes:
+ song = tune['path']
+ try:
+ os.stat(song)
+ except:
+ continue
+ tune['color'] = rating_to_color(tune['rating'])
+ if song[-4:] == '.mp3':
+ id3 = ID3.ID3(song)
+ try:
+ tune['path'] = \
+ id3['ARTIST'] + \
+ ' - ' + id3['TITLE']
+ except:
+ pass
+ elif song[-4:] == '.ogg':
+ vf = VorbisFile(song)
+ vc = vf.comment()
+ try:
+ tune['path'] = \
+ vc['ARTIST'][0] + \
+ u' - ' + vc['TITLE'][0]
+ except:
+ pass
+ res.append(tune)
+ return res
+
+
+def output_web():
+ tproc = TemplateProcessor()
+ tmpl = TemplateManager().prepare(_template)
+ tproc.set('Bestof', check_tunes(grab_tunes()))
+ print tproc.process(tmpl)
+
+if __name__ == '__main__':
+ output_web()