88 lines
4.4 KiB
Markdown
88 lines
4.4 KiB
Markdown
# masto-image-bot
|
||
|
||
A bot that fetches a random local image and publish it on Mastodon.
|
||
|
||
Copy the file `config.sample.txt` to `config.txt` and add the path to your images directory.
|
||
File the file `secrets/secrets.txt` with the codes you will find in the developper tab of your Mastodon account.
|
||
You can also register your bot on a Mastodon instance and get the needed codes with the help of the script [register-app](https://framagit.org/fiat-tux/hat-softwares/mastodon/register-app).
|
||
|
||
## Install the dependencies
|
||
|
||
```
|
||
pip3 install -r requirements.txt
|
||
```
|
||
|
||
## Configure the bot
|
||
|
||
Copy `config.sample.txt` to `config.txt` and replace data by your data.
|
||
|
||
If you don't want any "spoiler text", just leave the line empty.
|
||
|
||
| **Field name** | Description | Value |
|
||
| ------------------- | --------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
|
||
| img_path | Path where image are located | /home/bot/img | ../bot |
|
||
| name | Name of your bot (name after @). Is usefull to hide it's name in reply | mybot |
|
||
| secrets_filepath | Path where located secret | secrets/secrets.txt |
|
||
| log_filepath | Path where located log file | activity.log |
|
||
| blacklist_filepath | Path where located blacklist file | blacklist.json |
|
||
| collection_filepath | Path where located distant image collection | collection.json |
|
||
| sensitive | Hide picture behind "sensitive content" mask or not | yes | no |
|
||
| default_text | Text for --img option | string |
|
||
| spoiler_text | Text for every spoiler (or CW) (for --img or --stream option) | string |
|
||
| limit | Limit send per minute per person | int |
|
||
| limit_hour | Limit send par hour per person | int |
|
||
| collection_url | URL of website you deserve image. `<collection>` is a variable who depend on collection.json (you can remove this variable) | string |
|
||
| unsplash_client_id | Access key of your Unsplash App (you can create it on api.unsplash.com ) | string |
|
||
|
||
Copy `blacklist.sample.json` to `blacklist.json` and replace or add accounts that should not receive any image
|
||
|
||
Copy `collection.sample.json` to `collection.json` and add collection for your bot
|
||
|
||
## Use it
|
||
|
||
```
|
||
usage: bot.py [-h] [-i] [-s SOURCE] [--stream]
|
||
|
||
Choose between image or streaming
|
||
|
||
optional arguments:
|
||
-h, --help show this help message and exit
|
||
-i, --img post image
|
||
-s SOURCE, --source SOURCE
|
||
Source of image [ local | distant | unsplash-random ]
|
||
--stream stream user profile
|
||
|
||
```
|
||
|
||
`--img` option send image.
|
||
`--stream` option send image on mention
|
||
|
||
## Create a systemd service
|
||
|
||
On `/etc/systemd/system/bot.service` copy paste code behind
|
||
|
||
```
|
||
[Unit]
|
||
Description=Image bot Mastodon
|
||
Documentation=https://git.drycat.fr/Dryusdan/masto-random-local-image-bot/src/branch/master
|
||
Requires=network.target
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=simple
|
||
User=masto-bot
|
||
TimeoutSec=15
|
||
WorkingDirectory=/home/masto-bot/
|
||
ExecStart=/usr/bin/python3 bot.py --stream --source=local
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
|
||
Then do
|
||
```
|
||
systemctl daemon-reload
|
||
systemctl enable bot.service
|
||
systemctl start bot.service
|
||
```
|