# Gelbooru Image Bot for Misskey Simple python bot which scrapes images from gelbooru based on specified tags every hour and posts to a misskey instance. The script can handle multiple bots simulatenously. - Uses a systemd timer. - Posts original source when available. - Attempts to optimize downloaded images for size with PIL. - Attempts to renote the original source if possible. - Option for posting to hashtags (limits to once per day to avoid drowning out other content). ## Installation **Requires the pillow library:** `pip install pillow` Edit the misskeybot.service file with your install path, copy misskeybot.service and misskeybot.timer to `/etc/systemd/system/` then run as root: ```bash systemctl daemon-reload #Reload unit files systemctl enable misskeybot.timer #Enable the periodic execution of the script systemctl start misskeybot.timer #Start the periodic execution of the script ``` ## Usage ```bash python .\gelbooru_poster.py --help Usage: python3 gelbooru-bot.py [--gen-config] [--help] --gen-config: Add a new bot to the config.json file --help: Show this help message No arguments: Run the bot Note: The values in defaults.json will be used if the values are not set in config.json ``` ## Files ### config.json ```json { "hololive_images": { "gelbooru_tags": "hololive", "gelbooru_tags_exclude": "-sky", "bot_message": ["Hololive Image $dh$\n$gel_src$\n$src$", "Uooooh $dh$\n$gel_src$\n$src$"], "bot_hashtags": "#hololive", "misskey_token": "uuuu0hOhrrrlrlrP8888uquqaaaaAUAU", "max_page_number": 200, "last_run_time": -1, "next_run_time": -1, }, "kancolle": { "gelbooru_tags": "{kantai_collection ~ boat_girl}", "gelbooru_tags_exclude": "", "bot_message": "$dh$\n$gel_src$\n$src$", "bot_hashtags": "#kancolle", "misskey_token": "HHkkuuuutdtdrrrrvWvW8888yayaaaaa", "max_page_number": 200, "misskey_url": "https://misskey.io/api/", "last_run_time": 1696896202.1551812, "next_run_time": 1696899802.1551812, } } ``` Message formatting: - `$dh$` : Daily hashtag - `$gel_src$` : Gelbooru link - `$src$` : Original source Other fields: - `max_page_number:` Automatically determined by the script. - `last_run_time:` Unused. - `next_run_time:` Used to schedule the next time to post on that specific account. ### defaults.json ```json { "gelbooru_tags": "rating:safe", "gelbooru_tags_exclude": "", "bot_message": "Random image from Gelbooru", "misskey_url": "https://misskey.io/api/", "misskey_token": "", "max_page_number": 1000 } ``` - These values are used if not defined in the `config.json`, useful if all bots are on the same url.