##############################################################################
# save this script to peerbetsatoshibot.py                                   #
#                                                                            #
# TO RUN IT USE THIS CODE                                                    #
# python -u peerbetsatoshibot.py USERNAME PASSWORD                           #
# PLEASE DONATE SOME TO: 1FpHgWtpQ5bynPpvNXsWbDQNqv6zWJgBv7                  #
##############################################################################
import cookielib, urllib2,urllib,random,time,sys,traceback,StringIO,gzip
 
def call(opener,url,params=None):
    time.sleep(1)
    url=url+'&compress=1'
    if params is not None:
        uri=url+"&"+params
    else: uri=url
    try:
        opener.addheaders=[("Accept-Encoding", "gzip")]
#       print uri
        f=opener.open(uri)
        response=f.read()
    except urllib2.URLError:
        time.sleep(random.uniform(1,5))
        return call(opener,url,params)
    read=f.info().getheader("Content-Encoding")
    if read=='gzip':
        sio =  StringIO.StringIO(response)
        sio.seek(0)
        gz=gzip.GzipFile(None,mode='rb',fileobj=sio)
         
        response= gz.read()
        gz.close()
        sio.close()
#   print response
    if response is None:
        return call(opener,url,params)          
    else:   
        try:
            read=eval(response)
        except:
            print '>>> traceback <<<'
            traceback.print_exc()
            print '>>> end of traceback <<<'
            time.sleep(random.uniform(1,5))
            return call(opener,url,params)                          
 
        error=None
        try:
            error= read['error']
            print "|",error,"|"
        except:
            return read
        if 'limit' in str(error):
            time.sleep(random.uniform(1,5))
            return call(opener,url,params)
        else: raise NameError(error)    
 
def login(opener):
    global password
    global username
    params = urllib.urlencode({'username': username, 'password': password})
    print "login",call(opener,'https://peerbet.org/api.php?method=login',params)
 
 
if sys.argv[1] is not None: username=sys.argv[1]
if sys.argv[2] is not None: password=sys.argv[2]
 
 
 
while True:
    try:
        cj = cookielib.CookieJar()
        opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
        params = urllib.urlencode({'username': username, 'password': password})
        print call(opener,"https://peerbet.org/api.php?method=login",params)
 
 
        params = urllib.urlencode({'message': 'satoshi'})
         
        message=call(opener,"https://peerbet.org/api.php?method=postchatmessage",params)
        print message['message_id'];
 
    except:
        print '>>> traceback <<<'
        traceback.print_exc()
        print '>>> end of traceback <<<'
    time.sleep(random.uniform(60*60,2*60*60))