diff options
Diffstat (limited to 'test.py')
-rw-r--r-- | test.py | 104 |
1 files changed, 81 insertions, 23 deletions
@@ -1,17 +1,46 @@ import sys import httplib import urllib +import time +from threading import Thread, Lock + +class Timer(Thread): + def __init__(self,func,interval=0.50): + Thread.__init__(self) + self.func = func + self.interval = interval + + self.running = False + + def run(self): + self.running = True + while self.running: + self.func() + time.sleep(self.interval) + + def stop(self): + self.running = False + -headers = { - "Host" : "omegle.com", - "Content-type": "application/x-www-form-urlencoded; charset=utf-8", - "Accept": "application/json"} class OmegleChat(object): - def __init__(self): + headers = { + "Host" : "omegle.com", + "Content-type": "application/x-www-form-urlencoded; charset=utf-8", + "Accept": "application/json" + } + + def __init__(self,poll_interval=0.5): self.conn = httplib.HTTPConnection('www.omegle.com') - self.conn.set_debuglevel(100) +# self.conn.set_debuglevel(100) + + self.conn_lock = Lock() + + self.timer = Timer(self.events, poll_interval) + def start(self): - self.conn.request("POST", "/start", {}, headers) + self.conn_lock.acquire() + self.conn.request("POST", "/start", {}, OmegleChat.headers) + self.conn_lock.release() r=self.conn.getresponse() body=r.read() id=body.split("\"") @@ -20,43 +49,72 @@ class OmegleChat(object): print "Connected, id=%s" % self.id else: raise Exception("Bad response: %s" % body) - self.events() + #Poll events + self.timer.start() def disconnect(self): + self.timer.stop() + + self.conn_lock.acquire() self.conn.request("POST", "/disconnect", urllib.urlencode({'id' : self.id}), - headers) + OmegleChat.headers) r = self.conn.getresponse() - print r.read() - + self.conn_lock.release() + body = r.read() + if body != "win": + raise Exception("/disconnect; Bad response: %s" % body) + def events(self): - self.conn.request("POST", + conn = httplib.HTTPConnection('www.omegle.com') + conn.request("POST", "/events", urllib.urlencode({'id' : self.id}), - headers) - r=self.conn.getresponse() + OmegleChat.headers) + r=conn.getresponse() body=r.read() - print "Poll response: %s" % body - return body + self.on_event(conn,body) + conn.close() def send(self,msg): + self.conn_lock.acquire() self.conn.request("POST", "/send", urllib.urlencode({'id':self.id,'msg':msg}), - headers) + OmegleChat.headers) r=self.conn.getresponse() - print r.read() + self.conn_lock.release() + body = r.read() + if body != "win": + raise Exception("/send; Bad response %s" % body) + + def typing(self,msg): + self.conn_lock.acquire() + self.conn.request("POST", + "/typing", + urllib.urlencode({'id':self.id}), + OmegleChat.headers) + r=self.conn.getresponse() + self.conn_lock.release() + body = r.read() + if body != "win": + raise Exception("/typing; Bad response %s" % body) + + + def on_event(self,conn,body): + print "Event: %s" % body chat = OmegleChat() chat.start() while 1==1: - cmd=sys.stdin.readline().strip() - if cmd=="": - print "Poll:" - chat.events() - elif cmd=="quit": + try: + cmd=sys.stdin.readline().strip() + except KeyboardInterrupt: + chat.disconnect() + sys.exit(0) + if cmd=="quit": chat.disconnect() break else: |