#!/usr/bin/python import readline import socket import select from cmd import * import sys import threading class readerThread(threading.Thread): def __init__(self, socket): threading.Thread.__init__(self) self.socket = socket self.running = True def run(self): while (self.running): r,w,f = select.select([self.socket.fileno(),],list(), list(),0) if r: print self.socket.recv(1024) class xineShell(Cmd): def __init__(self, host, port, user, passw): Cmd.__init__(self) self.host = str(host) self.port = int(port) self.user = user self.passw = passw self.socket = None self.prompt = host+":xine> " self.open() self.reader = readerThread(self.socket) self.reader.start() def quit(self, res=0): self.reader.running = False; self.reader.join() sys.exit(res) def open(self): self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: self.socket.connect((self.host, self.port)) except socket.error, msg: print "Counldn't connect: ",msg self.quit(1) if (self.user != '') and (self.passw != ''): self.default("identify %s:%s" % (self.user, self.passw)) def default(self, line): self.socket.sendall(line) def do_EOF(self, line): print "Bye " + self.user + "!" self.quit(1) def do_identify(self, line): toks = line.split(':',2) if (len(toks) == 2): self.user = toks[0] self.passw = toks[1] self.default("identify "+line) # main host = 'localhost' port = 6789 user = '' passw = '' if len(sys.argv) >= 3: host = sys.argv[1] host = sys.argv[2] if len(sys.argv) >= 5: user = sys.argv[3] passw = sys.argv[4] myshell = xineShell(host, port, user, passw) myshell.cmdloop()