Cohost bot for posting randomly selected screencaps and/or audio clips from TV series/movies
Find a file
2023-07-01 20:56:37 -04:00
src use bleeding-edge eggbug for up-to-date attachment API 2023-07-01 19:48:31 -04:00
.gitignore ignore nix build results and shows.yaml 2023-06-30 16:33:55 -04:00
Cargo.lock use bleeding-edge eggbug for up-to-date attachment API 2023-07-01 19:48:31 -04:00
Cargo.toml use bleeding-edge eggbug for up-to-date attachment API 2023-07-01 19:48:31 -04:00
flake.lock Proof-of-concept: takes a random screencap, doesn't post it yet 2023-06-30 13:26:11 -04:00
flake.nix add output hash for git eggbug crate 2023-07-01 20:05:33 -04:00
LICENSE LICENSE and README 2023-07-01 20:55:47 -04:00
README.md fix YAML quoting in README example 2023-07-01 20:56:37 -04:00

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'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:

Gundam 0079:
  path: /home/user/media/Mobile Suit Gundam 0079/
  tags:
    - MSG 0079
    - "0079"
    - First Gundam
Char's Counterattack:
  path: /home/user/media/Gundam_CCA.mkv
  tags:
    - Char's Counterattack
    - "Mobile Suit Gundam: Char's Counterattack"

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: a list of tags to put on posts from this show.