# screencap-bot this is a cohost bot that periodically posts randomly-chosen screencaps from a configured collection of tv series/movies. ## installation you can build screencap-bot with cargo by cloning this repo, or install it as a Nix Flake. it needs the ffmpeg library, and also needs the ffmpeg binary in its `PATH` when it's running. the default package provided by the flake is a wrapped version that adds ffmpeg to its `PATH` for you. ## configuration screencap-bot is configured with the following environment variables, which can also be put in a `.env` file in the program's working directory: - `SCREENCAP_BOT_SHOWS_FILE`: path of a YAML file specifying what shows to take screencaps from (default: `./shows.yaml`) - `SCREENCAP_BOT_GLOBAL_TAGS`: tags to put on every post the bot makes, as a comma-separated list (eg `bot account,automated post,The Cohost Bot Feed`) (default: none) - `SCREENCAP_BOT_POST_INTERVAL`: the interval between posts, in seconds (default: 6 hours) - `SCREENCAP_BOT_COHOST_EMAIL`: the email address the bot should use to log into cohost - `SCREENCAP_BOT_COHOST_PASSWORD`: the password the bot should use to log into cohost - `SCREENCAP_BOT_COHOST_PAGE`: the cohost page the bot should post from - `RUST_LOG`: log levels, for the app as a whole and/or for specific submodules/libraries. See [`env_logger`](https://docs.rs/env_logger/latest/env_logger/)'s documentation for details. ### shows the list of shows the bot should take screencaps from is read from a YAML file with the following structure: ```yaml Char's Counterattack: path: /home/user/media/Gundam_CCA.mkv Gundam 0079: path: /home/user/media/Mobile Suit Gundam 0079/ tags: - MSG 0079 - "0079" - First Gundam ``` each top-level key is a show title, which will be used in spoiler warnings on posts and in image alt text. each show has two keys: - `path`: the path of a single video file, or the path of a directory containing numbered video files for each episode of a series. all of the episodes must be directly inside the directory, the bot will not traverse subdirectories to find files. - `tags`: an optional list of tags to put on posts from this show.