#wrapper #api-wrapper #saucenao #saucenao-api

rustnao

A Rust implementation of a wrapper for the SauceNAO API

9 releases

0.3.0-alpha.1 Nov 9, 2019
0.2.1 Jun 30, 2019
0.1.4 Jun 16, 2019

#172 in #api-wrapper

Download history 2/week @ 2024-02-19 18/week @ 2024-02-26 7/week @ 2024-03-04 19/week @ 2024-03-11 3/week @ 2024-03-18 87/week @ 2024-04-01

111 downloads per month
Used in 2 crates

MIT license

310KB
776 lines

RustNAO

A Rust implementation of a wrapper for the SauceNAO API.

Build Status crates.io link Documentation

Installation

Add the following to your Cargo.toml file:

[dependencies]
rustnao = "0.3.0-alpha.1"

Examples

Here's a simple example:

extern crate rustnao;
use rustnao::{HandlerBuilder, 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 = HandlerBuilder::default().api_key(api_key).db_mask([Handler::PIXIV, Handler::SANKAKU_CHANNEL].to_vec()).num_results(15).build();

 // Set the minimum similarity 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. Or to see an actual project where it's used, you can look at this Discord bot that uses it.

Documentation

Further documentation can be found here. You can also see SauceNAO's API documentation here.

Development

Interested in helping? Found a problem/bug? Let me know!

Thanks/Credits

I was inspired by Sagiri, so a huge shoutout to that project. Furthermore, thanks to SauceNAO which provides this amazing functionality for free.

Also, credit to Pixiv user リン ☆ ユウ@1 日目 西れ 44b for this image I used frequently for examples and tests. I couldn't seem to find the image I used for local testing (SauceNAO failed me), if anyone knows let me know so I can credit them.

Dependencies

~3.5–8MB
~183K SLoC