nekosbest

Rust API wrapper for nekos.best.

Usage

toml [dependencies] nekosbest = "0.14.0"

Example

```rust ,no_run

[tokio::main]

async fn main() -> Result<(), Box> { let imgurl: String = nekosbest::get(nekosbest::Category::Neko).await?.url; println!("{}", imgurl); Ok(()) } ```

Or with an amount(amount is capped at 20 by the server):

```rust ,no_run

[tokio::main]

async fn main() -> Result<(), Box> { let images = nekosbest::get_amount(nekosbest::Category::Neko, 20).await?.0; println!("{:?}", images); Ok(()) } ```

Or if you already have a reqwest::Client that you want to use, use get_with_client and get_with_client_amount respectively.

There is another property called details:

For Category::Neko, Category::Husbando, Category::Kitsune, Category::Waifu (image endpoints):

```rust ,no_run

[tokio::main]

async fn main() -> Result<(), Box> { let details = nekosbest::get(nekosbest::Category::Neko) .await? .details .tryintoimage() .unwrap(); println!("Source: {}", details.sourceurl); println!("Artist: {}", details.artistname); println!("Artist link: {}", details.artist_href); Ok(()) } ```

For everything else(gif endpoints):

```rust ,no_run

[tokio::main]

async fn main() -> Result<(), Box> { let details = nekosbest::get(nekosbest::Category::Pat) .await? .details .tryintogif() .unwrap(); println!("Anime name: {}", details.anime_name); Ok(()) } ```

Or with the strong-types feature, bringing strong types guarantees for details, so no unwrap / expect for the details type:

Warning: Experimental, may change at any point in the future.

Remember to add the st_ in front of get, get_amount, get_with_client and get_with_client_amount.

Nekos:

```rust ,no_run

[tokio::main]

async fn main() -> Result<(), Box> { let resp = nekosbest::stget::().await?; let details = resp.details(); println!("Artist: {}", details.artistname); println!("Artist link: {}", details.artisthref); println!("Source: {}", details.sourceurl); Ok(()) } ```

Gif:

```rust ,no_run

[tokio::main]

async fn main() -> Result<(), Box> { let details = nekosbest::stget::().await?.details; println!("Anime name: {}", details.animename); Ok(()) } ```

By using the local feature, you can completely skip requests to the API.

```rust ,no_run

[tokio::main]

async fn main() -> Result<(), Box> { let imgurl = nekosbest::local::Neko.get(); // requires the "local" feature println!("{}", imgurl); Ok(()) } ```

Or if you have your own random number:

rust ,no_run fn main() { let your_random = unimplemented!(); let img_url = nekosbest::local::Neko.get_random(your_random); println!("{}", img_url); Ok(()) }

Take a look at the build script and src/local.rs if you want to find out how it works.

Blocking client

All functions become blocking when used with the "blocking" feature.