10 个不稳定版本 (3 个破坏性更新)
0.4.1 | 2024 年 8 月 2 日 |
---|---|
0.4.0 | 2024 年 7 月 10 日 |
0.3.2 | 2024 年 4 月 24 日 |
0.3.0 | 2024 年 3 月 18 日 |
0.1.1 | 2023 年 9 月 28 日 |
#14 in #graphql-schema
每月 157 次下载
63KB
2K SLoC
Shikimori Rust
Shikimori Rust - 作为 Shikimori API 包装器的有效 Rust 库 🦾
📖 文档 |
---|
安装
从 crates.io 安装 shikimori。将以下行添加到您的 Cargo.toml
文件的依赖项部分
shikimori = "0.4"
或者您可以使用 cargo 添加
cargo add shikimori
用法
您还应使用 querygen 来简化您的操作,它可在该链接找到。在 URL https://shikimori.one/api/graphql
获取模式
use chrono::{DateTime, Utc};
use shikimori::client::ClientBuilder;
use shikimori::cynic::{self, QueryBuilder};
use shikimori::graphql::anime::AnimeKind;
use shikimori::graphql::scalars::{AnimeStatusString, PositiveInt};
use shikimori::graphql::schema;
use shikimori::graphql::types::EntityOrder;
#[derive(cynic::QueryVariables, Debug)]
pub struct AnimesQueryVariables {
pub page: PositiveInt,
pub status: AnimeStatusString,
pub order: EntityOrder,
}
#[derive(cynic::QueryFragment, Debug)]
#[cynic(graphql_type = "Query", variables = "AnimesQueryVariables")]
pub struct AnimesQuery {
#[arguments(censored: false, page: $page, status: $status, order: $order)]
pub animes: Vec<Anime>,
}
#[derive(cynic::QueryFragment, Debug)]
pub struct Anime {
pub id: cynic::Id,
pub franchise: Option<String>,
pub episodes: i32,
pub kind: Option<AnimeKind>,
pub next_episode_at: Option<DateTime<Utc>>,
pub url: String,
}
#[tokio::main]
async fn main() {
let client = ClientBuilder::new().build();
let response = client
.query(AnimesQuery::build(AnimesQueryVariables {
page: PositiveInt::new(1u32),
status: AnimeStatusString::new("ongoing"),
order: EntityOrder::Popularity,
}))
.await;
dbg!(&response);
}
// Ok(
// GraphQlResponse {
// data: Some(
// AnimesQuery {
// animes: [
// Anime {
// id: Id(
// "21",
// ),
// franchise: Some(
// "one_piece",
// ),
// episodes: 0,
// kind: Some(
// Tv,
// ),
// next_episode_at: Some(
// 2023-09-10T00:30:00Z,
// ),
// url: "https://shikimori.one/animes/21-one-piece",
// },
// Anime {
// id: Id(
// "51009",
// ),
// franchise: Some(
// "jujutsu_kaisen",
// ),
// episodes: 23,
// kind: Some(
// Tv,
// ),
// next_episode_at: Some(
// 2023-09-07T14:56:00Z,
// ),
// url: "https://shikimori.one/animes/51009-jujutsu-kaisen-2nd-season",
// },
// ],
// },
// ),
// errors: None,
// },
// )
在启用 register-graphql-schema
功能的 build.rs
文件中
fn main() {
shikimori::graphql::register_schema();
}
依赖项
~12–24MB
~344K SLoC