#
# goodalarm.py
#
# good alarm
#
# Version 1.0 (26.10.2009)
#
# Copyright (c) 2009, rvnikita 
#
# http://rvnikita.ru
#

import Winamp
import time
import sys
import getopt
import os
import glob
import random

def help():
    print '\n\nThis script plays random mp3 track with growing volume using winamp. \n\nParameters:\n--mp3path="" \t\tpath to mp3 files WITHOUT slash at the end \n--growingtime="" \ttime in seconds for growing\n--help \t\t\tshow this help'
    
def error(error_message):
    print 'Error: ' + error_message
    sys.exit()

def main(argv):
    winamp = Winamp.Winamp()
    timegrowing = 60*5
    
    try:                                
        opts, args = getopt.getopt(argv, "hm:t:", ["timegrowing=", "mp3path=", "help"])  
    except getopt.GetoptError:
        help()
        sys.exit(2)
        
    for opt, arg in opts: #looking for arguments
        if opt in ("-m", "--mp3path"):
            mp3path = arg
        elif opt in ("-t", "--timegrowing"):
            timegrowing = arg
        elif opt in ("-h", "--help"):
            help()
            sys.exit()
            
    if os.path.isdir(mp3path):
        mp3files = glob.glob(mp3path + '\*.mp3')
        if mp3files == []: #no mp3 files in directory
            error('enable find mp3 files in ' + mp3path)
        else:
            randommp3file = random.choice(mp3files) #get random mp3 file
            
            volume = 0
            volumestep = float(timegrowing) / 255.0
            
            winamp.setVolume(volume); #reset winamp volume
            winamp.doIpcCommand(Winamp.IPC_DELETE) #clear playlist
            winamp.enqueue(randommp3file) #enqueues our file
            winamp.setRepeat(1)
            winamp.doCommand(Winamp.WINAMP_PLAY)
            
            while volume < 255: #make a loop to up volume
                time.sleep(volumestep) #sleep for a volumestep seconds
                volume += 1 #up volume
                winamp.setVolume(volume); #set winamp volume
            
            sys.exit()
    else:
        error('mp3path you specified in not a directory')
            
main(sys.argv[1:]) #start main function

