diff options
Diffstat (limited to 'feeder/scanjam.py')
| -rwxr-xr-x | feeder/scanjam.py | 82 |
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) + |
