Fw: [Tutor] Interactive control with keys

Ole Jensen learning.python at dbmail.dk
Tue Nov 4 15:41:18 EST 2003


Just forwarding my reply to the tutor list, as I forgot to hit 'reply all'.


> Hi Tim
> Although I myself is only learning to program and not familiar ein python
> enough to tell you how to do it, I would presume you would need to do this
> using a graphical user interface (GUI), as non-gui programs will just look
> through your code until it gets to the end (or a sys.exit) and because of
> that the program would stall at some
>
> playnext = raw_input("pres 's' to skip")
>
> So my tip would be to look into Tkinter or similiar and try to create some
> kind of GUI.
>
> Regards
> Ole J.
> ----- Original Message -----
> From: "Tim Ronning" <tim.ronning at start.no>
> To: <tutor at python.org>
> Sent: Tuesday, November 04, 2003 8:51 PM
> Subject: [Tutor] Interactive control with keys
>
>
> > Greetings all
> >
> > I continue my mp3 player learning project. I'm at a stage where I would
> > like to add interactive controll like "stop", "next" and "previous"
> > assigned to keys "S", "N" and "P" I have no clue on how to implement
this
> > except that I think it have to be placed or called from somewere within
> the
> > play function. It would be great if someone could give me a hint on how
to
> > start. Not the solution but some hints to get me digging.
> >
> > I include the full source as is right now.
> >
> > Best regards
> > Tim R
> >
> > #!/usr/bin/env python
> > ############################################
> > ##               DSPmP                    ##
> > ##    Dead.Simple.Python.mp3.Player       ##
> > ##                                        ##
> > ##    Author: Tim Ronning                 ##
> > ##            tim.ronning at pasecurity.org  ##
> > ##    License: GPL                        ##
> > ##    Platform: POSIX                     ##
> > ##    Version: 0.0.3                      ##
> > ##    Date: 03.11.03                      ##
> > ##    Req. libraries:                     ##
> > ##           - libao                      ##
> > ##           - libmad                     ##
> > ##    Req. wrappers:                      ##
> > ##           - pyao                       ##
> > ##           - pymad                      ##
> > ##                                        ##
> > ############################################
> >
> > import sys, ao, mad, os
> >
> > # Global configuration #
> > global_aod = "alsa09" # valid ; alsa05 / alsa09 / oss
> > global_plist = "playlist" # your choice for playlist file
> >
> > os.system("clear")
> >
> > def makeaList(s):
> >         anothermp3 = s.split()
> >         return anothermp3
> >     def append(mp3):
> >     if choice == "3":
> >         app = open(global_plist,"a")
> >         app.write(mp3 + "\n")
> >         app.close()
> >     else:
> >         app = open("playlist.new","a")
> >         app.write(mp3 + "\n")
> >         app.close
> >
> > def play(t):                    # plays a file and returns key data
about
> > mp3
> >     mf = mad.MadFile(t)
> >     os.system("clear")
> >     if mf.layer() == mad.LAYER_I:
> >         print "MPEG Layer I"
> >     elif mf.layer() == mad.LAYER_II:
> >         print "MPEG Layer II"
> >     elif mf.layer() == mad.LAYER_III:
> >         print "MPEG Layer III"
> >     else:
> >         print "unexpected layer value"
> >     if mf.mode() == mad.MODE_SINGLE_CHANNEL:
> >         print "single channel"
> >     elif mf.mode() == mad.MODE_DUAL_CHANNEL:
> >         print "dual channel"
> >     elif mf.mode() == mad.MODE_JOINT_STEREO:
> >         print "joint (MS/intensity) stereo"
> >     elif mf.mode() == mad.MODE_STEREO:
> >         print "normal L/R stereo"
> >     else:
> >         print "unexpected mode value"
> >     if mf.emphasis() == mad.EMPHASIS_NONE:
> >         print "no emphasis"
> >     elif mf.emphasis() == mad.EMPHASIS_50_15_US:
> >         print "50/15us emphasis"
> >     elif mf.emphasis() == mad.EMPHASIS_CCITT_J_17:
> >         print "CCITT J.17 emphasis"
> >     else:
> >         print "unexpected emphasis value"
> >     print "bitrate %lu bps" % mf.bitrate()
> >     print "samplerate %d Hz" % mf.samplerate()
> >     millis = mf.total_time()
> >     secs = millis / 1000
> >     print "total time %d ms (%dm%2ds)" % (millis, secs / 60, secs % 60)
> >     print "Now playing: %s" % (t)
> >     dev = ao.AudioDevice(global_aod, rate=mf.samplerate())
> >     while 1:
> >         buf = mf.read()
> >         if buf is None:
> >             break
> >         dev.play(buf, len(buf))
> >
> > choice = '1'
> >
> > while choice != '6':
> >     print """
> >     ************************
> >     *         DSPmP        *
> >     ************************
> >     * 1)....Play List      *
> >     * 2)....Play Directory *
> >     * 3)....Show List      *
> >     * 4)....Add MP3's      *
> >     * 5)....Remove MP3's   *
> >     * 6)....Quit           *
> >     ************************
> >     ************************
> >     """
> >     choice = raw_input("Choice: ")
> >     if choice == '1':
> >         playlist = open(global_plist,"r")
> >         mp3list = []
> >         for line in playlist.readlines():
> >             mp3list = mp3list + makeaList(line)
> >         playlist.close()
> >         items = len(mp3list)
> >         j=0
> >         while j < items:
> >             tune = mp3list[j]
> >             play(tune)          # calls function play with arg. tune
> >             j = j + 1
> >
> >     elif choice == '2':
> >         dirpath = raw_input("Directory: ")
> >         raw_list = os.listdir(dirpath)      # makes a list of an entire
> > directory
> >         os.chdir(dirpath)
> >         items = len(raw_list)
> >         j=0
> >         while j < items:
> >             tune = raw_list[j]
> >             play(tune)
> >             j = j + 1
> >
> >     elif choice == '3':
> >         os.system("clear")
> >         playlist = open(global_plist,"r")
> >         for line in playlist.readlines():
> >             print line
> >         playlist.close()
> >
> >     elif choice == '4':
> >         newmp3 = raw_input("New mp3: ")
> >         append(newmp3)
> >         os.system("clear")
> >
> >     elif choice == '5':
> >         playlist = open(global_plist,"r")
> >         mp3list = []
> >         for line in playlist.readlines():
> >             mp3list = mp3list + makeaList(line)
> >         playlist.close()
> >         delnr = int(raw_input("Which number? "))
> >         del mp3list[delnr]
> >         listlen = len(mp3list)
> >         n = 0
> >         while n < listlen:
> >             append(mp3list[n])
> >             n = n + 1
> >         os.system("mv -f playlist.new playlist")
> >         os.system("clear")
> >
> >     else:
> >         sys.exit()
> >
> >
> > --
> > Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
> >
> > _______________________________________________
> > Tutor maillist  -  Tutor at python.org
> > http://mail.python.org/mailman/listinfo/tutor
> >
>




More information about the Tutor mailing list