| 123456789101112131415161718192021222324252627282930313233343536373839 |
- import json
- import requests
- from mastodon import Mastodon
- import config
-
- def get_images(album_api):
- return requests.get(album_api).json()['result']['images']
-
- def get_next_image(images, previous_id):
- tail = [image for image in images if image['id']>previous_id]
- return tail and sorted(tail, key=lambda image: image['id'])[0] or None
-
- def get_previous_id():
- try:
- return int(json.load(open("previous_id.txt")))
- except Exception:
- return 0
-
- def set_previous_id(previous_id):
- json.dump(previous_id, open("previous_id.txt", "w"))
-
- def toot_next_image():
- mastodon = Mastodon(access_token="secrets.txt")
- image = get_next_image(get_images(config.ALBUM_API), get_previous_id())
- if image:
- media = mastodon.media_post(
- requests.get(
- image["derivatives"][config.MEDIA_SIZE]["url"]).content,
- mime_type="image/jpeg",
- description = config.ALT_TEXT_TEMPLATE.format(**image))
- mastodon.status_post(
- config.TOOT_TEMPLATE.format(**image),
- media_ids=[media],
- visibility=config.TOOT_VISIBILITY,
- language=config.TOOT_LANGUAGE)
- set_previous_id(image['id'])
-
- if __name__=='__main__':
- toot_next_image()
|