# RustNAO
A Rust implementation of a wrapper for the SauceNAO API.
[](https://travis-ci.com/ClementTsang/RustNAO) [](https://crates.io/crates/rustnao)
## Installation
Add the following to your ``Cargo.toml`` file:
```
[dependencies]
rustnao = "0.2"
```
Then, add the following to your ``main.rs`` file:
```
extern crate rustnao;
```
## Examples
Here's a simple example:
```rust
extern crate rustnao;
use rustnao::{Handler, Sauce};
fn main() {
let api_key = "your_api_key";
let file = "https://i.imgur.com/W42kkKS.jpg";
// Specifying our key, testmode set to 0, only want to see Pixiv and Sankaku using a mask, nothing excluded, no one specific source, and 15 results at most
let handle = Handler::new(api_key, Some(0), Some([Handler::PIXIV, Handler::SANKAKU_CHANNEL].to_vec()), None, None, Some(15));
// Set the minimum similiarity to 45.
handle.set_min_similarity(45);
// Returns a vector of Sauce objects if successful
let result : Vec<Sauce> = handle.get_sauce(file, None, None).unwrap();
// Or perhaps you prefer a JSON output
let result_json : String = handle.get_sauce_as_pretty_json(file, None, None).unwrap();
// Or maybe you wish to only get 5 results with a min similarity of 50.0
let result_json_filtered : String = handle.get_sauce_as_pretty_json(file, Some(5), Some(50 as f64)).unwrap();
}
```
See more examples [here](./examples/). Or to see an actual project where it's used, you can look at [this Discord bot](https://github.com/ClementTsang/elementaru-bot) that uses it.
## Documentation
Further documentation can be found [here](https://docs.rs/rustnao/). You can also see SauceNAO's API documentation [here](https://saucenao.com/user.php?page=search-api).
## Development
Interested in helping? Found a problem/bug? Let me know!
## Thanks
I was inspired by [Sagiri](https://github.com/ClarityCafe/Sagiri), so a huge shoutout to that project. Furthermore, thanks to [SauceNAO](https://saucenao.com/) which provides this amazing functionality for free.