Attachment 'tOnkyo.py'
Download 1 import socket
2 import select
3 import sys
4 import traceback
5 class Onkyo:
6 def __init__(self):
7 HOST = '10.0.2.137'
8 PORT = 60128
9 self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
10 self.socket.connect((HOST, PORT))
11 def mycolors(self):
12 self.cred = '\033[91m'
13 self.creset = '\033[0m'
14 self.cgreen = '\033[92m'
15 self.cblue = '\033[94m'
16 self.cyellow = '\033[33m'
17
18 def myError(self, message="No message"):
19 #self.printDebug()
20 print self.cred + "Error: %s" % (message) + self.creset
21 print traceback.print_exc(file=None)
22 print "---End of traceback---\n"
23
24 def myclean(self):
25 if self.socket:
26 self.socket.close()
27 def makeMessage(self, cmd=None):
28 if not cmd:
29 self.myError("makeMessage: no message")
30
31 o = 'ISCP\x00\x00\x00\x10\x00\x00\x00\n\x01\x00\x00\x00!1%s\r\n' % (cmd)
32 return o
33 def Iscp2Humans(self, i=None):
34 if not i:
35 self.myError("parseIscp: nothing to parse")
36 return None
37 else:
38 i = i.replace("\x00", "").replace("\x01", "").replace("\x1a", "")
39 i = i.replace("\x10", "").replace("!1", ": ").replace("\n", "").replace("\r","")
40 i = i.replace("\x0b", "")
41 return i
42
43 def validcase(self):
44 self.socket.send("ISCP\x00\x00\x00\x10\x00\x00\x00\n\x01\x00\x00\x00!1SLIQSTN\x1a\r\n")
45
46 def main(self):
47 self.mycolors()
48 print self.cgreen + "Turmio Onkyo Magick v0.1 > " + self.creset
49 self.validcase()
50 while True:
51 data = select.select([self.socket, sys.stdin],[],[],5)[0]
52 if self.socket in data:
53 d = self.socket.recv(1024)
54 #print repr(d)
55 #print repr(dstrip)
56 print '<-- ' + self.cgreen + self.Iscp2Humans(d) + self.creset
57
58 if sys.stdin in data:
59 try:
60 i = sys.stdin.readline()
61 if i[0] == "!":
62 o = i[1:]
63 self.socket.send(o)
64 print "--> " + self.cyellow + \
65 "RAW: %s" % self.Iscp2Humans(o) + self.creset
66 self.validcase()
67 else:
68 o = self.makeMessage(i)
69 self.socket.send(o)
70 print "--> " + self.cyellow + \
71 "%s" % self.Iscp2Humans(o) + self.creset
72
73 except:
74 self.myError("Something wrong while sending")
75 print "fail"
76
77
78 #print "raw: %s" % data
79 #print 'Received', repr(data)
80 if __name__ == "__main__":
81 try:
82 remote = Onkyo()
83 remote.main()
84
85 except KeyboardInterrupt:
86 remote.myclean()
87 sys.exit(1)
Attached Files
Normal Sort Sort + uniq Sort + uniq + countYou are not allowed to attach a file to this page.