UNPKG

es6-booru

Version:

Search a bunch of different boorus using package magic!

125 lines (86 loc) 3.26 kB
# booru >*A node package for searching various boorus (with promises!)* ## Features - Able to search 17 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 ```bash npm i --save booru ``` Or if you use yarn ```bash yarn add booru ``` --- ## Usage ```js const booru = require('booru') 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) } }) ``` --- ## 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 --- ## Contributors [BobbyWibowo](https://github.com/BobbyWibowo/booru) > Change from request-promise-native to snek-fetch --- ## FAQ ### 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://giraffeduck.com/aaa.png',//source of the image, if supplied rating: 's' //rating of the image } ``` `s`: 'Safe' `q`: 'Questionable' `e`: 'Explicit' `u`: 'Unrated' Derpibooru has `Safe, Suggestive, Questionable, Explicit`, although `Suggestive` will be shown as `q` in `image.common` ### Can I contribute? Sure! Just fork this repo, push your changes, and then make a PR. I'll accept PR based on what they do and code style (Not super strict about it, but it's best if it roughly follows the rest of the code) ### Why? Why not? ### This is terrible code :) ### License? [It's GPLv3](http://choosealicense.com/licenses/gpl-3.0/)