7 unstable releases (3 breaking)
0.4.1 | Dec 9, 2022 |
---|---|
0.4.0 | Oct 22, 2022 |
0.3.2 | Sep 1, 2022 |
0.3.1 | Jul 30, 2022 |
0.1.0 | Apr 23, 2022 |
#58 in Video
214 downloads per month
Used in youtube-tui
130KB
2.5K
SLoC
invidious
invidious
Rust bindings for the invidious API. Get information about videos, channels, and playlists from YouTube without using the YouTube official API.
Examples
Blocking API
use invidious::reqwest::blocking::Client;
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
let client = Client::new(String::from("https://vid.puffyan.us"));
let search_results = client.search(Some("q=rust programming"))?.items;
let video = client.video("5C_HPTJg5ek", None)?;
Ok(())
}
Async API
use invidious::reqwest::asynchronous::Client;
use std::error::Error;
#[tokio::main]
async fn main() {
let client = Client::new(String::from("https://vid.puffyan.us"));
let channel_videos = client.channel_videos("UCAkuTH35kk3W1EL9vq6dj6A", Some("sort_by=popular&page=2"))
.await
.unwrap();
let playlist = client.playlist("PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI", None)
.await
.unwrap(); // Returns Playlist
}
General Usage
client.function_name(id: &str, args: Option<&str>) -> Result<T, Box<dyn Error>>
id
is the id of the video, channel, or playlist, and is only used when applicable.args
is an optional string of additional arguments to be passed to the API. For example,sort_by=popular&page=2
(Arguments are separated by&
)
How this works
Uses the Invidious api to get information about videos, channels, and playlists. The Invidious API is a REST API, so the invidious crate uses the reqwest crate to make requests to the Invidious API, and then uses the serde_json crate to parse the JSON returned by the Invidious API.
Official documentation of the Invidious API can be found here: https://docs.invidious.io/api
Features
reqwest
: use the reqwest crate to send requests, may increase complie time and sizecurl
: use thecurl
command to send reqwests, butcurl
may not be present in some systemscurl_async
: async support forcurl
, uses external crate which increases compile time and size
All features are enabled by default
License
GNU General Public License v3.0
License: GPL-3.0
Dependencies
~4–13MB
~276K SLoC