Advertisement
Guest User

Untitled

a guest
Mar 4th, 2016
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.80 KB | None | 0 0
  1. from cookielib import Cookie, CookieJar
  2. import urllib
  3. import urllib2
  4. import json
  5. import collections
  6. import time
  7. import math
  8. import re
  9. import requests
  10. from requests.auth import HTTPDigestAuth
  11. import PyV8
  12. import mysql.connector
  13.  
  14. cnx = mysql.connector.connect(user='root', password='PASSWORD',
  15. host='127.0.0.1',
  16. database='stats')
  17. cnx.autocommit = True
  18. cursor = cnx.cursor()
  19. cursor.execute("select * from stats2")
  20. row = cursor.fetchall()
  21.  
  22. oldp1 = "null"
  23. oldp2 = "null"
  24. lastmatch = ""
  25. t = ""
  26. timer = 2
  27.  
  28. def is_number(s):
  29. try:
  30. float(s)
  31. return True
  32. except ValueError:
  33. return False
  34.  
  35. def loadNormalBalance():
  36. url = 'http://www.saltybet.com/ajax_tournament_end.php'
  37. cookie = {'PHPSESSID':'5u6otnvm2rkj4dtcem100bicp5', '__cfduid':'dd5e50c1a208ad31feb0e6e889a401f7c1456030509', '_ga':'GA1.2.1530606619.1428546962'}
  38. result = requests.get(url, cookies=cookie)
  39. baldata = json.loads(result.text)
  40. return baldata
  41.  
  42. def loadTournamentBalance():
  43. url = 'http://www.saltybet.com/ajax_tournament_start.php'
  44. cookie = {'PHPSESSID':'5u6otnvm2rkj4dtcem100bicp5', '__cfduid':'dd5e50c1a208ad31feb0e6e889a401f7c1456030509', '_ga':'GA1.2.1530606619.1428546962'}
  45. result = requests.get(url, cookies=cookie)
  46. baldata = json.loads(result.text)
  47. return baldata
  48.  
  49. url = 'http://www.saltybet.com/authenticate?signin=1'
  50. values = {'email' : 'EMAIL',
  51. 'pword' : 'PASSWORD',
  52. 'authenticate' : 'signin'}
  53. hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
  54. 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  55. 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
  56. 'Accept-Encoding': 'none',
  57. 'Accept-Language': 'en-US,en;q=0.8',
  58. 'Content-Type': 'application/x-www-form-urlencoded',
  59. 'Content-Length': '79',
  60. 'Cache-Control': 'max-age=0',
  61. 'Connection': 'keep-alive'}
  62.  
  63. s = requests.Session()
  64. s.headers = hdr
  65.  
  66. r = s.post(url, data=values, allow_redirects=False)
  67.  
  68.  
  69. print("$$$$$ Oxbot ver 2.1 $$$$$")
  70. print("Credit: Oxboxrox | Latest update: 03/03/16")
  71. print('Loaded Oxbot')
  72. print("=============================================")
  73. print('Waiting for next match...')
  74.  
  75. while 1:
  76. timer = timer - 1
  77. time.sleep(1)
  78. if timer == 0 :
  79. timer = 4
  80. url = 'http://www.saltybet.com/state.json'
  81. result = requests.get(url, cookies=r.cookies)
  82. #result is in format "{"p1name":"[p1Name]","p2name":"[p2Name]","p1total":"[pot1]","p2total":"[pot2]","status":"[open/locked]","alert":"","x":1,"remaining":"[remaining]"}"
  83. data = result.text
  84. dataSTR = str(data)
  85. fndr = re.search('"status":"(.+?)","alert"', dataSTR)
  86. if fndr:
  87. status = fndr.group(1)
  88. modefnd = re.search('"remaining":"(.+?)"', dataSTR)
  89. xxxfnd = re.search('"remaining":"(.+?)"', dataSTR)
  90. if modefnd:
  91. mode = modefnd.group(1)
  92.  
  93. cookie = {'PHPSESSID':'5u6otnvm2rkj4dtcem100bicp5', '__cfduid':'dd5e50c1a208ad31feb0e6e889a401f7c1456030509', '_ga':'GA1.2.1530606619.1428546962'}
  94. url = "http://www.saltybet.com/ajax_get_stats"
  95. result1 = requests.get(url, cookies=cookie)
  96. data3 = result1.text
  97. data3STR = str(data3)
  98.  
  99. #data3 is in format "{"p1name":"","p1totalmatches":"","p1winrate":"","p1tier":"","p1life":"","p1meter":"","p1author":"","p1palette":"","p2name":"","p2totalmatches":"","p2winrate":"","p2tier":"","p2life":"","p2meter":"","p2author":"","p2palette":""}
  100. namef1 = re.search('"p1name":"(.+?)","', dataSTR)
  101. if namef1:
  102. p1name = namef1.group(1)
  103. if "'" in p1name:
  104. pass #yeah the SQL database can't fuckin handle apostrophes and I'm too lazy to work around it
  105. totalf1 = re.search('"p1totalmatches":"(.+?)","p1winrate"', data3STR)
  106. if totalf1:
  107. p1total = totalf1.group(1)
  108. winf1 = re.search('"p1winrate":"(.+?)","p1tier"', data3STR)
  109. if winf1:
  110. p1win = winf1.group(1)
  111. tierf1 = re.search('"p1tier":"(.+?)","p1life"', data3STR)
  112. if tierf1:
  113. p1tier = tierf1.group(1)
  114. namef2 = re.search('"p2name":"(.+?)","', dataSTR)
  115. if namef2:
  116. p2name = namef2.group(1)
  117. if "'" in p2name:
  118. pass #see previous comment about apostrophes...
  119. totalf2 = re.search('"p2totalmatches":"(.+?)","p2winrate"', data3STR)
  120. if totalf2:
  121. p2total = totalf2.group(1)
  122. winf2 = re.search('"p2winrate":"(.+?)","p2tier"', data3STR)
  123. if winf2:
  124. p2win = winf2.group(1)
  125. tierf2 = re.search('"p2tier":"(.+?)","p2life"', data3STR)
  126. if tierf2:
  127. p2tier = tierf2.group(1)
  128. balance = loadNormalBalance()
  129. cursor.execute("select * from stats2 where name = '" + p1name + "'")
  130. p1row = cursor.fetchall()
  131. if str(p1row) == "[]":
  132. try:
  133. if int(p1win) >= 85:
  134. calcdELO = 1075
  135. elif int(p1win) >= 75:
  136. calcdELO = 1050
  137. elif int(p1win) >= 50:
  138. calcdELO = 1010
  139. elif int(p1win) < 50:
  140. calcdELO = 990
  141. elif int(p1win) < 40:
  142. calcdELO = 950
  143. elif int(p1win) < 30:
  144. calcdELO = 925
  145. cursor.execute("INSERT INTO stats2 (id, name, tier, winrate, totalwin, elo) VALUES (NULL, '" + p1name + "', '" + p1tier + "', '" + p1win + "', '" + p1total + "', '" + str(calcdELO) + "')")
  146. print("Creating new entry for " + p1name)
  147. cursor.execute("select * from stats2 where name = '" + p1name + "'")
  148. newp1row = cursor.fetchone()
  149. p1ELO = p1row[5]
  150. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  151. pass
  152. except mysql.connector.Error as err:
  153. pass
  154. else:
  155. cursor.execute("select * from stats2 where name = '" + p1name + "'")
  156. p1row = cursor.fetchone()
  157. p1ELO = p1row[5]
  158. cursor.execute("select * from stats2 where name = '" + p2name + "'")
  159. p2row = cursor.fetchall()
  160. if str(p2row) == "[]":
  161. try:
  162. if int(p2win) >= 85:
  163. calcdELO2 = 1075
  164. elif int(p2win) >= 75:
  165. calcdELO2 = 1050
  166. elif int(p2win) >= 50:
  167. calcdELO2 = 1010
  168. elif int(p2win) < 50:
  169. calcdELO2 = 990
  170. elif int(p2win) < 40:
  171. calcdELO2 = 950
  172. elif int(p2win) < 30:
  173. calcdELO2 = 925
  174. cursor.execute("INSERT INTO stats2 (id, name, tier, winrate, totalwin, elo) VALUES (NULL, '" + p2name + "', '" + p2tier + "', '" + p2win + "', '" + p2total + "', '" + str(calcdELO2) + "')")
  175. print("Creating new entry for " + p2name)
  176. cursor.execute("select * from stats2 where name = '" + p2name + "'")
  177. newp2row = cursor.fetchone()
  178. p2ELO = newp2row[5]
  179. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  180. pass
  181. except mysql.connector.Error as err:
  182. pass
  183. else:
  184. cursor.execute("select * from stats2 where name = '" + p2name + "'")
  185. p2row = cursor.fetchone()
  186. p2ELO = p2row[5]
  187. if status == "1" or status == "2":
  188. if p1name != oldp1 or p2name != oldp2:
  189. oldp1 = p1name
  190. oldp2 = p2name
  191. cursor.execute("select * from stats2 where name = '" + oldp1 + "'")
  192. p1row = cursor.fetchall()
  193. if str(p1row) == "[]":
  194. try:
  195. cursor.execute("INSERT INTO stats2 (id, name, tier, winrate, totalwin, elo) VALUES (NULL, '" + p1name + "', '" + p1tier + "', '" + p1win + "', '" + p1total + "', 1000)")
  196. print("Creating new entry for " + oldp1)
  197. p1ELO = 1000
  198. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  199. pass
  200. except mysql.connector.Error as err:
  201. pass
  202. else:
  203. cursor.execute("select * from stats2 where name = '" + oldp1 + "'")
  204. p1row = cursor.fetchone()
  205. p1ELO = p1row[5]
  206. cursor.execute("select * from stats2 where name = '" + oldp2 + "'")
  207. p2row = cursor.fetchall()
  208. if str(p2row) == "[]":
  209. try:
  210. cursor.execute("INSERT INTO stats2 (id, name, tier, winrate, totalwin, elo) VALUES (NULL, '" + p2name + "', '" + p2tier + "', '" + p2win + "', '" + p2total + "', 1000)")
  211. print("Creating new entry for " + oldp2)
  212. p2ELO = 1000
  213. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  214. pass
  215. except mysql.connector.Error as err:
  216. pass
  217. else:
  218. try:
  219. cursor.execute("select * from stats2 where name = '" + oldp2 + "'")
  220. p2row = cursor.fetchone()
  221. p2ELO = p2row[5]
  222. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  223. pass
  224. except mysql.connector.Error as err:
  225. pass
  226.  
  227. if status == "1":
  228. try:
  229. if int(p1ELO) > int(p2ELO):
  230. newELO1 = str(int(p1ELO) + 25)
  231. newELO2 = str(int(p2ELO) - 25)
  232. elif int(p1ELO) < int(p2ELO):
  233. newELO1 = str(int(p1ELO) + 75)
  234. newELO2 = str(int(p2ELO) - 50)
  235. else:
  236. newELO1 = str(int(p1ELO) + 50)
  237. newELO2 = str(int(p1ELO) - 25)
  238. cursor.execute("UPDATE stats2 SET elo = '" + newELO1 + "' where name = '" + oldp1 + "'")
  239. cursor.execute("UPDATE stats2 SET elo = '" + newELO2 + "' where name = '" + oldp2 + "'")
  240. print(p1name + " wins! Updating ELO. New ELO for " + p1name + ": [" + newELO1 + "]")
  241. print(p2name + " loses... Updating ELO. New ELO for " + p2name + ": [" + newELO2 + "]")
  242. print("=============================================")
  243. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  244. pass
  245. except mysql.connector.Error as err:
  246. pass
  247. else:
  248. try:
  249. if int(p1ELO) > int(p2ELO):
  250. newELO1 = str(int(p1ELO) - 50)
  251. newELO2 = str(int(p2ELO) + 75)
  252. elif int(p1ELO) < int(p2ELO):
  253. newELO1 = str(int(p1ELO) - 25)
  254. newELO2 = str(int(p2ELO) + 25)
  255. else:
  256. newELO1 = str(int(p1ELO) - 25)
  257. newELO2 = str(int(p1ELO) + 50)
  258. cursor.execute("UPDATE stats2 SET elo = '" + newELO1 + "' where name = '" + oldp1 + "'")
  259. cursor.execute("UPDATE stats2 SET elo = '" + newELO2 + "' where name = '" + oldp2 + "'")
  260. print(p2name + " wins! Updating ELO. New ELO for " + p2name + ": [" + newELO2 + "]")
  261. print(p1name + " loses... Updating ELO. New ELO for " + p1name + ": [" + newELO1 + "]")
  262. print("=============================================")
  263. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  264. pass
  265. except mysql.connector.Error as err:
  266. pass
  267. if status == "open":
  268. try:
  269. balance = loadNormalBalance()
  270. tourbal = loadTournamentBalance()
  271. cursor.execute("select * from stats2 where name = '" + p1name + "'")
  272. p1row = cursor.fetchall()
  273. if str(p1row) == "[]":
  274. try:
  275. if int(p1win) >= 85:
  276. calcdELO = 1075
  277. elif int(p1win) >= 75:
  278. calcdELO = 1050
  279. elif int(p1win) >= 50:
  280. calcdELO = 1010
  281. elif int(p1win) < 50:
  282. calcdELO = 990
  283. elif int(p1win) < 40:
  284. calcdELO = 950
  285. elif int(p1win) < 30:
  286. calcdELO = 925
  287. cursor.execute("INSERT INTO stats2 (id, name, tier, winrate, totalwin, elo) VALUES (NULL, '" + p1name + "', '" + p1tier + "', '" + p1win + "', '" + p1total + "', '" + str(calcdELO) + "')")
  288. print("Creating new entry for " + p1name)
  289. cursor.execute("select * from stats2 where name = '" + p1name + "'")
  290. newp1row = cursor.fetchone()
  291. p1ELO = newp1row[5]
  292. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  293. pass
  294. except mysql.connector.Error as err:
  295. pass
  296. else:
  297. try:
  298. cursor.execute("select * from stats2 where name = '" + p1name + "'")
  299. p1row = cursor.fetchone()
  300. p1ELO = p1row[5]
  301. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  302. pass
  303. except mysql.connector.Error as err:
  304. pass
  305. cursor.execute("select * from stats2 where name = '" + p2name + "'")
  306. p2row = cursor.fetchall()
  307. if str(p2row) == "[]":
  308. try:
  309. if int(p2win) >= 85:
  310. calcdELO2 = 1075
  311. elif int(p2win) >= 75:
  312. calcdELO2 = 1050
  313. elif int(p2win) >= 50:
  314. calcdELO2 = 1010
  315. elif int(p2win) < 50:
  316. calcdELO2 = 990
  317. elif int(p2win) < 40:
  318. calcdELO2 = 950
  319. elif int(p2win) < 30:
  320. calcdELO2 = 925
  321. cursor.execute("INSERT INTO stats2 (id, name, tier, winrate, totalwin, elo) VALUES (NULL, '" + p2name + "', '" + p2tier + "', '" + p2win + "', '" + p2total + "', '" + str(calcdELO2) + "')")
  322. print("Creating new entry for " + p2name)
  323. cursor.execute("select * from stats2 where name = '" + p2name + "'")
  324. newp2row = cursor.fetchone()
  325. p2ELO = newp2row[5]
  326. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  327. pass
  328. except mysql.connector.Error as err:
  329. pass
  330. else:
  331. try:
  332. cursor.execute("select * from stats2 where name = '" + p2name + "'")
  333. p2row = cursor.fetchone()
  334. p2ELO = p2row[5]
  335. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  336. pass
  337. except mysql.connector.Error as err:
  338. pass
  339. if lastmatch != p1name + " vs " + p2name:
  340. lastmatch = p1name + " vs " + p2name
  341. wagerper = math.fabs(p1ELO-p2ELO) / 2000
  342. if wagerper > 0.3:
  343. wagerper = 0.2
  344. if wagerper == 0.0:
  345. wagerper = 0.1
  346. if wagerper < 0.08:
  347. wagerper = 0.08
  348. if float(balance) > 250000:
  349. if wagerper == 0.0:
  350. wagerper = 0.08
  351. if wagerper < 0.08:
  352. wagerper = 0.08
  353. if float(balance) > 200000:
  354. if wagerper > 0.15:
  355. wagerper = 0.15
  356. if float(balance) < 100000:
  357. if wagerper < 0.20:
  358. wagerper = 0.20
  359. if wagerper == 0.0:
  360. wagerper = 0.20
  361. if p1tier == "B":
  362. wagerper = 0.06
  363. if p1tier == "X":
  364. wagerper = 0.025
  365. print ("Player 1: " + p1name + "(" + p1tier + ", " + p1win + "%)" + "[" + str(p1ELO) + "]")
  366. print ("Player 2: " + p2name + "(" + p2tier + ", " + p2win + "%)" + "[" + str(p2ELO) + "]")
  367. print("Full Balance: $" + str(balance))
  368. print("Tournament Balance: $" + str(tourbal))
  369. print("Wager rate: " + str(wagerper))
  370. wager = int(math.floor(float( balance )*wagerper))
  371. if float(balance) < 50000:
  372. wager = int(balance)
  373. if float(balance) > 1000000:
  374. if wager > 100000:
  375. wager = 100000
  376. if wager < 25000:
  377. wager = 25000
  378. if int(p1ELO) > int(p2ELO):
  379. player = "player1"
  380. elif int(p1ELO) < int(p2ELO):
  381. player = "player2"
  382. elif p1win > p2win:
  383. player = "player1"
  384. elif p1win < p2win:
  385. player = "player2"
  386. mode = ""
  387. xxxfnd = re.search('"remaining":"(.+?)"', dataSTR)
  388. if xxxfnd:
  389. xxx=xxxfnd.group(1)
  390. if "the next tournament" in xxx:
  391. mode = "Matchmaking"
  392. elif "exhibition" in xxx:
  393. mode = "Exhibitions"
  394. elif "the next exhibition" in xxx:
  395. mode = "Exhibitions"
  396. elif "bracket" in xxx or "FINAL ROUND" in xxx:
  397. mode = "Tournament"
  398. if mode == "Exhibitions":
  399. wager = 1
  400. if float(balance) > 200000:
  401. wager = 100
  402. if mode == "Tournament":
  403. wager = tourbal
  404. if player == "player1":
  405. print("Betting ("+str(wager)+") on " + p1name)
  406. print(xxx)
  407. print("=============================================")
  408. elif player == "player2":
  409. print("Betting ("+str(wager)+") on " + p2name)
  410. print(xxx)
  411. print("=============================================")
  412. else:
  413. if player == "player1":
  414. print("Betting ("+str(wager)+") on " + p1name)
  415. print(xxx)
  416. print("=============================================")
  417. elif player == "player2":
  418. print("Betting ("+str(wager)+") on " + p2name)
  419. print(xxx)
  420. print("=============================================")
  421.  
  422. url = "http://www.saltybet.com/ajax_place_bet"
  423. values = {'radio' : 'on',
  424. 'selectedplayer' : player,
  425. 'wager' : wager,
  426. 'cmd': '_s-xclick'}
  427. result = requests.post(url, data=values, cookies=r.cookies)
  428. except (RuntimeError, TypeError, NameError, IndexError, ValueError):
  429. pass
  430. except mysql.connector.Error as err:
  431. pass
  432. cursor.close()
  433. cnx.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement