# libannict
[Annict](https://annict.com/) の Web API のクライアントライブラリ(制作中)
本ライブラリの利用に必要な Rust の最低バージョン (MSRV): `1.71.1`
## 使用例
```rust
use libannict::Annict;
// クライアントを作成
let client = Annict::new("access_token")?;
```
### 作品を検索する
```rust
// 作品を検索
let works = client
.works()
.filter_title("ゼロの使い魔".to_owned())
.search(10)
.await?;
// 作品の情報を利用
for work in works {
println!("{}", work.title);
}
```
### エピソードを検索する
```rust
// エピソードを検索
let episodes = client
.episodes()
.filter_work_id(6077)
.search(20)
.await?;
// エピソードの情報を利用
for episode in episodes {
println!("{:?}", episode.title);
}
```
### 自分が視聴状況をつけた作品を検索する
```rust
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);
}
```
### 特定のユーザーの活動を検索する
```rust
use libannict::{Activity, Status};
// 活動を検索
let activities = client
.user("naskya".to_owned())
.activities()
.search(10)
.await?;
// 活動の情報を利用
for activity in activities {
if let Activity::ChangeStatus { status, work, .. } = activity {
match status {
Status::Watched => println!("「{}」を観ました", work.title),
_ => (),
}
}
}
```
### 作品の視聴状況を変更する
```rust
use libannict::Status;
// ID が 860 の作品の視聴状況を「見た」に変更
client.change_status(860, Status::Watched).await?;
```
## ライセンス
[graphql/schema.graphql](./graphql/schema.graphql) を除く、本リポジトリの内容には
- MIT License ([LICENSE-MIT](./LICENSE-MIT) or https://opensource.org/licenses/MIT)
- Apache License, Version 2.0 ([LICENSE-APACHE](./LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
の 2 つのライセンスが適用されます。あなたの選択でどちらのライセンスの下でも利用できます。
詳しくは [COPYING](./COPYING) を参照してください。
### プロジェクトへの貢献
明示的に宣言されない限り、本プロジェクトへのあなたの貢献は上記の通りにデュアルライセンスされます。