19 releases

new 0.2.0 Mar 1, 2025
0.1.0 Feb 24, 2025
0.0.17 Feb 17, 2025
0.0.9 Jan 31, 2025

#353 in Web programming

Download history 437/week @ 2025-01-20 292/week @ 2025-01-27 347/week @ 2025-02-03 352/week @ 2025-02-10 126/week @ 2025-02-17

1,180 downloads per month

MIT/Apache

235KB
6.5K SLoC

Rust 4K SLoC // 0.0% comments GraphQL 2.5K SLoC

libannict

Annict の Web API のクライアントライブラリ

本ライブラリの利用に必要な Rust の最低バージョン (MSRV): 1.75.0

コントリビューションを歓迎しております!プルリクエストを送る場合、先に issue を立てるようにお願いいたします 🙏

使用例

use libannict::Annict;

// クライアントを作成
let client = Annict::new("access_token");

作品を検索する

// 作品を検索
let works = client
    .works()
    .filter_title("ゼロの使い魔".to_owned())
    .search(10)
    .await?;

// 作品の情報を利用
for work in works {
    println!("{}", work.title);
}

エピソードを検索する

// エピソードを検索
let episodes = client
    .episodes()
    .filter_work_id(6077)
    .search(20)
    .await?;

// エピソードの情報を利用
for episode in episodes {
    println!("{:?}", episode.title);
}

自分が視聴状況をつけた作品を検索する

use libannict::{work::SortBy, Order};

// 作品を検索
let works = client
    .me()
    .works()
    .sort(SortBy::Season, Order::Desc)
    .search(10)
    .await?;

// 作品の情報を利用
for work in works {
    println!("{}", work.title);
}

特定のユーザーの活動を検索する

use libannict::{Activity, ChangeStatus, Status};

// 活動を検索
let activities = client
    .user("naskya".to_owned())
    .activities()
    .search(10)
    .await?;

// 活動の情報を利用
for activity in activities {
    if let Activity::ChangeStatus(activity) = activity {
        let ChangeStatus { status, work, .. } = activity;
        match status {
            Status::Watched => println!("{}」を観ました", work.title),
            _ => (),
        }
    }
}

作品の視聴状況を変更する

use libannict::Status;

// ID が 860 の作品の視聴状況を「見た」に変更
let _ = client
    .write_access()
    .change_status(860, Status::Watched)
    .await?;

GraphQL API によって返される ID を直接利用する

use libannict::{AnnictObject, InternalId, Work};

// アニメ「AIR」の GraphQL API における ID
let id = InternalId("V29yay0yNDE=".to_owned());

// 作品の情報を取得
let work = Work::from_internal_id(&client, id).await?;
assert_eq!(work.title, "AIR");

ライセンス

graphql/schema.graphql を除く、本リポジトリの内容には

の 2 つのライセンスが適用されます。あなたの選択でどちらのライセンスの下でも利用できます。

詳しくは COPYING を参照してください。

プロジェクトへの貢献

明示的に宣言されない限り、本プロジェクトへのあなたの貢献は上記の通りにデュアルライセンスされます。

Dependencies

~6–19MB
~243K SLoC