summaryrefslogtreecommitdiff
path: root/feeder/scanjam.py
diff options
context:
space:
mode:
Diffstat (limited to 'feeder/scanjam.py')
-rwxr-xr-xfeeder/scanjam.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/feeder/scanjam.py b/feeder/scanjam.py
new file mode 100755
index 0000000..400f586
--- /dev/null
+++ b/feeder/scanjam.py
@@ -0,0 +1,82 @@
+#!/usr/bin/python
+
+import browser
+import time
+import os
+
+SERVER_HOST = 'www.scannerjammer.com'
+SERVER_PORT = 19898
+
+API_HEADER = "#@scanjam 0.2\n"
+
+API_LOGIN = "http://"+SERVER_HOST+":"+str(SERVER_PORT)+"/api/auth/sneakin"
+API_POLL = "http://"+SERVER_HOST+":"+str(SERVER_PORT)+"/api/room/poll"
+API_POST_VIDEO = "http://"+SERVER_HOST+":"+str(SERVER_PORT)+"/api/room/video"
+API_POST_MSG = "http://"+SERVER_HOST+":"+str(SERVER_PORT)+"/api/room/say"
+API_LOGOUT = "http://"+SERVER_HOST+":"+str(SERVER_PORT)+"/api/auth/logout"
+
+class ScanJam:
+ def __init__ (self, userid, username, room):
+ self.userid = userid
+ self.username = username
+ self.room = room
+ self.browser = browser.Browser ()
+ self.session = None
+ self.last = 0
+ self.login ()
+ def login (self):
+ print "getting token for", self.username
+ if os.path.exists("sessions/"+self.username+".session"):
+ f = open ("sessions/"+self.username+".session", "r")
+ self.session = f.read().strip()
+ f.close ()
+ return
+ params = { 'userid': self.userid, 'username': self.username }
+ f = self.browser.post(API_LOGIN, params)
+ api = f.read().split("\n")
+ if api[0] != "#@scanjam 0.2" or api[1] != "OK":
+ print "ERROR GETTING TOKEN"
+ return None
+ payload = api[2].split("\t")
+ print "GOT SESSION:", payload[2]
+ self.session = payload[2]
+ f = open ("sessions/"+self.username+".session", "w")
+ f.write (self.session)
+ f.close ()
+ print "sleeping"
+ time.sleep(0.5)
+ def image (self, url):
+ params = { 'session': self.session, 'room': self.room, 'msg': url }
+ f = self.browser.post(API_POST_MSG, params)
+ # print f.read()
+ time.sleep(1)
+ def video (self, url):
+ params = { 'session': self.session, 'room': self.room, 'msg': url }
+ f = self.browser.post(API_POST_VIDEO, params)
+ # print f.read()
+ time.sleep(1)
+ def poll (self):
+ params = { 'session': self.session, 'room': self.room, 'last': self.last }
+ f = self.browser.post(API_POLL, params)
+ if f is None:
+ return []
+ lines = f.read().split("\n")
+ self.last = lines[1].strip()
+ msgs = []
+ for line in lines:
+ r = line.split("\t")
+ try:
+ int(r[0])
+ if len(r) < 4:
+ continue
+ # 0 id 1 date 2 nick 3 msg
+ msgs.append({ 'date': r[1], 'nick': r[2], 'msg': r[3] })
+ except:
+ continue
+ time.sleep(1)
+ return msgs
+ def say (self, url):
+ params = { 'session': self.session, 'room': self.room, 'msg': url }
+ f = self.browser.post(API_POST_MSG, params)
+ time.sleep(1)
+