sfwbooru
Version:
Search different sfw boorus!
81 lines (68 loc) • 2.83 kB
Markdown
# booru
### A mode package for searching various boorus (with promises!)
Exact copy from [booru](https://www.npmjs.com/package/booru) just removed the nsfw sites
## Features
- Able to search 5 different boorus (check [sites.json](./sites.json))
- Also alias support so you can be lazy (`sb` for `safebooru.org`)
- Promises because they're magical
- Little utility to convert xml to json (and add a .common prop to each image)
- Choose the amount of images to get
- Random support for all sites, using `order:random` on sites that support it and using a bit of magic on sites that don't
- Some other stuff I probably forgot
## Installation
```
npm i --save sfwbooru
```
## Usage
```js
const booru = require('sfwbooru')
booru.search(site, [tag1, tag2], {limit: 1, random: false})
.then(booru.commonfy)
.then(images => {
//Log the direct link to each image
for (let image of images) {
console.log(image.common.file_url)
}
})
.catch(err => {
if (err.name === 'booruError') {
//It's a custom error thrown by the package
console.log(err.message)
} else {
//This means I messed up. Whoops.
console.log(err)
}
})
```
## Some docs
#### booru.search(site, tags, options)
| Parameter | Type | Optional | Default | Description |
|-----------|:-------------:|:--------:|:-------:|-------------|
| site | string | | *none* | The site to search, supports aliases
| tags | string[] | X | [] | The tags to search with
| options | SearchOptions | X | {} | For amount of images to fetch and if to return a random result or not (Check below table)
#### SearchOptions ({limit: 1, random: false})
| Parameter | Type | Optional | Default | Description |
|-----------|:-------------:|:--------:|:-------:|-------------|
| limit | number | X | 1 | The max amount of images to return
| random | boolean | X | false | If the images returned should be random everytime
## FAQ
who am i kidding nobody asks me questions
#### What the ".common prop" do?
Calling `booru.commonfy` not only transforms all the xml into json, it adds a .common prop to each image
```js
common: {
file_url: 'https://aaaa.com/image.jpg', //The direct link to the image, ready to post
id: '124125', //The image ID, as a string
tags: ['cat', 'cute'], //The tags, split into an Array
score: 5, //The score as a Number
source: 'https://giraffedu.ck/aaaa.png', //source of the image, if supplied
rating: 's' //rating of the image
}
```
#### License?
[It's GPLv3](http://choosealicense.com/licenses/gpl-3.0/)