crunchyroll

Crates.iocrunchyroll
lib.rscrunchyroll
version0.1.0
sourcesrc
created_at2022-09-27 22:03:45.400507
updated_at2022-09-27 22:03:45.400507
descriptionPure Rust implementation of the crunchyroll beta api.
homepage
repositoryhttps://github.com/crunchy-labs/crunchyroll-rs
max_upload_size
id675236
size271,107
(bytedream)

documentation

README

crunchyroll-rs

A Rust library for the undocumented Crunchyroll api.

crates.io Docs CI License Discord

We are in no way affiliated with, maintained, authorized, sponsored, or officially associated with Crunchyroll LLC or any of its subsidiaries or affiliates. The official Crunchyroll website can be found at https://crunchyroll.com/.

Documentation

The documentation is available at docs.rs.

Example

You need this crate and tokio as dependency in your Cargo.toml in order to start working:

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

The following code prints the data of the episode behind the given 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(())
}

More examples can be found in the examples/ directory.

Api Coverage

Crunchyroll regularly updates their beta api but does not provide any documentation for it. Because we do not monitor the api constantly, so we cannot immediately say when a new endpoint is added or something has changed on already existing and implemented endpoints (which is semi-covered by the __test-strict feature, at least). If you find an endpoint which is not implemented or has changes feel free to open a new issue and tell us, or fork the library and implement it yourself.

License

This project is licensed under either of the following licenses, at your option:

Commit count: 518

cargo fmt