more attempted refactoring. actually made some things uglier but it can followback instantly now
This commit is contained in:
parent
306bf1870b
commit
5cb52b90c5
|
@ -7,6 +7,8 @@ import re
|
||||||
import json
|
import json
|
||||||
import requests
|
import requests
|
||||||
import io
|
import io
|
||||||
|
import sys
|
||||||
|
import traceback
|
||||||
|
|
||||||
import atoot
|
import atoot
|
||||||
import scrython
|
import scrython
|
||||||
|
@ -35,12 +37,15 @@ async def startup():
|
||||||
for t in tasks:
|
for t in tasks:
|
||||||
await t
|
await t
|
||||||
|
|
||||||
def get_cards(card_names):
|
async def get_cards(card_names):
|
||||||
async def download_card_image(session, c):
|
async def download_card_image(session, c):
|
||||||
|
log(f'Downloading image for {c.name()}...')
|
||||||
url = c.image_uris(0, 'normal')
|
url = c.image_uris(0, 'normal')
|
||||||
async with session.get(url) as r:
|
async with session.get(url) as r:
|
||||||
return io.BytesIO(r.read())
|
image = io.BytesIO(await r.read())
|
||||||
|
|
||||||
|
log(f'Done downloading image for {c.name()}!')
|
||||||
|
return image
|
||||||
|
|
||||||
def get_text_representation(c):
|
def get_text_representation(c):
|
||||||
# I genuinely think this is the best way to check whether a card has
|
# I genuinely think this is the best way to check whether a card has
|
||||||
|
@ -87,9 +92,9 @@ def get_cards(card_names):
|
||||||
if 1 <= len(found) <= 4:
|
if 1 <= len(found) <= 4:
|
||||||
# download card images
|
# download card images
|
||||||
async with aiohttp.ClientSession() as session:
|
async with aiohttp.ClientSession() as session:
|
||||||
images = list(await asyncio.gather(
|
images = list(zip(await asyncio.gather(
|
||||||
*(download_card_image(session, c) for c in found)
|
*(download_card_image(session, c) for c in found)
|
||||||
))
|
), (get_text_representation(c) for c in found)))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
images = None
|
images = None
|
||||||
|
@ -128,7 +133,6 @@ async def listen(c, me):
|
||||||
async with c.streaming('user') as stream:
|
async with c.streaming('user') as stream:
|
||||||
async for msg in stream:
|
async for msg in stream:
|
||||||
status = json.loads(msg.json()['payload'])
|
status = json.loads(msg.json()['payload'])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# two events come in for the statuses, one of them has the status nested deeper
|
# two events come in for the statuses, one of them has the status nested deeper
|
||||||
# just ignore that one
|
# just ignore that one
|
||||||
|
@ -139,7 +143,15 @@ async def listen(c, me):
|
||||||
status_text = status['content']
|
status_text = status['content']
|
||||||
status_visibility = status['visibility']
|
status_visibility = status['visibility']
|
||||||
except:
|
except:
|
||||||
# ignore any events we don't know how to handle
|
try:
|
||||||
|
if status['type'] == 'follow':
|
||||||
|
id = status['account']['id']
|
||||||
|
log(f'Received follow from {id}, following back')
|
||||||
|
await c.account_follow(id)
|
||||||
|
except:
|
||||||
|
log('Event came in that we don\'t know how to handle.', Severity.WARNING)
|
||||||
|
log(status, Severity.WARNING)
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
reply_visibility = min(('unlisted', status_visibility), key=['direct', 'private', 'unlisted', 'public'].index)
|
reply_visibility = min(('unlisted', status_visibility), key=['direct', 'private', 'unlisted', 'public'].index)
|
||||||
|
@ -152,7 +164,7 @@ async def listen(c, me):
|
||||||
# ignore any statuses without cards in them
|
# ignore any statuses without cards in them
|
||||||
if not card_names: continue
|
if not card_names: continue
|
||||||
|
|
||||||
cards, media = get_cards(card_names)
|
cards, media = await get_cards(card_names)
|
||||||
|
|
||||||
reply_text = status_author
|
reply_text = status_author
|
||||||
|
|
||||||
|
@ -165,7 +177,8 @@ async def listen(c, me):
|
||||||
media_ids = []
|
media_ids = []
|
||||||
for image, desc in media:
|
for image, desc in media:
|
||||||
media_ids.append((await c.upload_attachment(fileobj=image, params={}, description=desc))['id'])
|
media_ids.append((await c.upload_attachment(fileobj=image, params={}, description=desc))['id'])
|
||||||
except:
|
except Exception as e:
|
||||||
|
log(traceback.print_exc(), Severity.ERROR)
|
||||||
reply_text = f'{status_author} Sorry! You broke me somehow. Please let Holly know what you did!'
|
reply_text = f'{status_author} Sorry! You broke me somehow. Please let Holly know what you did!'
|
||||||
|
|
||||||
log('Sending reply...')
|
log('Sending reply...')
|
||||||
|
|
Loading…
Reference in New Issue