Skip to content

MetroWind/you-dump

Repository files navigation

You-dump

A naively simple web UI for youtube-dl/yt-dlp

screenshot

Introduction

You-dump is an extremely simple web UI. It just allows the user to queue up URLs to download, and see if a previously queued download is finished or not. Nothing more. It does not even persist the queue and the finished downloads—these are cleared with a restart.

I say “queue” a lot, but it is not really a queue. All the downloads are carried out simultaneously. In the future I may add an option to change that.

Deployment

The simplicity has one major benefit: this program is very easy to deploy. In order for it to run, one just needs to install the following:

  • The compiled binary (cargo build --release)

  • A configuration file at /etc/you-dump.toml

  • A directory that stores the front-end static files. Copy the files in the static directory in the repo into this directory.

  • Optionally a systemd service file (or equivalent)

  • Optionally a reverse proxy

The program itself does not write anything to disk at all.

In the future I may make this simpler by compiling the static files into the library. These are just two files anyway.

The configuration file contains the following lines:

# Video will be downloaded into this directory. This should exist.
download_dir = "/tmp"
# The executable of youtube-dl/yt-dlp
ydl_exec = "yt-dlp"
# The directory that stores the static files
static_dir = "/var/lib/you-dump/static"
listen_address = "127.0.0.1"
listen_port = 8000
# Whether to write timestamps in the log
log_timestamp = false
# Extra arguments passed to youtube-dl/yt-dlp. Omit to pass no extra
# args.
extra_args = ["--windows-filenames"]

If you are using a reverse proxy, you can choose to host the static files in the proxy. Make sure they are served under the static path. In that case the static_dir line can be omitted in the configuration file. But it is also perfectly fine to let you-dump handle the static files.

You could choose to let systemd manage the service. In that case here is a minimal service file:

[Unit]
Description=You-dump service
After=network.target

[Service]
User=you_dump
Group=you_dump
ExecStart=/usr/bin/you-dump
Environment="RUST_LOG=info"

[Install]
WantedBy=multi-user.target