#!/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)