|
@@ -0,0 +1,43 @@
|
|
|
+#!/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'])
|