171 lines
7.2 KiB
Markdown
171 lines
7.2 KiB
Markdown
# Readme
|
|
Yandere Lewd Bot is a customizable, no frills image-posting bot for Pleroma.
|
|
|
|
A live example can be viewed at [GNU/Yandere](https://yandere.cc/YandereLewdBot).
|
|
|
|
Currently the bot will only run on Linux. I believe it should run on most distros but I have only tested it on Arch and Raspbian.
|
|
|
|
## About
|
|
Yandere Lewd Bot is designed to be simple to understand (from a technical perspective) and easy to modify/extend. It relies on a list of file paths to configure and upload posts.
|
|
|
|
This project is licensed under GPLv3. See [LICENSE.txt](./LICENSE.txt).
|
|
|
|
The bot is still in development and can easily be crashed by writing a poorly configured `cfg.py` file, or messing with the masterlist it uses to configure posts. The bot may also crash with encoding errors for files with non-unicode filenames.
|
|
|
|
## Installing
|
|
To setup the python3 environment (for Arch Linux) run the following commands:
|
|
```
|
|
sudo pacman -Syu
|
|
sudo pacman -S --needed python git
|
|
git clone 'https://git.yandere.cc/Anon/YandereLewdBot.git'
|
|
git clone 'https://git.yandere.cc/Anon/FediBot.git' YandereLewdBot/src/FediBot
|
|
(Optional) git clone 'https://git.yandere.cc/Anon/FediBotEncryption.git' YandereLewdBot/src/FediBotEncryption
|
|
cd YandereLewdBot/
|
|
python -m venv venv
|
|
source venv/bin/activate
|
|
pip install --upgrade pip
|
|
pip install -r requirements.txt
|
|
deactivate
|
|
mkdir -p md5 rsc/{safe,nsfw}
|
|
cp -vn default/cfg.py src/
|
|
./run.sh -h
|
|
```
|
|
If everything worked correctly you should see usage information on Yandere Lewd Bot.
|
|
|
|
The ./run.sh file will automatically activate and deactivate the python virtual environment. You may want add a symlink to `/usr/local/bin` for convenience.
|
|
|
|
```
|
|
sudo ln -s "$(pwd)/run.sh" "/usr/local/bin/yandereLewdBot"
|
|
yandereLewdBot -h
|
|
```
|
|
|
|
For Debian or Ubuntu based distros I believe you need to change python with python3 for the package and command name `¯\_(ツ)_/¯`
|
|
|
|
## Generating your OAuth Tokens
|
|
Before you can begin posting from the bot, you must first create an account on the instance of your choice, and then generate your OAuth tokens.
|
|
|
|
To generate your tokens, run the following commands and follow the interactive prompts.
|
|
```
|
|
cd ..
|
|
git clone 'https://git.yandere.cc/Anon/CreatePleromaApp.git'
|
|
ln -s "$(pwd)"/YandereLewdBot/venv CreatePleromaApp/venv
|
|
ln -s "$(pwd)"/YandereLewdBot/src/cfg.py CreatePleromaApp/src/cfg.py
|
|
cd CreatePleromaApp
|
|
./run.sh -c cfg
|
|
# Follow the interactive prompts.
|
|
```
|
|
|
|
If you did everything correctly you should see `Success! :)` at the end of the terminal, as well as your credentials in the format below:
|
|
```text
|
|
settings_server = OrderedDict([
|
|
"app_name": "app",
|
|
"api_base_url": "https://yandere.cc",
|
|
"client_id": "Long String of Text",
|
|
"client_secret": "Long String of Text",
|
|
"access_token": "Long String of Text"
|
|
])
|
|
|
|
settings_reminder = "09/20/2020 02:58PM"
|
|
|
|
settings_encrypt = {
|
|
"encrypt": False,
|
|
"salt": "",
|
|
"keyfile": None
|
|
}
|
|
```
|
|
If you used encryption, everything in the `settings_server` dictionary will be encrypted. If you used encryption and did not specify a keyfile, you will have to enter your password every time you start the bot. Copy and paste these values from the terminal into your `src/cfg.py` file. **Make sure you paste over or delete the placeholder values with the same names.**
|
|
|
|
## Posting
|
|
To begin posting:
|
|
|
|
- Put some images in the rsc/ folder (organize by safe and nsfw posts).
|
|
- 'safe' posts will be marked with `#yandere`
|
|
- 'nsfw' posts will be set to sensitive and marked as `#nsfw #lewd #yandere`
|
|
- Make sure you are in the bot's root directory (the directory with `run.sh`)
|
|
- Get all the files you added with the following command:
|
|
- `find "./rsc" -type f -print > "./md5/master_file.txt"`
|
|
- Start the bot with `./cron.sh > log.txt 2>&1`
|
|
- Enter your password if you encrypted your OAuth tokens.
|
|
- If you symlinked the file in the [Installing](#installing) section you can simply run `yandereLewdBot` instead of changing directories and starting the bot with `./run.sh`
|
|
- If everything worked correctly, you should see your first image posted to your account.
|
|
- When you start the bot again, it will begin posting from where it last left off.
|
|
- It accomplishes this by writing the current line number to `log.txt` and incrementing it everytime `cron.sh` is called.
|
|
- Keep in mind that the bot's default visibility setting is set to unlisted for testing. You may want to update it to public.
|
|
- Read [docs/configuration.md](./docs/configuration.md) to customize the bot for your purposes.
|
|
|
|
# Donate
|
|
BTC: bc1q8w04c6xt0sm2nskkqatp372llyx8ed33at4k4g
|
|
|
|
ETH & BAT: 0x2B1C49cc1C93e5bba59a5eD4D0E0a4Da8D6Ce482
|
|
|
|
XMR: 493HynLQA4z71b3j9ZDXRNQudpdFW8GxeBGD8ahRctKn97RRurMVd35DqVqdAdjv68TcXTJWUwm6ee81ujDXGcmtKFixwQk
|
|
|
|
# Useful Tips
|
|
## Scheduling posts with cron
|
|
Most likely you will want this bot to run over a long period of time. There are a several ways to automate calling a script at regular intervals on Linux. For brevity I will be covering the cron way.
|
|
|
|
First off, install cron if it's not already installed:
|
|
```
|
|
sudo pacman -Syu
|
|
sudo pacman -S --needed cronie
|
|
sudo systemctl enable cronie
|
|
sudo systemctl start cronie
|
|
```
|
|
|
|
Next, run the following commands:
|
|
- `crontab -e`
|
|
- `25,55 * * * * /absolute/path/to/cron.sh >> "/absolute/path/to/log.txt" 2>&1`
|
|
- Modify the paths above to suit your preferences
|
|
- Save and exit
|
|
|
|
If you followed the steps above the cron job should run every 30 minutes at 25 and 55 minutes past the hour. Tail the log file to ensure it's working correctly.
|
|
|
|
## Quickly Create Configuration Files
|
|
Configuration files for Yandere Lewd Bot are just python files. Because of this we can easily create multiple configurations by importing the main configuration file, and overriding the values we need. This is useful for creating holiday and debug configurations without needing to create a new configuration file from scratch.
|
|
```
|
|
# Name: alt.py
|
|
# Post to an alt account using the exact same settings as the main configuration file
|
|
# Run with the following command: ./run.sh -c alt
|
|
|
|
# cfg.py is the default configuration.
|
|
from cfg import *
|
|
|
|
settings_server = OrderedDict([
|
|
("app_name", "generate from ./bin/create_app.py"),
|
|
("api_base_url", "generate from ./bin/create_app.py"),
|
|
("client_id", "generate from ./bin/create_app.py"),
|
|
("client_secret", "generate from ./bin/create_app.py"),
|
|
("access_token", "generate from ./bin/create_app.py")
|
|
])
|
|
|
|
settings_reminder = "generate from ./bin/create_app.py"
|
|
|
|
settings_encrypt = {
|
|
"encrypt": False,
|
|
"salt": "generate from ./bin/create_app.py",
|
|
"keyfile": None
|
|
}
|
|
|
|
# Uncommenting the below might be useful if your alt is used for debugging and testing
|
|
# settings_behavior["master_list"] = "master_file_alt.txt"
|
|
# settings_behavior["visibility"] = "private"
|
|
# settings_behavior["debug"] = True
|
|
```
|
|
|
|
```
|
|
# Name: xmas.py
|
|
# An xmas themed config file!
|
|
# Run with the following command: ./run.sh -c xmas
|
|
|
|
# cfg.py is the default configuration.
|
|
from cfg import *
|
|
|
|
settings_behavior["master_list"] = "./md5/event_xmas.txt"
|
|
|
|
# Prepend '#Merry #Christmas' to the beginning of the first line in each post
|
|
for setting in settings_post:
|
|
if len(setting["message"]) and issubclass(type(setting["message"][0]), str):
|
|
new_msg = "#Merry #Christmas {}".format(setting["message"][0])
|
|
setting["message"] = (new_msg,) + setting["message"][1:]
|
|
```
|