import cookielib, urllib2,urllib,random,time,sys,math
#peerbet login username and password (They will be echoed to the screen!)
username='yourusername'
password='yourpassword'
#numraffles: number of raffles to create
#max_lose: max losing streak before quitting
#satoshi: price of single ticket
#ret_ratio: return ratio
#buy_tickets: number of tickets to buy
#Examples:
#Thousand Mode (5000/10500)
#numraffles=10
#max_lose=9
#satoshi=2
#ret_ratio=2.1
#buy_tickets=5000
#Hundred Mode (50/105)
#numraffles=10
#max_lose=9
#satoshi=100
#ret_ratio=2.1
#buy_tickets=50
#100/110
#numraffles=20
#max_lose=2
#satoshi=100
#ret_ratio=1.1
#buy_tickets=100
#Set to 0 if you want to monitor old raffles
ignore=1
#price of single ticket after the first loss (FIXME)
#satoshi*=random.uniform(2, 3)
satoshidbl=satoshi
#not recommended to modify anything after this line
#Dont tread on me
args_num=len(sys.argv)
print 'args_num = ' + str(args_num)
#if args_num==1:
# sys.exit()
sessionkey=str()
if args_num>1:
if sys.argv[1] is not None:
sessionkey=str(sys.argv[1])
total_tickets=int(math.floor(float(ret_ratio)*float(buy_tickets)))
ticketpricebase=float(satoshi)/100000000
ticketpricedbl=float(satoshidbl)/100000000
stoppage=ticketpricebase*total_tickets
rlose_amt=ticketpricebase*float(buy_tickets)
#rwin_amt=(total_tickets-buy_tickets)*ticketpricebase
rwin_amt=ticketpricebase*float(total_tickets)
ticketprice=ticketpricebase
sell_tickets=total_tickets-buy_tickets
print 'Key: ' + str(sessionkey)
print 'Username: ' + str(username)
print 'password: ' + str(password)
print 'numraffles: ' + str(numraffles)
print 'max_lose: ' + str(max_lose)
print 'satoshi: ' + str(satoshi)
print 'satoshidbl: ' + str(satoshidbl)
print 'ret_ratio: ' + str(ret_ratio)
print 'buy_tickets: ' + str(buy_tickets)
print 'sell_tickets: ' + str(sell_tickets)
print 'total_tickets: ' + str(total_tickets)
print 'ticketpricebase: ' + str('%.8f' % ticketpricebase)
print 'ticketpricedbl: ' + str('%.8f' % ticketpricedbl)
print 'total_tickets_price: ' + str('%.8f' % (float(total_tickets) * ticketpricebase))
print 'stoppage: ' + str('%.8f' % stoppage)
print 'rlose_amt: ' + str('%.8f' % rlose_amt)
print 'rwin_amt: ' + str('%.8f' % rwin_amt)
print 'ticketprice: ' + str('%.8f' % ticketprice)
print 'Win percentage: ' + str((float(buy_tickets)/float(total_tickets))*float(100))
print 'Lose percentage: ' + str((float(sell_tickets)/float(total_tickets))*float(100))
print 'Sleeping for 10 sec check the values, break if incorrect'
time.sleep(10)
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
if args_num==1:
params = urllib.urlencode({'username': str(username), 'password': str(password)})
print "https://peerbet.org/api.php?method=login&%s" % params
r = opener.open("https://peerbet.org/api.php?method=login&%s" % params)
loginsession=r.read()
print loginsession
loginsession=eval(loginsession)
sessionkey=str(loginsession['key'])
keyparam = urllib.urlencode({'key':sessionkey})
lose_count=0;
raffle_id_list = []
raffleid=0
lastmessageid=0
#Uncomment to allow getting my raffle count
"""
time.sleep(random.uniform(5, 7))
f = opener.open("https://peerbet.org/api.php?method=getmyrafflecount&%s" % keyparam)
rafflecount=f.read()
print rafflecount
rafflecount=eval(rafflecount)
print 'My Raffles Count:' + str(rafflecount['count'])
"""
#allow monitoring open raffles
myraffles=[]
if ignore==0:
time.sleep(random.uniform(5, 7))
params = urllib.urlencode({'key':sessionkey})
print "https://peerbet.org/api.php?method=getmyraffles&%s" % params
f = opener.open("https://peerbet.org/api.php?method=getmyraffles&%s" % params)
rr=f.read()
print rr
myraffles=eval(rr)
#status "open" - there are unsold tickets in the game, "waiting" - waiting for the next Bitcoin block, "win" - current user won the game, "lose" - current user lost the game, "finished" if the raffle is finished but current user did not participated
for m in myraffles:
if m['status']=='open':
if m['tickets_total'] == str(total_tickets):
raffle_id_list.append(m['raffle_id'])
for raffleid in raffle_id_list:
print 'Open raffle: ' + str(raffleid)
print 'Total already open: ' + str(len(raffle_id_list))
time.sleep(random.uniform(2, 3))
totalLoss=0
totalWin=0
while True:
params = urllib.urlencode({'key':sessionkey})
print "https://peerbet.org/api.php?method=getuserinfo&%s" % params
f = opener.open("https://peerbet.org/api.php?method=getuserinfo&%s" % params)
userinfo=f.read()
print userinfo
userinfo=eval(userinfo)
balance=float(userinfo['balance'])
print 'balance: ' + str('%.8f' % balance)
if lose_count>=max_lose:
print 'lose count greater than max lose'
break
if stoppage>=balance:
print 'stoppage greater than balance'
break
else:
#params = urllib.urlencode({'key':sessionkey, 'tickets': total_tickets, 'price': ticketprice,'expire':'1','password':'rafpassword','instant':'1'})
#for x in range(0, 3):
while len(raffle_id_list) < numraffles:
#time.sleep(random.uniform(60*60, 2*60*60))
sleeptime=random.uniform(5, 10)
print 'sleeping for ' + str(sleeptime)
time.sleep(sleeptime)
print 'Create new Raffle'
params = urllib.urlencode({'key':sessionkey, 'tickets': str(total_tickets), 'price': str('%.8f' % ticketprice),'instant':'0'})
print 'https://peerbet.org/api.php?method=createraffle&%s' % params
raffle=opener.open('https://peerbet.org/api.php?method=createraffle&%s' % params)
raf= raffle.read()
print raf
raf=eval(raf)
raffleid=raf['raffle_id']
raffle_id_list.append(raffleid)
print 'Buy tickets in new Raffle'
params = urllib.urlencode({'key':sessionkey, 'raffle': raffleid, 'tickets': buy_tickets})
print 'https://peerbet.org/api.php?method=buytickets&%s' % params
bought=opener.open('https://peerbet.org/api.php?method=buytickets&%s' % params)
bou=bought.read()
print bou
balance=balance-rlose_amt
print 'balance: ' + str('%.8f' % balance)
ticketprice=ticketpricebase
#bou=eval(bou)
while len(raffle_id_list) >= numraffles:
temp_raffle_list=[]
for raffleid in raffle_id_list:
temp_raffle_list.append(raffleid)
for raffleid in temp_raffle_list:
time.sleep(random.uniform(5, 7))
params = urllib.urlencode({'key':sessionkey, 'raffle': raffleid})
print 'https://peerbet.org/api.php?method=getraffleinfo&%s' % params
f=opener.open('https://peerbet.org/api.php?method=getraffleinfo&%s' % params)
raffle=f.read()
print raffle
raffle=eval(raffle)
print 'Raffle Id: ' + str(raffle['raffle_id']) + ' Ticket price: ' + str(raffle['ticket_price']) + ' Tickets Total: ' + str(raffle['tickets_total']) + ' Tickets Sold: ' + str(raffle['tickets_sold']) + ' My Tickets: ' + str(raffle['my_tickets_count']) + ' My List: ' + str(raffle['my_ticket_list']) + ' Status: ' + str(raffle['status'])
if raffle['status']=='win':
ticketprice=ticketpricebase
lose_count=0
totalWin+=1
print 'Win! Winning ticket: ' + str(raffle['winning_ticket'])
balance=balance+rwin_amt
raffle_id_list.remove(raffleid)
elif raffle['status']=='lose':
if lose_count==0:
ticketprice=ticketpricedbl
else:
ticketprice=ticketpricebase
lose_count+=1
totalLoss+=1
print 'Lose! Winning ticket: ' + str(raffle['winning_ticket'])
raffle_id_list.remove(raffleid)
elif raffle['status']=='finished':
raffle_id_list.remove(raffleid)
elif raffle['status']=='waiting':
raffle_id_list.remove(raffleid)
winB=((float(totalWin)*rwin_amt)-(float(totalWin)*rlose_amt))
loseB=float(totalLoss)*rlose_amt
diffB=winB-loseB
totPlayed=totalLoss+totalWin
print 'Balance: ' + str('%.8f' % balance) + ' Lose Count : ' + str(lose_count) + ' TotalWin : ' + str(totalWin) + ' (' + str('%.8f' % winB) + ') TotalLoss : ' + str(totalLoss) + ' (' + str('%.8f' % loseB) + ') Diff (' + str('%.8f' % diffB) + ') Open tickets ' + str(len(raffle_id_list))
if totPlayed>0:
print 'Percentage Win : ' + str((float(totalWin)/float(totPlayed))*float(100))
print 'Percentage Lose: ' + str((float(totalLoss)/float(totPlayed))*float(100))
else:
print 'Percentage: Undefined'
print 'Balance in game: ' + str('%.8f' % (float(len(raffle_id_list))*rlose_amt))
"""
if lastmessageid == 0:
params = urllib.urlencode({'key':sessionkey})
else:
params = urllib.urlencode({'key':sessionkey, 'lastmessageid': lastmessageid})
print "https://peerbet.org/api.php?method=getchatmessages&%s" % params
f = opener.open("https://peerbet.org/api.php?method=getchatmessages&%s" % params)
chat=f.read()
chat=eval(chat)
chat=chat['message_list']
chat=eval(chat)
#status "open" - there are unsold tickets in the game, "waiting" - waiting for the next Bitcoin block, "win" - current user won the game, "lose" - current user lost the game, "finished" if the raffle is finished but current user did not participated
for c in chat:
lastmessageid=c['message_id']
print c['bot'] + ' ' + c['posted_by'] + ':' + c['message_body']
"""
if len(raffle_id_list) >= numraffles:
sleeptime=random.uniform(60, 2*60)
print 'Waiting ' + str(sleeptime) + 's ...'
time.sleep(sleeptime)
else:
sleeptime=random.uniform(10, 30)
print 'Waiting ' + str(sleeptime) + 's ...'
time.sleep(sleeptime)