Guest User

Untitled

a guest
Apr 2nd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. import requests
  2. from time import sleep
  3. from getpass import getpass
  4.  
  5. class Place(object):
  6. def __init__(self, user, passwd, greedy=False):
  7. """
  8. user: reddit username
  9. pass: reddit password
  10. greedy: keep trying to perform request
  11. """
  12.  
  13. self.session = requests.session()
  14. self.session.headers.update({"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.1144"})
  15.  
  16. self.greedy = greedy
  17.  
  18. payload= {'op': 'login',
  19. 'user': user,
  20. 'passwd': passwd}
  21. self.session.post("https://www.reddit.com/post/login", data=payload)
  22.  
  23. sleep(1)
  24.  
  25. self.last = self.session.get("https://reddit.com/api/me.json")
  26. self.modhash = self.last.json()["data"]["modhash"]
  27. self.session.headers.update({"x-modhash": self.modhash})
  28. def _get(self, x, y):
  29. payload = {"x": x,
  30. "y": y}
  31. return self.session.get("https://www.reddit.com/api/place/pixel.json", params=payload)
  32. def get(self, x=0, y=0):
  33. """get the color information at a given pixel
  34. x: x-coordinates
  35. y: y-coordinates
  36. """
  37. self.last = self._get(x,y)
  38. if self.greedy:
  39. while self.last.status_code == 429:
  40. sleep(1)
  41. self.last = self._get(x,y)
  42. return self.last.json()
  43.  
  44. def _draw(self, x=0, y=0, color=0):
  45. payload = {"x": x,
  46. "y": y,
  47. "color": color}
  48. return self.session.post("https://www.reddit.com/api/place/draw.json", data=payload)
  49.  
  50. def draw(self, x=0, y=0, color=0):
  51. """draw a color at given coordinates
  52. x: x-coordinates
  53. y: y-coordinates
  54. color: color to draw at coordinates
  55. """
  56. self.last = self._draw(x,y)
  57. if self.greedy:
  58. while self.last.status_code == 429:
  59. json = self.last.json()
  60. if "wait_seconds" in json:
  61. wait=json["wait_seconds"]
  62. print("Waiting: {}s".format(wait))
  63. sleep(wait)
  64. else:
  65. sleep(1)
  66.  
  67. if self.get(x, y)['color'] == color:
  68. break
  69.  
  70. self.last = self._draw(x,y, color)
  71. return self.last.json()
  72.  
  73. topleft=(0,332)
  74. picture="""
  75. bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
  76. bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
  77. bwwwwwwbwwwwwbwwwwwwbwwbbbbbbbbbbbbbbbbbbbbbbbbbbbb
  78. bwwwwwwbwwwwwbwwwwwwbwwbbbbbbbwwbbbwwbbbbbbbbbbbbbb
  79. bwwbbwwbwwbbbbwwbbbbbwwbbbbbbbwwbbbwwbbbbbbbbbbbbbb
  80. bwwbbwwbwwbbbbwwbbbbbwwbwwwwwbwwwwbwwwwbwwwwwbwwwwb
  81. bwwbbbbbwwwwwbwwwwwwbwwbwwwwwbwwwwbwwwwbwwwwwbwwwwb
  82. bwwbbbbbwwwwwbwwwwwwbwwbwwbwwbwwbbbwwbbbwwbwwbwwbbb
  83. bwwbbwwbwwbbbbbbbbwwbwwbwwwwwbwwbbbwwbbbwwwwwbwwbbb
  84. bwwbbwwbwwbbbbbbbbwwbwwbwwbbbbwwbbbwwbbbwwbbbbwwbbb
  85. bwwwwwwbwwwwwbwwwwwwbwwbwwwwwbwwwwbwwwwbwwwwwbwwbbb
  86. bwwwwwwbwwwwwbwwwwwwbwwbwwwwwbwwwwbwwwwbwwwwwbwwbbb
  87. bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
  88. bbbbbbbbbbwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
  89. bbbbbbbbbwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
  90. bbbbwwwbbwbwwwbwbwbwwwwwbwwwbwwwbwwwwwbwwwbwwwbbbbb
  91. bbbbwbwbwbbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbbbbb
  92. bbbbwbbbwbbwwwbbwbbwbwbwbwbwbwbbbwbwbwbwbwbwbwbbbbb
  93. bbbbwbbwbbbwbbbwbwbwbwbwbwbwbwbbbwbwbwbwbwbwbwbbbbb
  94. bbbbwbwbbbbwwwbwbwbwbwbwbwwwbwbbbwbwbwbwwwbwbwbbbbb
  95. bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"""[1:].splitlines()
  96.  
  97. height = len(picture)
  98. width =len(picture[0])
  99.  
  100. colors = {'g': 2, 'b': 3, 'w': 0}
  101.  
  102.  
  103. print('Reddit Username: ', end='')
  104. username = input()
  105.  
  106. password = getpass('Reddit Password: ')
  107.  
  108. p = Place(username, password, greedy=True)
  109.  
  110. while True:
  111. stop = False
  112. for dx in range(width):
  113. for dy in range(height):
  114. x = dx + topleft[0]
  115. y = dy + topleft[1]
  116. pixel = p.get(x, y)
  117. desired_color = picture[dy][dx]
  118. #print(x, y, pixel, desired_color, colors[desired_color])
  119. if pixel['color'] != colors[desired_color]:
  120. p.draw(x, y, colors[desired_color])
  121. stop = True
  122. break
  123. if stop:
  124. break
  125. sleep(1)
Add Comment
Please, Sign In to add comment