#动漫 #下载器 #API 绑定

已撤回 crunchyroll

Crunchyroll 测试版 API 的纯 Rust 实现

0.1.0 2022 年 9 月 27 日

#65 in #动漫

MIT/Apache

195KB
4K SLoC

crunchyroll-rs

这是一个用于未记录的 Crunchyroll API 的 Rust 库。

crates.io Docs CI License Discord

我们与 Crunchyroll LLC 或其子公司或关联公司没有任何关联、维护、授权、赞助或官方联系。官方 Crunchyroll 网站:[https://crunchyroll.com/](https://crunchyroll.com/)

文档

文档可在 docs.rs 找到。

示例

为了开始工作,您需要在 Cargo.toml 中添加此包和 tokio 作为依赖项。

[dependencies]
crunchyroll-rs = "0.1"
tokio = { version = "1.21", features = ["full"] }

以下代码打印给定 URL 后面的剧集数据

use crunchyroll::{Crunchyroll, MediaCollection};
use crunchyroll::parse::UrlType;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // log in to crunchyroll with your username and password
    let crunchyroll = Crunchyroll::builder()
        .login_with_credentials("<username>".into(), "<password>".into())
        .await?;

    let url = Crunchyroll::parse_url("https://beta.crunchyroll.com/watch/GRDQPM1ZY/alone-and-lonesome")?;
    if let UrlType::BetaEpisodeOrMovie(media_id) = url {
        match crunchyroll.media_collection_from_id(media_id).await? {
            MediaCollection::Episode(episode) => {
                println!(
                    "Url is episode {} ({}) of season {} from {}",
                    episode.metadata.episode_number,
                    episode.title, 
                    episode.metadata.season_number,
                    episode.metadata.series_title
                )
            }
            _ => ()
        }
    } else {
        panic!("Url is not a crunchyroll beta episode")
    }

    Ok(())
}

更多示例可以在 examples/ 目录中找到。

API 覆盖率

Crunchyroll 定期更新其测试版 API,但不提供任何文档。因为我们不持续监控 API,所以无法立即说明何时添加了新端点或已实施和实现的端点发生了变化(至少部分由 __test-strict 功能覆盖)。如果您发现未实现的端点或已更改的端点,请随时创建一个新的 问题 并告诉我们,或者分叉库并自行实现。

许可证

此项目采用以下任一许可证,由您选择

依赖项

~8–20MB
~309K SLoC