#api-wrapper #youtube #wrapper #api #api-client #async #innertube

youtubei-rs

异步实现 invidious innertube(又称youtubei API包装器)

8 个版本 (5 个稳定版)

1.3.5 2022年7月5日
1.3.4 2022年6月13日
0.2.2 2022年6月5日
0.1.2 2022年5月31日

#1839 in 网页编程

AGPL-3.0-only

155KB
3.5K SLoC

youtubei-rs

异步实现 invidious innertube(又称youtubei API包装器)。
使用 tokio, reqwest, serde 和 serde_json。

版本升级 0.2.3 到 1.2.3 的重大更改

  • 旧查询现在以 _legacy 前缀,如果依赖于它们,只需在程序中将它们重命名即可,它们仍然按相同方式工作

依赖项

  • serde_json
  • serde: features = ["derive"]
  • reqwest: features = ["json","gzip"]
  • tokio: features = ["full"]

路线图

  • 实现代理支持
  • 移除 panic
  • 添加更多端点

已实现的端点

  • 下一页
  • 浏览
  • 搜索
  • resolve_url
  • player

支持的查询

  • next_video_id // 获取给定 videoId 的下一个(相关和评论)结果
  • next_continuation // 使用给定 ctoken 获取更多下一个(相关和评论)结果
  • browse_id // 获取给定 browseId 的浏览(频道或播放列表)结果
  • browse_continuation // 使用给定 ctoken 获取更多浏览(频道或播放列表)结果
  • resolve, // 解析给定 url
  • player // 获取给定 videoId 的播放器数据

示例

use youtubei_rs::{query::player, utils::default_client_config, types::query_results::PlayerResult};
#[tokio::main]
async fn main() {
    // create default client_config with WEB client
    let client_config = &default_client_config();
    // get player for video with id gC6dQrScmHE
    let player: PlayerResult = player(String::from("gC6dQrScmHE"),String::from(""),&client_config).await.unwrap();
    println!("{}",player.video_details.title); // video title
}

带有日志记录

为了日志记录,使用 tracing,因此可以安装 tracing_subscribe 以便更容易使用 tracing。该库的目标是 youtubei_rs,具有 debug、trace 和 error 级别。

use youtubei_rs::{query::player, utils::default_client_config};
#[tokio::main]
async fn main() {
    std::env::set_var("RUST_LOG", "youtubei_rs=debug");
    tracing_subscriber::fmt::init();
    // create default client_config with WEB client
    let client_config = &default_client_config();
    // get player for video with id gC6dQrScmHE
    let player: PlayerResult = player(String::from("gC6dQrScmHE"),String::from(""),&client_config).await.unwrap();
    println!("{}",player.video_details.title); // video title
}

支持的查询(旧版)

  • get_video: 获取除字幕和故事板之外的所有视频信息
  • get_channel_info: 获取所有频道信息和关于标签的信息
  • get_channel_tab: 获取特定标签,如视频以获取频道视频
  • search: 搜索 YouTube
  • load_search: 使用 ctoken 继续搜索
  • get_comments: 加载视频的初始评论或更多评论
  • load_related_videos: 加载更多相关视频
  • get_playlist: 加载播放列表

有关更深入的信息,请参阅 query.rstests.rs

依赖项

~6–21MB
~287K SLoC