| .. | ||
| src | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| README.md | ||
CLI
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.
Installation
You can download a compiled version of RustyPipe here: https://codeberg.org/ThetaDev/rustypipe/releases
Alternatively, you can compile it yourself by installing Rust and
running cargo install rustypipe-cli.
To be able to access streams from web-based clients (Desktop, Mobile) you need to download rustypipe-botguard and place the binary either in the PATH or the current working directory.
For downloading videos you also need to have ffmpeg installed.
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,--limitLimit the number of list items to fetch-t,--tabChannel tab (options: videos, shorts, live, playlists, info)-m, --musicUse the YouTube Music API--rssFetch the RSS feed of a channel--commentsGet comments (options: top, latest)--lyricsGet the lyrics for YTM tracks--playerGet the player data instead of the video details when fetching videos-c,--client-typeYT 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,--limitLimit the number of list items to fetch -
--item-typeFilter results by item type -
--lengthFilter results by video length -
--dateFilter results by upload date (options: hour, day, week, month, year) -
--orderSort search results (options: rating, date, views) -
--channelChannel ID for searching channel videos -
-m,--musicSearch 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,--outputDownload to the given directory -
--output-fileDownload to the given file -
--templateDownload to a path determined by a template -
-r,--resolutionVideo resolution (e.g. 720, 1080). Set to 0 for audio-only -
-a,--audioDownload only the audio track and write track metadata + album cover -
-p,--parallelNumber of videos downloaded in parallel (default: 8) -
-m,--musicUse YouTube Music for downloading playlists -
-l,--limitLimit the number of videos to download (default: 1000) -
-c,--client-typeYT clients used to fetch player data (options: desktop, tv, tv-embed, android, ios; if multiple clients are specified, they are attempted in order)
vdata: Get visitor data
You can use the vdata command to get a new visitor data ID. This feature may come in handy for testing and reproducing A/B tests.
releases Get YouTube Music new releases
Get a list of new albums or music videos on YouTube Music
Usage: rustypipe releases or rustypipe releases --videos
charts: Get YouTube Music charts
Get a list of the most popular tracks and artists for a given country
Usage: rustypipe charts DE
history: Get YouTube playback history
Get a list of recently played videos or tracks
Options
-l,--limitLimit the number of list items to fetch--searchSearch the playback history (unavailable on YouTube Music)-m,--musicGet the YouTube Music playback history
subscriptions: Get subscribed channels
You can use the RustyPipe CLI to get a list of the channels you subscribed to. With the
--format flag you can export then in different formats, including OPML and NewPipe
JSON.
With the --feed option you can output a list of the latest videos from your
subscription feed instead.
Options
-l,--limitLimit the number of list items to fetch-m,--musicGet a list of subscribed YouTube Music artists--feedOutput YouTube Music subscription feed
playlists, albums, tracks: Get your YouTube library
Fetch a list of all the items saved in your YouTube/YouTube Music profile.
Options
-l,--limitLimit the number of list items to fetch-m,--music(only for playlists): Get your YouTube Music playlists
Global options
-
Proxy: RustyPipe respects the environment variables
HTTP_PROXY,HTTPS_PROXYandALL_PROXY -
Logging: Enable debug logging with the
-v(verbose) flag. If you want more fine-grained control, use theRUST_LOGenvironment variable. -
Visitor data: A custom visitor data ID can be used with the
--vdataflag -
Authentication: Use the commands
rustypipe loginandrustypipe login --cookieto log into your Google account using either OAuth or YouTube cookies. With the--authflag you can use authentication for any request. -
--langChange the YouTube content language -
--countryChange the YouTube content country -
--tzUse a specific timezone (e.g. Europe/Berlin, Australia/Sydney)Note: this requires building rustypipe-cli with the
timezonefeature -
--local-tzUse the local timezone instead of UTC -
--reportGenerate a report on every request and store it in arustypipe_reportsfolder in the current directory -
--cache-fileChange the RustyPipe cache file location (Default:~/.local/share/rustypipe/rustypipe_cache.json) -
--report-dirChange the RustyPipe report directory location (Default:~/.local/share/rustypipe/rustypipe_reports) -
--botguard-binUse a rustypipe-botguard binary from the given path for generating PO tokens -
--no-botguardDisable Botguard, only download videos using clients that dont require it -
--pot-cacheEnable caching for session-bound PO tokens
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.