Crates.io | invidious |
lib.rs | invidious |
version | 0.7.6 |
source | src |
created_at | 2022-04-23 10:48:59.538967 |
updated_at | 2024-09-14 12:36:58.377823 |
description | Get information about videos from YouTube with this simple Invidious API wrapper. Does not use the YouTube API (No tokens required) |
homepage | |
repository | https://github.com/Siriusmart/invidious-rs |
max_upload_size | |
id | 572605 |
size | 105,882 |
Rust bindings for the Invidious API.
Get started by creating a client with ClientSync::default()
and use the functions from there.
use invidious::*;
fn main() {
let client = ClientSync::default();
let video = client.video("fBj3nEdCjkY", None).unwrap();
let seach_results = client.search(Some("q=testing")).unwrap();
}
Enable feature reqwest_async
.
invidious = { version = "0.6", no-default-features = true, features = ["reqwest_async"]}
#[tokio::main]
async fn main() {
let client = ClientAsync::default();
let vidio = client.video("fBj3nEdCjkY", None).await.unwrap();
let seach_results = client.search(Some("q=testing")).await.unwrap();
}
Read more about ClientSync
and ClientAsync
to see all avaliable functions.
Control how the client is making the web requests.
For example, to use isahc
instead of reqwest
for sending requests in ClientAsync
, first
enable the isahc_async
feature and optionally disable the reqwest_async
feature (if
enabled).
invidious = { version = "0.7", no-default-features = true, features = ["isahc_async"]}
let video = ClientAsync::default()
.method(MethodAsync::Isahc)
.video("fBj3nEdCjkY", None).await.unwrap();
If none of the fetch methods matches your needs, consider implmenting your own client struct. (Sync and async)
This crate utilises features for specifying which crates to use for fetching the http(s) responses. Only crates that are needed are included. Different features result in various compile times and performances. The compile times of each feature can be found in MethodSync
and MethodAsync
.
All avaliable features are listed below.
Feature | Crate used |
---|---|
httpreq_sync (enabled by default) |
http_req |
ureq_sync |
ureq |
minreq_sync |
minreq with https feature |
minreq_http_sync |
minreq |
reqwest_sync |
reqwest with blocking feature |
reqwest_async |
reqwest |
isahc_sync |
isahc |
isahc_async |
isahc |
Most functions look something like:
client.function_name(id: &str, params: Option<&str>) // when id is needed.
client.function_name(params: Option<&str>) // when id is not needed, for example search.
Params allows user to include URL params as specified in the Invidious API docs.
The beginning question mark ?
is omitted.
Invidious is an alternative frontend for YouTube, and also offering an API.
This crate includes structs for each of the API endpoints, and allowing users to include any extra parameters they want. Then uses the serde crate to serialize and deserialize json responses from the Invidious API.
On a related note, you may use vidiup.siri.sh to look for instances with specific features enabled.
Contributions are welcome! Make a pull request at GitHub if you do.
License: AGPL-3.0