12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import os
- import sys
- import subprocess
- from mastodon import Mastodon
- API_URL = 'https://botsin.space/'
- sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)
- def getEvents():
- cmd = ['python3', '-m', 'onthisday']
- if len(sys.argv) > 1:
- cmd += sys.argv[1:]
- process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- stdout, stderr = process.communicate()
- try:
- stdout = stdout.strip()
- stdout = stdout.decode('utf8')
- except:
- return 'uh-oh: something was wrong with the encoding of the events; try again'
- if process.returncode != 0:
- return 'something terrible is happening: exit code: %s, stderr: %s' % (
- process.returncode, stderr.decode('utf8'))
- if not stdout:
- return 'sadness: the list of events is empty; try again'
- return stdout
- def serve(token):
- events = getEvents()
- print('On this day:\n\n%s' % events)
- mastodon = Mastodon(access_token=token, api_base_url=API_URL)
- mastodon.status_post(events)
- if __name__ == '__main__':
- if 'EVENTS_TOKEN' not in os.environ:
- print("Please specify the Mastodon token in the EVENTS_TOKEN environment variable")
- sys.exit(1)
- serve(token=os.environ['EVENTS_TOKEN'])
|