92 lines
2.8 KiB
Markdown
92 lines
2.8 KiB
Markdown
# 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. |