#!/usr/bin/python # -*- Mode: Python ; tab-width: 4 -*- import sys import os import string import getopt import common mainFName = "albums.html" byAlbumFName = "albumByAlbum.html" byCountFName = "albumByCount.html" byDurationFName = "albumByDuration.html" byDateFName = "albumsByDate.html" byPlaysFName = "albumsByPlay.html" def usage(): sys.stderr.write( "Usage: %s\n" % (os.path.basename(sys.argv[0])) ) sys.exit( 1 ) def main(): try: (odict, args) = getOptions() except getopt.error: sys.stderr.write( str(sys.exc_info()[1]) + "\n" ) usage() gen() def gen(): d = common.loadAlbumData() genByAlbum( d ) genByCount( d ) genByDuration( d ) genByDate( d ) genByPlays( d ) def genByAlbum( d ): genInner( d, byAlbumFName, byAlbum ) for fname in [mainFName]: if os.path.exists( fname ): os.unlink( fname ) os.symlink( byAlbumFName, fname ) def genByCount( d ): genInner( d, byCountFName, byCount ) def genByDuration( d ): genInner( d, byDurationFName, byDuration ) def genByDate( d ): genInner( d, byDateFName, byDate ) def genByPlays( d ): genInner( d, byPlaysFName, byPlays ) def genInner( d, fname, sortfunc ): #print "Writing page %s..." % (fname) f = open( fname, "w" ) f.write( common.getHeader( "Dr. Zeus' Playlist: Albums", currentTab="albums" ) ) genTableHeader( f, sortfunc ) l = d.values() l.sort( sortfunc ) genTableRows( f, l ) genTableFooter( f, l ) f.write( common.getFooter() ) f.close() def genTableHeader( f, sortfunc ): f.write( "
Album | " ) f.write( "Songs | " % (byCountFName) ) f.write( "Time | " % (byDurationFName) ) f.write( "Last Played | " % (byDateFName) ) f.write( "Play Count | " % (byPlaysFName) ) elif (sortfunc == byCount): f.write( "Album | " % (byAlbumFName) ) f.write( "Songs | " ) f.write( "Time | " % (byDurationFName) ) f.write( "Last Played | " % (byDateFName) ) f.write( "Play Count | " % (byPlaysFName) ) elif (sortfunc == byDate): f.write( "Album | " % (byAlbumFName) ) f.write( "Songs | " % (byCountFName) ) f.write( "Time | " % (byDurationFName) ) f.write( "Last Played | " ) f.write( "Play Count | " % (byPlaysFName) ) elif (sortfunc == byPlays): f.write( "Album | " % (byAlbumFName) ) f.write( "Songs | " % (byCountFName) ) f.write( "Time | " % (byDurationFName) ) f.write( "Last Played | " % (byDateFName) ) f.write( "Play Count | " ) else: f.write( "Album | " % (byAlbumFName) ) f.write( "Songs | " % (byCountFName) ) f.write( "Time | " ) f.write( "Last Played | " % (byDateFName) ) f.write( "Play Count | " % (byPlaysFName) ) f.write( "
%s | " % (album.getLink()) ) f.write( "%d | " % (album.count) ) f.write( "%s | " % (common.formatDuration(album.duration)) ) f.write( "%s | " % (common.formatPlayDate(album.last_played)) ) f.write( "%s | " % (album.play_count) ) f.write( "||||||||||||||||||||
%d Albums | " % (len(l)) ) f.write( "%d | " % (count) ) f.write( "%s | " % (common.formatDuration(duration)) ) f.write( "-- | " ) f.write( "%d Play%s | " % (plays, common.plural(plays)) ) f.write( "