Beispiel #1
0
def cliPlayer():
    from Config import Config
    from Player import Player
    import StreamHandler
    import sys 
    import os 
    import time
    import atexit

    global histfile, readline, sipie

    haveReadline = True
    try:
        import readline
    except ImportError:
        haveReadline = False
        
    class Completer:
        def __init__(self, words):
            self.words = words
            self.prefix = None
        def complete(self, prefix, index):
            if prefix != self.prefix:
                self.matching_words = [
                    w for w in self.words if w.startswith(prefix)
                    ]
                self.prefix = prefix
            try:
                return self.matching_words[index]
            except IndexError:
                return None

    def ask4Stream():
        try:
            stream = raw_input("Enter stream: ")
        except (EOFError, KeyboardInterrupt):
            print "Thanks for playing"
            sys.exit(0)
        #print 'ask4Stream "%s"'%stream #DEBUG
        return stream

    def onExit():
       #global histfile, readline, sipie
       try:
           readline.write_history_file(histfile)
       except:
           pass
       try:
           sipie.close()
       except:
           pass

    if sys.platform == 'win32':
        win = True
        configdir = '.'
        streamHandler = StreamHandler.wmpHandler(
                          'c:\Program Files\Windows Media Player\mplayer2.exe')
    else:
        win = False
        configdir = '%s/.sipie'%os.environ['HOME']
        streamHandler = StreamHandler.mplayerHandler('/usr/bin/mplayer')

    histfile = os.path.join(configdir,"history")
    config = Config(configdir)
    sipie = Player(config.items())
    sipie.setPlayer(streamHandler)
    atexit.register(onExit)

    if haveReadline:
        completer = Completer([x['longName'] for x in sipie.getStreams()])
        readline.parse_and_bind("tab: complete")
        readline.set_completer(completer.complete)
        try:
            readline.read_history_file(histfile)
        except IOError:
            pass


    FirstLoop = True
    while True:
        if len(sys.argv) == 2 and FirstLoop:
            stream = sys.argv[1].lower()
        elif sys.argv[0].lower().find("sipie") == -1 and FirstLoop:
            stream = os.path.basename(sys.argv[0])
            sipie.setStreamByChannel(stream)
        else:
          stream = ask4Stream()
          if stream == 'list':
            for str in [x['longName'] for x in sipie.getStreams()]:
              print str
            continue
          try:
              sipie.setStreamByLongName(stream)
          except : #FIXME
              FirstLoop = False
              print "Invalid Stream"
              continue
        #print sipie.asxURL
        sipie.play()

        while True:
            playing = sipie.nowPlaying()
            if playing['new'] :
                print playing['logfmt']
            pass
            try:
                time.sleep(30)
            except KeyboardInterrupt:
                break
        FirstLoop = False
Beispiel #2
0
def gtkPlayer():
    import sys
    import os
    import gtk
    import atexit
    import gtk.glade

    from pkg_resources import Requirement, resource_filename
    tryPopups = False
    if tryPopups:
        from Popup import PlaylistPopup

    #glade_base = os.path.split(__file__)[0]
    #GLADE_DIR = os.path.join(glade_base, 'glade')
    #GLADE_FILE = os.path.join(GLADE_DIR, 'gtkSipie.glade')
    #if not os.path.isfile(GLADE_FILE):
    #    GLADE_DIR = '/usr/share/sipie'
    #    GLADE_FILE = os.path.join(GLADE_DIR, 'gtkSipie.glade')
    #if not os.path.isfile(GLADE_FILE):
    #    print "I Can't find my glade file gtkSipie.glade"
    #    print "I looked in %s"%os.path.join(glade_base,'glade')
    #    print "And %s"%GLADE_DIR
    #    sys.exit(1)
    
    # get the glade file from the egg
    GLADE_FILE = resource_filename(
                    Requirement.parse("Sipie"),"Sipie/data/gtkSipie.glade")

    # From Sipie
    from Config import Config
    from Player import Player
    import StreamHandler

    if sys.platform == 'win32':
        configdir = '.'
        streamHandler = StreamHandler.wmpHandler('c:\\Program Files\\Windows Media Player\\mplayer2.exe')
    else:
        configdir = '%s/.sipie' % (os.environ)['HOME']
        streamHandler = StreamHandler.mplayerHandler('/usr/bin/mplayer')

    def onExit():
       #global histfile, readline, sipie
        sipie.close()
        try:
            popups.stop()
        except:
            pass

    #histfile = os.path.join(configdir, 'history')
    config = Config(configdir)
    sipie = Player(config.items())
    sipie.setPlayer(streamHandler)
    atexit.register(onExit)


    class GladeHandlers:

        def on_Exit_clicked(widget):
            gtk.main_quit()

        def on_Play_clicked(widget):
            global stream
            sipie.setStream(stream)
            sipie.play()

        def on_Stop_clicked(widget):
            sipie.close()

        def on_StreamList_changed(widget):
            global stream
            stream = widget.get_active_text()

        def on_window1_delete_event(widget):
            gtk.main_quit()

        def on_window1_destroy_event(widget):
            gtk.main_quit()


    xml = gtk.glade.XML(GLADE_FILE)
    streamWidget = xml.get_widget('StreamList')
    #streamWidget.insert_text(0,'First')

    for selectable in sipie.getStreams():
        streamWidget.append_text(selectable)
    streamWidget.set_active(0)

    xml.signal_autoconnect(GladeHandlers.__dict__)

    if tryPopups:
        try:
            popups = PlaylistPopup(sipie)
        except:
            #print 'popups failed to load'  #DEBUG
            pass
        else:
            popups.start()

    gtk.main()