Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- from time import sleep
- from getpass import getpass
- color_names = {
- 0: 'white',
- 1: 'light-grey',
- 2: 'grey',
- 3: 'black',
- 4:'pink',
- 5: 'red',
- 6: 'orange',
- 7: 'brown',
- 8: 'yellow',
- 9: 'light-green',
- 10: 'green',
- 11: 'lightest-blue',
- 12: 'light-blue',
- 13: 'blue',
- 14: 'light-purple',
- 15: 'purple'
- }
- class Place(object):
- def __init__(self, user, passwd, greedy=False):
- """
- user: reddit username
- pass: reddit password
- greedy: keep trying to perform request
- """
- self.session = requests.session()
- 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"})
- self.greedy = greedy
- payload= {'op': 'login',
- 'user': user,
- 'passwd': passwd}
- self.session.post("https://www.reddit.com/post/login", data=payload)
- sleep(1)
- self.last = self.session.get("https://reddit.com/api/me.json")
- self.modhash = self.last.json()["data"]["modhash"]
- self.session.headers.update({"x-modhash": self.modhash})
- def _get(self, x, y):
- payload = {"x": x,
- "y": y}
- return self.session.get("https://www.reddit.com/api/place/pixel.json", params=payload)
- def get(self, x=0, y=0):
- """get the color information at a given pixel
- x: x-coordinates
- y: y-coordinates
- """
- self.last = self._get(x,y)
- if self.greedy:
- while self.last.status_code == 429:
- sleep(1)
- self.last = self._get(x,y)
- return self.last.json()
- def _draw(self, x=0, y=0, color=0):
- payload = {"x": x,
- "y": y,
- "color": color}
- return self.session.post("https://www.reddit.com/api/place/draw.json", data=payload)
- def draw(self, x=0, y=0, color=0):
- """draw a color at given coordinates
- x: x-coordinates
- y: y-coordinates
- color: color to draw at coordinates
- """
- print("Drawing", color_names[color], "at", x, y)
- self.last = self._draw(x,y)
- if self.greedy:
- while self.last.status_code == 429:
- json = self.last.json()
- if "wait_seconds" in json:
- wait=json["wait_seconds"]
- print("Waiting: {}s".format(wait))
- sleep(wait)
- else:
- sleep(1)
- if self.get(x, y)['color'] == color:
- print("Color drawn while waiting.")
- break
- self.last = self._draw(x,y, color)
- print("Drew", color_names[color], "at", x, y)
- return self.last.json()
- topleft=(0,332)
- picture="""
- bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
- bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
- bwwwwwwbwwwwwbwwwwwwbwwbbbbbbbbbbbbbbbbbbbbbbbbbbbb
- bwwwwwwbwwwwwbwwwwwwbwwbbbbbbbwwbbbwwbbbbbbbbbbbbbb
- bwwbbwwbwwbbbbwwbbbbbwwbbbbbbbwwbbbwwbbbbbbbbbbbbbb
- bwwbbwwbwwbbbbwwbbbbbwwbwwwwwbwwwwbwwwwbwwwwwbwwwwb
- bwwbbbbbwwwwwbwwwwwwbwwbwwwwwbwwwwbwwwwbwwwwwbwwwwb
- bwwbbbbbwwwwwbwwwwwwbwwbwwbwwbwwbbbwwbbbwwbwwbwwbbb
- bwwbbwwbwwbbbbbbbbwwbwwbwwwwwbwwbbbwwbbbwwwwwbwwbbb
- bwwbbwwbwwbbbbbbbbwwbwwbwwbbbbwwbbbwwbbbwwbbbbwwbbb
- bwwwwwwbwwwwwbwwwwwwbwwbwwwwwbwwwwbwwwwbwwwwwbwwbbb
- bwwwwwwbwwwwwbwwwwwwbwwbwwwwwbwwwwbwwwwbwwwwwbwwbbb
- bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
- bbbbbbbbbbwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
- bbbbbbbbbwbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
- bbbbwwwbbwbwwwbwbwbwwwwwbwwwbwwwbwwwwwbwwwbwwwbbbbb
- bbbbwbwbwbbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbbbbb
- bbbbwbbbwbbwwwbbwbbwbwbwbwbwbwbbbwbwbwbwbwbwbwbbbbb
- bbbbwbbwbbbwbbbwbwbwbwbwbwbwbwbbbwbwbwbwbwbwbwbbbbb
- bbbbwbwbbbbwwwbwbwbwbwbwbwwwbwbbbwbwbwbwwwbwbwbbbbb
- bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"""[1:].splitlines()
- height = len(picture)
- width =len(picture[0])
- colors = {'g': 2, 'b': 3, 'w': 0}
- print('Reddit Username: ', end='')
- username = input()
- password = getpass('Reddit Password: ')
- p = Place(username, password, greedy=True)
- while True:
- try:
- stop = False
- for dx in range(width):
- for dy in range(height):
- x = dx + topleft[0]
- y = dy + topleft[1]
- pixel = p.get(x, y)
- desired_color = picture[dy][dx]
- #print(x, y, pixel, desired_color, colors[desired_color])
- if pixel['color'] != colors[desired_color]:
- p.draw(x, y, colors[desired_color])
- stop = True
- break
- if stop:
- break
- sleep(1)
- except Exception as e:
- print("There was an exception: ", str(e))
- print("Execution continuing as normal.")
Add Comment
Please, Sign In to add comment