# Visorum Archival Tooling This repository contains a **YouTube archival pipeline** built around `yt-dlp`, Bash, and Python. It is designed to create a **portable, self-contained video archive** with: - A strict and predictable directory structure - Per-video metadata sidecars - Repair and backfill tooling - A machine-readable catalog for external browsers (such as Visorum GUI) This documentation is for **users of the archival tools**, not contributors. --- ## Core Concepts - Each video is identified by its **YouTube video ID** - Each video exists in **exactly one category** - Metadata is stored as **JSON sidecars** (same name as the video file but .json) - The archive is **fully portable** if structure rules are respected (listed below) - Core tools are **idempotent** where possible --- ## Prerequisites All tools assume a Linux environment. Windows users should use **WSL** or Git Bash. ### Required Software #### Bash Used to orchestrate the pipeline. ```bash bash --version ``` Most Linux and macOS systems already include Bash. --- #### Python 3 Required for metadata tagging, catalog generation, and GUI support. (not required for downloads) ```bash python3 --version ``` Install if missing: **Ubuntu / Mint / Debian** ```bash sudo apt update sudo apt install python3 python3-pip python3-venv -y ``` **Fedora** ```bash sudo dnf install python3 python3-pip python3-virtualenv -y ``` **Arch / Manjaro / Garuda** ```bash sudo pacman -S python python-pip python-virtualenv ``` --- #### ffmpeg Required for media processing and thumbnail handling. ```bash ffmpeg -version ``` Install if missing: **Ubuntu / Mint / Debian** ```bash sudo apt install ffmpeg -y ``` **Fedora** ```bash sudo dnf install ffmpeg -y ``` **Arch / Manjaro / Garuda** ```bash sudo pacman -S ffmpeg ``` --- #### Deno Used by auxiliary tooling. (only for YouTube downloads) ```bash deno --version ``` Install: ```bash curl -fsSL https://deno.land/install.sh | sh ``` Follow the output instructions to add Deno to your `PATH`. --- #### yt-dlp (Pinned Binary Recommended) The pipeline was built and tested against a specific `yt-dlp` version. **Do not rely on distro-packaged yt-dlp**, which is often outdated. Download the official binary: ```bash curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o yt-dlp sudo mv yt-dlp /usr/local/bin/ sudo chmod +x /usr/local/bin/yt-dlp yt-dlp --version ``` Placing it in `/usr/local/bin` ensures it takes precedence over `/usr/bin`. --- ## Archive Structure The tools expect the following structure: ``` yt-dlp/ ├── 1_New_Downloads/ │ ├── repair_tools/ │ └── ├── / │ └── / │ ├──