take screenshot of process and post to slack
This commit is contained in:
parent
48027afd0e
commit
5e65d818b5
@ -10,7 +10,9 @@ steps:
|
|||||||
- name: run
|
- name: run
|
||||||
image: joyzoursky/python-chromedriver:3.9-selenium
|
image: joyzoursky/python-chromedriver:3.9-selenium
|
||||||
environment:
|
environment:
|
||||||
SLACK_HOOK_URL:
|
SLACK_TOKEN:
|
||||||
from_secret: slack_hook_url
|
from_secret: slack_token
|
||||||
|
SLACK_CHANNEL:
|
||||||
|
from_secret: SLACK_CHANNEL
|
||||||
commands:
|
commands:
|
||||||
- bash run.sh
|
- bash run.sh
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
**/__pycache__*
|
**/__pycache__*
|
||||||
|
*.png
|
||||||
|
34
bot.py
34
bot.py
@ -60,6 +60,15 @@ def filter_word(word, conditions):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def slack_request(method, **kwargs):
|
||||||
|
kwargs['headers'] = {'Authorization': 'Bearer ' + os.environ['SLACK_TOKEN']}
|
||||||
|
|
||||||
|
return requests.post(
|
||||||
|
f'https://slack.com/api/{method}',
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Solver:
|
class Solver:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
print('Launching web browser')
|
print('Launching web browser')
|
||||||
@ -119,6 +128,12 @@ class Solver:
|
|||||||
history.append(row_hist)
|
history.append(row_hist)
|
||||||
return history
|
return history
|
||||||
|
|
||||||
|
def capture_board(self):
|
||||||
|
board = self.driver.execute_script("return document.querySelector('game-app').shadowRoot.querySelector('#board')")
|
||||||
|
filename = f'wordlebot_{datetime.datetime.now().strftime("%Y-%m-%d")}.png'
|
||||||
|
board.screenshot(filename)
|
||||||
|
return filename
|
||||||
|
|
||||||
def solve(self):
|
def solve(self):
|
||||||
print('Attempting to solve')
|
print('Attempting to solve')
|
||||||
for i in range(6):
|
for i in range(6):
|
||||||
@ -128,6 +143,9 @@ class Solver:
|
|||||||
|
|
||||||
conditions = self.read_row(i)
|
conditions = self.read_row(i)
|
||||||
if len(conditions['correct']) == 5:
|
if len(conditions['correct']) == 5:
|
||||||
|
time.sleep(3) # wait for the message that comes up when you win
|
||||||
|
self.body.click() # dismiss it
|
||||||
|
time.sleep(0.5) # wait for overlay to clear
|
||||||
return {
|
return {
|
||||||
'word': self.words[0],
|
'word': self.words[0],
|
||||||
'history': self.get_history(i + 1),
|
'history': self.get_history(i + 1),
|
||||||
@ -141,7 +159,8 @@ class Solver:
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
solver = Solver()
|
solver = Solver()
|
||||||
try:
|
try:
|
||||||
result = solver.solve()
|
if result := solver.solve():
|
||||||
|
filename = solver.capture_board()
|
||||||
finally:
|
finally:
|
||||||
solver.driver.close()
|
solver.driver.close()
|
||||||
|
|
||||||
@ -150,6 +169,17 @@ if __name__ == '__main__':
|
|||||||
wordle_num = (datetime.date.today() - datetime.date(2022, 1, 17)).days + 212
|
wordle_num = (datetime.date.today() - datetime.date(2022, 1, 17)).days + 212
|
||||||
lines = [f"Wordle {wordle_num}: {result['iterations']}/6"]
|
lines = [f"Wordle {wordle_num}: {result['iterations']}/6"]
|
||||||
lines = lines + [''.join(row) for row in result['history']]
|
lines = lines + [''.join(row) for row in result['history']]
|
||||||
requests.post(os.environ['SLACK_HOOK_URL'], json={'text': '\n'.join(lines)})
|
|
||||||
|
channel = os.environ['SLACK_CHANNEL']
|
||||||
|
r = slack_request('chat.postMessage', json={'channel': channel, 'text': '\n'.join(lines)})
|
||||||
|
msg = r.json()
|
||||||
|
|
||||||
|
if msg['ok']:
|
||||||
|
r = slack_request(
|
||||||
|
'files.upload',
|
||||||
|
params={'thread_ts': msg['ts'], 'channels': channel},
|
||||||
|
files={'file': (filename, open(filename, 'rb').read())},
|
||||||
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print('Failed to find the word.')
|
print('Failed to find the word.')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user