Browse Source
I think you already implemented this, but here you go... Mastodon config and bot code.pull/109/head
Jack Sweeney
2 years ago
committed by
GitHub
3 changed files with 56 additions and 2 deletions
@ -0,0 +1,39 @@
|
||||
def sendMastodon(photo, message, config): |
||||
from mastodon import Mastodon |
||||
sent = False |
||||
retry_c = 0 |
||||
while sent == False: |
||||
try: |
||||
bot = Mastodon( |
||||
access_token=config.get('MASTODON','ACCESS_TOKEN'), |
||||
api_base_url=config.get('MASTODON','APP_URL') |
||||
) |
||||
mediaid = bot.media_post(photo, mime_type="image/jpeg") |
||||
sent = bot.status_post(message,None,mediaid,False, "Public") |
||||
except Exception as err: |
||||
print('err.args:') |
||||
print(err.args) |
||||
print(f"Unexpected {err=}, {type(err)=}") |
||||
print("\nString err:\n"+str(err)) |
||||
if retry_c > 4: |
||||
print('Mastodon attempts exceeded. Message not sent.') |
||||
break |
||||
elif str(err) == 'Unauthorized': |
||||
print('Invalid Mastodon bot token, message not sent.') |
||||
break |
||||
elif str(err) == 'Timed out': |
||||
retry_c += 1 |
||||
print('Mastodon timeout count: '+str(retry_c)) |
||||
pass |
||||
elif str(err)[:35] == '[Errno 2] No such file or directory': |
||||
print('Mastodon module couldn\'t find an image to send.') |
||||
break |
||||
elif str(err) == 'Media_caption_too_long': |
||||
print('Mastodon image caption lenght exceeds 1024 characters. Message not send.') |
||||
break |
||||
else: |
||||
print('[X] Unknown error. Message not sent.') |
||||
break |
||||
else: |
||||
print("Mastodon message successfully sent.") |
||||
return sent |
Loading…
Reference in new issue