Advertisement
Guest User

Untitled

a guest
Jun 25th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. mobilebot = "/home/pi/webbot/bot.js"
  4. cookiefile = "cookies.json"
  5.  
  6. from SimpleWebSocketServer import SimpleWebSocketServer, WebSocket
  7. import time, threading, subprocess
  8.  
  9. import requests, json, time, datetime, os
  10. from bs4 import BeautifulSoup
  11.  
  12. def runProcess(exe):
  13. p = subprocess.Popen(exe, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  14. while(True):
  15. retcode = p.poll() #returns None while subprocess is running
  16. line = p.stdout.readline()
  17. yield line
  18. if(retcode is not None):
  19. break
  20.  
  21. status = "Closed"
  22.  
  23. def emit_message(message):
  24. for client in clients:
  25. client.sendMessage(message)
  26.  
  27. def emit_status():
  28. emit_message(json.dumps({"type": "status", "data": status}))
  29.  
  30. def mobilebot_thread():
  31. global status
  32. status = "Starting"
  33. emit_status()
  34. while True:
  35. for line in runProcess(("node " + mobilebot).split()):
  36. line = str(line, "utf-8")
  37. if line.startswith("SteamGuard code is needed"):
  38. status = "Needs code"
  39. emit_status()
  40. elif line.startswith("Logged into Steam as"):
  41. status = "Logged in"
  42. emit_status()
  43. elif line.startswith("NOTIFICATION: "):
  44. line = line[14:]
  45. emit_message(json.dumps({"type": "message", "data": line}))
  46. print("M: " + line, end="")
  47. status = "Closed"
  48. emit_status()
  49. time.sleep(10)
  50. status = "Restarting"
  51. emit_status()
  52.  
  53. last_bump_data = {}
  54.  
  55. def get_bumpable_trades(cookies):
  56. pagedata = requests.get("https://csgolounge.com/mytrades", cookies=cookies).text
  57.  
  58. soup = BeautifulSoup(pagedata, "html.parser")
  59.  
  60. trades = []
  61. for button in soup.find_all("a", class_="buttonright"):
  62. if "Bump" in button.get_text():
  63. text = str(button)
  64. trade_id = text[text.index("bumpTrade('")+11:text.index("')")]
  65.  
  66. trades.append(trade_id)
  67.  
  68. return trades
  69.  
  70. def bump_thread():
  71. global last_bump_data
  72.  
  73. while True:
  74. print("Attempting trade bump...")
  75.  
  76. file = open(cookiefile)
  77. data = json.loads(file.read())
  78. file.close()
  79.  
  80. cookies = {}
  81.  
  82. for cookie in data:
  83. cookies[cookie["name"]] = cookie["value"]
  84.  
  85. trades = get_bumpable_trades(cookies)
  86.  
  87. attempted_bumps = len(trades)
  88. for trade in trades:
  89. requests.post("https://csgolounge.com/ajax/bumpTrade.php", cookies=cookies, data={"trade": trade})
  90.  
  91. time.sleep(20)
  92.  
  93. trades = get_bumpable_trades(cookies)
  94. successful_bumps = attempted_bumps - len(trades)
  95.  
  96. if successful_bumps > 0:
  97. last_bump_data = {"timestamp": time.time(), "trades": attempted_bumps, "successful": successful_bumps}
  98.  
  99. emit_message(json.dumps({"type": "bump", "data": last_bump_data}))
  100.  
  101. print("Successfully bumped " + str(successful_bumps) + "/" + str(attempted_bumps))
  102.  
  103. time.sleep(300 - 20)
  104.  
  105. clients = []
  106. class SimpleServer(WebSocket):
  107. def handleConnected(self):
  108. print(self.address, 'connected')
  109. clients.append(self)
  110.  
  111. self.sendMessage(json.dumps({"type": "bump", "data": last_bump_data}))
  112. self.sendMessage(json.dumps({"type": "status", "data": status}))
  113.  
  114. def handleClose(self):
  115. print(self.address, 'closed')
  116. clients.remove(self)
  117.  
  118. server = SimpleWebSocketServer('', 8432, SimpleServer)
  119.  
  120. def serve_thread():
  121. print("Starting WebSocket server...")
  122. server.serveforever()
  123.  
  124. serve_t = threading.Thread(target=serve_thread)
  125. serve_t.start()
  126. print("Started server thread")
  127.  
  128. bump_t = threading.Thread(target=bump_thread)
  129. bump_t.start()
  130. print("Started bump thread")
  131.  
  132. mobile_t = threading.Thread(target=mobilebot_thread)
  133. mobile_t.start()
  134. print("Started mobilebot thread")
  135.  
  136. while True:
  137. time.sleep(10000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement