109 lines
2.0 KiB
Python
109 lines
2.0 KiB
Python
# Bryan Schumaker (11/13/2010)
|
|
|
|
import socket
|
|
import libsaria
|
|
from libsaria import threads
|
|
|
|
server = None
|
|
|
|
def play_id(arg):
|
|
id = int(arg[0])
|
|
print "Trying to play id: %s" % id
|
|
libsaria.collection.library.play_id(id)
|
|
|
|
def play(*args):
|
|
libsaria.audio.play()
|
|
|
|
def pause(*args):
|
|
libsaria.audio.pause()
|
|
|
|
def stop(*args):
|
|
libsaria.audio.stop()
|
|
|
|
def next(*args):
|
|
print libsaria.collection
|
|
libsaria.collection.plist_next()
|
|
|
|
procs = {"play_id":play_id, "play":play, "pause":pause, "stop":stop, "next":next}
|
|
|
|
def decode_len(msg):
|
|
size, msg = msg.split(' ', 1)
|
|
return int(size), msg
|
|
|
|
def decode_op(msg):
|
|
op_len, msg = msg.split(' ', 1)
|
|
op = msg[:int(op_len)]
|
|
return op, msg[int(op_len) + 1:]
|
|
|
|
def decode_args(msg):
|
|
if msg == "0":
|
|
return []
|
|
n_args, msg = msg.split(' ', 1)
|
|
n_args = n_args
|
|
args = []
|
|
for i in xrange(int(n_args)):
|
|
arg_len, msg = msg.split(' ', 1)
|
|
args.append(msg[:int(arg_len)])
|
|
msg = msg[int(arg_len) + 1:]
|
|
return args
|
|
|
|
|
|
def decode(text):
|
|
try:
|
|
print "Decoding: %s" % text
|
|
size, msg = decode_len(text)
|
|
if size != len(msg):
|
|
print "Message is wrong length!"
|
|
return
|
|
except:
|
|
print "There was a problem receiving the message"
|
|
return
|
|
try:
|
|
op, msg = decode_op(msg)
|
|
except:
|
|
print "There was a problem decoding the operation"
|
|
return
|
|
try:
|
|
args = decode_args(msg)
|
|
except:
|
|
print "There was a problem decoding the argumets"
|
|
return
|
|
try:
|
|
procs[op](args)
|
|
except:
|
|
print "There was a problem running the operation"
|
|
return
|
|
|
|
def serve():
|
|
while 1:
|
|
try:
|
|
(client, address) = server.accept()
|
|
message = client.recv(4096)
|
|
decode(message)
|
|
except:
|
|
break
|
|
|
|
def start_server():
|
|
global server
|
|
# Set up a socket
|
|
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
try:
|
|
server.bind((socket.gethostname(), 4242))
|
|
except:
|
|
print "Could not open port 4242"
|
|
server.listen(5)
|
|
serve()
|
|
|
|
def start():
|
|
threads.background(start_server)
|
|
|
|
def stop():
|
|
server.shutdown(socket.SHUT_RDWR)
|
|
|
|
def check_version():
|
|
if libsaria.__major__ != 1:
|
|
return False
|
|
if libsaria.__minor__ >= 2:
|
|
return True
|
|
return False
|