Play MP3s from Windows

Arlie arlie.c at gmail.com
Fri Jun 19 21:05:03 EDT 2009


On Jun 20, 8:48 am, MRAB <pyt... at mrabarnett.plus.com> wrote:
> Arlie wrote:
> > Hi,
>
> > Newbie here. I copied and pasted the code below. But when I ran it I
> > got this error:
>
> > D:\>python mp3.py
> > Duree du fichier :  298919  millisecondes
> > Traceback (most recent call last):
> >   File "mp3.py", line 37, in <module>
> >     time.sleep(int(buf)/1000)
> > ValueError: invalid literal for int() with base 10: ''
>
> > The code:
>
> > # -*- coding: utf-8 -*-
>
> > import time
> > from ctypes import windll, c_buffer
>
> > class mci:
> >     def __init__(self):
> >         self.w32mci = windll.winmm.mciSendStringA
> >         self.w32mcierror = windll.winmm.mciGetErrorStringA
>
> >     def send(self,commande):
> >         buffer = c_buffer(255)
> >         errorcode = self.w32mci(str(commande),buffer,254,0)
> >         if errorcode:
> >             return errorcode, self.get_error(errorcode)
> >         else:
> >             return errorcode,buffer.value
>
> >     def get_error(self,error):
> >         error = int(error)
> >         buffer = c_buffer(255)
> >         self.w32mcierror(error,buffer,254)
> >         return buffer.value
>
> >     def directsend(self, txt):
> >         (err,buf)=self.send(txt)
> >         if err != 0:
> >             print'Erreur',str(err),'sur',txt,':',buf
> >         return (err,buf)
>
> > mci=mci()
> > mci.directsend('open "d:\\Linger.mp3" alias toto')
> > mci.directsend('set toto time format milliseconds')
> > err,buf=mci.directsend('status toto length ')
> > print 'Duree du fichier : ',buf,' millisecondes'
>
>  From the output it's clear that 'buf' contains '298919'.
>
> > err,buf=mci.directsend('play toto from 0 to '+str(buf))
> > time.sleep(int(buf)/1000)
>
>  From the output it's clear that 'buf' contains ''. Are you expecting it
> to contain the length, like it did for the previous call? Perhaps you
> should just use the length returned by the previous call.

I actually did that and  it's working fine now. Thanks.

>
> > mci.directsend('close toto')
>
>

I just got the program from the web. I have never program in python
but I'm taking the risk of replacing an existing perl program for a
more readable code. As of now everything seems like a haze to me. I
have read python tutorial just yesterday. I'm due to deliver this
project in 36 hours or less. This is suppose to download mp3 file to
client then connect to mysql get the person info and play appropriate
mp3 for that person calling his full name.



More information about the Python-list mailing list