44 个版本 (10 个重大更新)

0.12.0 2024年7月13日
0.11.3 2024年5月22日
0.9.0 2024年3月24日
0.8.1 2023年12月19日
0.1.0 2022年9月27日

#176 in 网页编程

Download history 351/week @ 2024-04-24 356/week @ 2024-05-01 105/week @ 2024-05-08 110/week @ 2024-05-15 470/week @ 2024-05-22 45/week @ 2024-05-29 36/week @ 2024-06-05 205/week @ 2024-06-12 135/week @ 2024-06-19 56/week @ 2024-06-26 173/week @ 2024-07-03 157/week @ 2024-07-10 25/week @ 2024-07-17 27/week @ 2024-07-24 1/week @ 2024-07-31

每月下载量 63

MIT/Apache

275KB
6K 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.12"
tokio = { version = "1", features = ["full"] }

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

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

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Log in to Crunchyroll with your email and password.
    // Support for username login was dropped by Crunchyroll on December 6th, 2023
    let crunchyroll = Crunchyroll::builder()
        .login_with_credentials("<email>", "<password>")
        .await?;

    let url = crunchyroll_rs::parse_url("https://www.crunchyroll.com/watch/GRDQPM1ZY/alone-and-lonesome").expect("url is not valid");
    if let UrlType::EpisodeOrMovie(media_id) = url {
        if let MediaCollection::Episode(episode) = crunchyroll.media_collection_from_id(media_id).await? {
            println!(
                "Url is episode {} ({}) of {} season {}",
                episode.episode_number,
                episode.title,
                episode.series_title,
                episode.season_number
            )
        }
    } else {
        panic!("Url is not a episode")
    }

    Ok(())
}

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

API 覆盖率

Crunchyroll 定期更新其 api,但不提供任何文档。由于我们并未持续监控 api,因此不能立即说明何时添加了新的端点或现有和已实现端点发生了变化(至少在 __test-strict 功能中部分覆盖)。如果您发现未实现或已更改的端点,请随时打开一个新的 问题 并告诉我们,或者分叉库并自行实现它。

Cloudflare

Crunchyroll 使用 Cloudflare 机器人保护来检测请求是否由人类发起。显然,这个crate会自动发起请求,因此 Cloudflare 有时会阻止请求。该crate使用 error::CrunchyrollError::Block 枚举字段捕获这些错误。阻止行为取决于多种因素,如您的位置。如果发生此类阻止,您可以尝试创建一个自定义的 reqwest::Client,该客户端具有绕过此检查所需配置,如其他用户代理或 tls 后端(请注意,reqwest 目前除了 rustls 之外,仅支持 native-tls 作为 tls 后端,已确认在 Linux 上与 openssl 兼容,在 Windows 上阻止更为激进)。配置可能因相关因素而异,因此没有100%正确的做法。

许可证

该项目根据您的选择,采用以下任一许可证:

依赖项

~22–37MB
~697K SLoC