summaryrefslogtreecommitdiff
path: root/feeder/scanjam.py
blob: 400f5868ab175ea91fe29e7444079f35b30a9ce2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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)