#!/usr/bin/env python
#
# $Source: /home/blais/repos/cvsroot/arubomu/adm/songlist-gen,v $
# $Id: songlist-gen,v 1.10 2004/02/14 00:01:49 blais Exp $
#

"""Generate song list of songs that have a listen count of 0."""

__version__ = "$Revision: 1.10 $"
__author__ = "Martin Blais <blais@furius.ca>"


import os

from arubomu.playfile import SongIdxData, read, write

import random


indexfn = os.environ['JUKEBOX_PLAYFILE']

xml_preamble = '<?xml version="1.0" encoding="ISO-8859-1"?>'
songlist_dtd = 'http://furius.ca/jukebox/share/dtd/songlist.dtd'



def main():
    import optparse
    parser = optparse.OptionParser(__doc__.strip(), version=__version__)
    parser.add_option('--debug', action='store_true',
                      help="self debugging.")
    parser.add_option('-n', '--number', action='store',
                      help="stop after the n first songs.")
    opts, args = parser.parse_args()

    if opts.number: opts.number = int(opts.number)

    indexmap = read(indexfn)
    nonlist = []
    for id, m in indexmap.items():
        for no, sdata in m.items():
            if sdata.listen == 0:
                nonlist.append( (random.random(), id, no) )

    nonlist.sort( lambda x, y: cmp(x[0], y[0]) )

    print xml_preamble
    print '<!DOCTYPE songlist SYSTEM "%s">' % songlist_dtd
    print '<songlist>'
    count = 0
    for e in nonlist:
        r, id, no = e
        print ' <songref dir="%s" no="%d" />' % (id, no)
        count += 1
        if opts.number and count > opts.number:
            break
    print '</songlist>'

if __name__ == '__main__':
    main()
