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
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()