# ![RustyPipe](https://codeberg.org/ThetaDev/rustypipe/raw/branch/main/notes/logo.svg) CLI [![Current crates.io version](https://img.shields.io/crates/v/rustypipe-cli.svg)](https://crates.io/crates/rustypipe-cli) [![License](https://img.shields.io/badge/License-GPL--3-blue.svg?style=flat)](http://opensource.org/licenses/GPL-3.0) [![CI status](https://codeberg.org/ThetaDev/rustypipe/actions/workflows/ci.yaml/badge.svg?style=flat&label=CI)](https://codeberg.org/ThetaDev/rustypipe/actions/?workflow=ci.yaml) The RustyPipe CLI is a powerful YouTube client for the command line. It allows you to access most of the features of the RustyPipe crate: getting data from YouTube and downloading videos. The following subcommands are included: ## `get`: Fetch information You can call the get command with any YouTube entity ID or URL and RustyPipe will fetch the associated metadata. It can fetch channels, playlists, albums and videos. **Usage:** `rustypipe get UC2TXq_t06Hjdr2g_KdKpHQg` - `-l`, `--limit` Limit the number of list items to fetch - ``-t, --tab` Channel tab (options: **videos**, shorts, live, playlists, info) - `-m, --music` Use the YouTube Music API - `--rss`Fetch the RSS feed of a channel - `--comments` Get comments (options: top, latest) - `--lyrics` Get the lyrics for YTM tracks - `--player` Get the player data instead of the video details when fetching videos - `-c, --client-type` YT clients used to fetch player data (options: desktop, tv, tv-embed, android, ios; if multiple clients are specified, they are attempted in order) ## `search`: Search YouTube With the search command you can search the entire YouTube platform or individual channels. YouTube Music search is also supported. Note that search filters are only supported when searching YouTube. They have no effect when searching YTM or individual channels. **Usage:** `rustypipe search "query"` ### Options - `-l`, `--limit` Limit the number of list items to fetch - `--item-type` Filter results by item type - `--length` Filter results by video length - `--date` Filter results by upload date (options: hour, day, week, month, year) - `--order` Sort search results (options: rating, date, views) - `--channel` Channel ID for searching channel videos - `-m, --music` Search YouTube Music in the given category (options: all, tracks, videos, artists, albums, playlists-ytm, playlists-community) ## `dl`: Download videos The downloader can download individual videos, playlists, albums and channels. Multiple videos can be downloaded in parallel for improved performance. **Usage:** `rustypipe dl eRsGyueVLvQ` ### Options - `-o`, `--output` Download to the given directory - `--output-file` Download to the given file - `--template` Download to a path determined by a template - `-r`, `--resolution` Video resolution (e.g. 720, 1080). Set to 0 for audio-only - `-a`, `--audio` Download only the audio track and write track metadata + album cover - `-p`, `--parallel` Number of videos downloaded in parallel (default: 8) - `-m, --music` Use YouTube Music for downloading playlists - `-l`, `--limit` Limit the number of videos to download (default: 1000) - `-c`, `--client-type` YT clients used to fetch player data (options: desktop, tv, tv-embed, android, ios; if multiple clients are specified, they are attempted in order) - `--pot` token to circumvent bot detection ## `vdata`: Get visitor data You can use the vdata command to get a new visitor data cookie. This feature may come in handy for testing and reproducing A/B tests. ## Global options - **Proxy:** RustyPipe respects the environment variables `HTTP_PROXY`, `HTTPS_PROXY` and `ALL_PROXY` - **Logging:** You can change the log level with the `RUST_LOG` environment variable, it is set to `info` by default - **Visitor data:** A custom visitor data cookie can be used with the `--vdata` flag - `--report` ### Output format By default, the CLI outputs YouTube data in a human-readable text format. If you want to store the data or process it with a script, you should choose a machine readable output format. You can choose both JSON and YAML with the `-f, --format` flag.