Guest User

RedduitDefender

a guest
Apr 2nd, 2017
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.38 KB | None | 0 0
  1. # REDDUIT DEFENDER
  2. # Defends core flag for https://www.reddit.com/r/SwissNeutralityZone/
  3. # /u/buyacasha, adapted from /u/voltasalt
  4.  
  5. import sys
  6. import time
  7. import requests
  8. import numpy
  9. from requests.adapters import HTTPAdapter
  10.  
  11. #Arguments
  12. username = sys.argv[1]
  13. password = sys.argv[2]
  14.  
  15. #Consts
  16. originX = 391
  17. originY = 491
  18. width = 24
  19. height = 24
  20. red = 5
  21. white = 0
  22.  
  23. flagMatrix = numpy.zeros((24, 24))
  24. flagMatrix.fill(red)
  25. for x in range(4, width - 4 - 1):
  26.     for y in range(10, 14):
  27.         flagMatrix[x, y] = white
  28. for x in range(10, 14):
  29.     for y in range(4, height - 4 - 1):
  30.         flagMatrix[x, y] = white       
  31. print(flagMatrix)
  32. print("\n\nFor the Redduit\n\n")
  33. s = requests.Session()
  34. s.mount('https://www.reddit.com', HTTPAdapter(max_retries=5))
  35. s.headers["User-Agent"] = "RedduitDefence"
  36. r = s.post("https://www.reddit.com/api/login/{}".format(username),
  37.            data={"user": username, "passwd": password, "api_type": "json"})
  38. s.headers['x-modhash'] = r.json()["json"]["data"]["modhash"]
  39.  
  40. def place_pixel(ax, ay, new_color):
  41.     while True:
  42.         r = s.get("http://reddit.com/api/place/pixel.json?x={}&y={}".format(ax, ay), timeout=5)
  43.         if r.status_code == 200:
  44.             data = r.json()
  45.             break
  46.         else:
  47.             print("ERROR: ", r, r.text)
  48.         time.sleep(5)
  49.  
  50.     old_color = data["color"] if "color" in data else 0
  51.     if old_color == new_color:
  52.         print("{},{} OK {}".format(ax, ay, new_color))
  53.     else:
  54.         print("Placing color #{} at {},{}".format(new_color, ax, ay))
  55.         r = s.post("https://www.reddit.com/api/place/draw.json",
  56.                    data={"x": str(ax), "y": str(ay), "color": str(int(new_color))})
  57.  
  58.         print(r.json())
  59.         secs = float(r.json()["wait_seconds"])
  60.         if "error" not in r.json():
  61.             print("Placed color - waiting {} seconds".format(secs))
  62.         else:
  63.             print("Cooldown already active - waiting {} seconds".format(int(secs)))
  64.         time.sleep(secs + 2)
  65.  
  66.         if "error" in r.json():
  67.             place_pixel(ax, ay, new_color)
  68.  
  69. while True:    
  70.     print("Iterating over Swiss flag...")  
  71.     for x in range(originX, originX + width):
  72.         for y in range(originY, originY + height):
  73.             pixel = flagMatrix[x - originX, y - originY]
  74.             place_pixel(x, y, pixel)
  75.     print("Yay, Swiss flag complete. Restarting at the beginning..")
Add Comment
Please, Sign In to add comment