38 releases (9 breaking)
Uses new Rust 2024
| new 0.10.1 | Apr 17, 2026 |
|---|---|
| 0.9.2 | Apr 17, 2026 |
| 0.7.1 | Mar 25, 2026 |
| 0.6.3 | Nov 25, 2025 |
| 0.1.2 | Nov 28, 2024 |
#294 in HTTP client
105KB
3.5K
SLoC
vn
cargo add vn
Usage
Create a new VNDB client:
use vn::Vndb;
use std::time::Duration;
let vndb = Vndb::builder()
.max_concurrent_requests(5)
.timeout(Duration::from_secs(10))
.token("abcd-efghi-jklmn-opqrs-tuvx-z1234-5678")
.user_agent("some-user-agent/v5.0")
.build();
Find a visual novel by its id:
use vn::{Vndb, VisualNovelField, VisualNovelId};
let vndb = Vndb::new();
let id = VisualNovelId::new("v1194").unwrap();
let results = vndb
.find_visual_novel(&id)
.fields(VisualNovelField::Title)
.send()
.await
.unwrap()
.results;
let visual_novel = results.first().unwrap();
let title = visual_novel.title.as_deref().unwrap();
assert_eq!(title, "Yosuga no Sora");
Search characters by their name:
use vn::{Vndb, CharacterField, SortCharacterBy};
let vndb = Vndb::new();
let results = vndb
.search_character("Minazuki Shigure")
.fields([CharacterField::Name, CharacterField::Original])
.results(10)
.sort(SortCharacterBy::Name)
.send()
.await
.unwrap()
.results;
let character = results.first().unwrap();
let name = character.name.as_deref().unwrap();
let original = character.original.as_deref().unwrap();
assert_eq!(name, "Minazuki Shigure");
assert_eq!(original, "水無月 時雨");
Dependencies
~10–27MB
~451K SLoC