Crate libannict

Source
Expand description

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

§使用例

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::{Annict, Status};

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

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

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

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

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

Re-exports§

pub use activity::Activity;
pub use activity::ChangeStatus;
pub use activity::MultipleRecords;
pub use activity::Record;
pub use activity::Review;
pub use client::Annict;
pub use common::Chapter;
pub use common::Media;
pub use common::Order;
pub use common::Rating;
pub use common::Season;
pub use common::Status;
pub use episode::Episode;
pub use error::Error;
pub use error::Result;
pub use organization::Organization;
pub use series::Series;
pub use user::User;
pub use work::Work;

Modules§

activity
client
common
episode
error
me
mutation
organization
series
user
work

Traits§

AnnictObject