YouTube / Invidious daemon and CLI tool for crawling and processing channels with pre-configured commands vector https://crates.io/crates/ytd
Find a file
2026-04-07 12:05:13 +03:00
example implement item_name_regex option 2026-04-07 12:05:13 +03:00
src implement item_name_regex option 2026-04-07 12:05:13 +03:00
.gitignore implement permanent database to skip handle processed entries 2026-04-06 22:35:36 +03:00
Cargo.lock implement item_name_regex option 2026-04-07 12:05:13 +03:00
Cargo.toml implement item_name_regex option 2026-04-07 12:05:13 +03:00
LICENSE Initial commit 2026-04-06 20:19:26 +02:00
README.md add update option note for the daemon mode 2026-04-06 23:33:45 +03:00

ytd

YouTube daemon and CLI tool for crawling and processing channels with pre-configured commands vector.

This tool was initially created as a helper for the Pidpilne project, impressed by ytsub and rustypipe API.

Install

cargo install ytd

Usage

Foreground / testing:

RUST_LOG=trace cargo run -- -c example/config.toml

Background / daemon:

RUST_LOG=ytd=warn NO_COLOR=1 /usr/local/bin/ytd -c /etc/config.toml
  • make sure update option is defined (in the config file)

systemd

git clone https://codeberg.org/yggverse/ytd.git
cd ytd
cargo build --release --locked
sudo install target/release/ytd /usr/local/bin
sudo cp example/config.toml /etc/ytd.toml
sudo useradd -s /usr/sbin/nologin -Mr ytd
sudo mkdir /var/lib/ytd && sudo chown ytd:ytd /var/lib/ytd
sudo mkdir /var/log/ytd && sudo chown ytd:ytd /var/log/ytd
#/etc/systemd/system/ytd.service

[Unit]
After=network-online.target
Wants=network-online.target

[Service]
User=ytd
Group=ytd

Environment="RUST_LOG=ytd=warn"
Environment="NO_COLOR=1"
WorkingDirectory=/var/lib/ytd
ExecStart=/usr/local/bin/ytd -c=/etc/ytd.toml

Restart=always

StandardOutput=file:///var/log/ytd/debug.log
StandardError=file:///var/log/ytd/error.log

[Install]
WantedBy=multi-user.target
  • sudo systemctl restart ytd
  • sudo systemctl enable ytd
  • sudo systemctl status ytd