#api-wrapper #youtube #wrapper #api #async-api #http-request #http-response

invidious

使用这个简单的 Invidious API 包装器从 YouTube 获取视频信息。不使用 YouTube API(不需要令牌)

19 个版本

0.7.5 2024 年 7 月 24 日
0.7.4 2023 年 10 月 27 日
0.7.2 2023 年 9 月 27 日
0.6.4 2023 年 7 月 25 日
0.3.1 2022 年 7 月 30 日

#211 in 网页编程

Download history 64/week @ 2024-04-29 85/week @ 2024-05-06 57/week @ 2024-05-13 131/week @ 2024-05-20 228/week @ 2024-05-27 77/week @ 2024-06-03 73/week @ 2024-06-10 111/week @ 2024-06-17 88/week @ 2024-06-24 15/week @ 2024-07-01 47/week @ 2024-07-08 34/week @ 2024-07-15 141/week @ 2024-07-22 115/week @ 2024-07-29 87/week @ 2024-08-05 49/week @ 2024-08-12

每月 394 次下载
3 个 Crates 中使用

AGPL-3.0

71KB
2K SLoC

invidious

Rust 对 Invidious API 的绑定。

快速入门

通过创建一个客户端并使用 ClientSync::default() 来开始,然后使用那里的函数。

阻塞 API

use invidious::*;

fn main() {
    let client = ClientSync::default();
    let video = client.video("fBj3nEdCjkY", None).unwrap();
    let seach_results = client.search(Some("q=testing")).unwrap();
}

异步 API

启用功能 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();
}

了解更多关于 ClientSyncClientAsync 的信息,以查看所有可用函数。

方法

控制客户端如何进行网络请求。

更改方法

例如,要在 ClientAsync 中使用 isahc 而不是 reqwest 发送请求,首先启用 isahc_async 功能,并可选地禁用 reqwest_async 功能(如果已启用)。

invidious = { version = "6.0", no-default-features = true, features = ["isahc_async"]}
let video = ClientAsync::default()
    .method(MethodAsync::Isahc)
    .video("fBj3nEdCjkY", None).await.unwrap();

如果没有任何获取方法符合您的需求,请考虑实现自己的客户端结构体。(同步异步)

功能

此包使用功能来指定用于获取 http(s) 响应的 crate。仅包括所需的 crate。不同的功能会导致不同的编译时间和性能。每个功能的编译时间可以在 MethodSyncMethodAsync 中找到。

以下列出了所有可用功能。

功能 使用的 crate
httpreq_sync (默认启用) http_req
ureq_sync ureq
minreq_sync minreq(支持https功能)
minreq_http_sync minreq
reqwest_sync reqwest(支持阻塞功能)
reqwest_async reqwest
isahc_sync isahc
isahc_async isahc

通用用法

大多数函数看起来像这样

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.

参数

参数允许用户包含URL参数,如Invidious API文档中指定。

开头的问题符号?被省略。

这是如何工作的

Invidious是YouTube的替代前端,同时也提供API。

此crate包括每个API端点的struct,并允许用户包含他们想要的任何额外参数。然后使用serde crate将来自Invidious API的json响应序列化和反序列化。

贡献

欢迎贡献!如果你这样做,请在GitHub上提交pull request。

  • 更新过时的绑定struct。
  • 添加新的获取方法,以提高编译时间或运行时。
  • 改进文档。

许可证:GPL-3.0

依赖项

~0.7–16MB
~219K SLoC