/booru

Python bindings for booru imageboards

Primary LanguagePythonMIT LicenseMIT

Booru

Python bindings for Booru imageboards


Python bindings for the imageboards. It is takes a much more functionalities to interacts with ease, and featureful. Making your interaction significantly tidier, less of pain, and hopefully will be reusable.

ContributingDocumentationReport Issues

Features

  • Plenty of imageboards
  • Search random & gacha returns
  • Tags block, resolved safety tags concerns
  • Tags finder, tags & query completion
  • Parses and returns the image only
  • Documented and tested
  • Easy to use, check your intelisense

Usage

Async context, and it's recommended use asyncio / https://sinkaroid.github.io/booru

Prerequisites

NOTE: Python 3.7 or above

Installation

pip install booru

This library vs. the Competition

Features availability for this library

Booru Status Random Tags block Tags finder Get images Gacha
Gelbooru status Yes Yes Yes Yes Yes
Danbooru status Yes Yes Yes Yes Yes
Rule34 status Yes Yes Yes Yes Yes
Realbooru status Yes Yes Yes Yes Yes
Tbib status Yes Yes Yes Yes Yes
Xbooru status Yes Yes Yes Yes Yes
Safebooru status Yes Yes Yes Yes Yes
Yandere status Yes Yes Yes Yes Yes
Lolibooru status Yes Yes Yes Yes Yes
Konachan status Yes Yes Yes Yes Yes
Konachan.net status Yes Yes Yes Yes Yes
Hypnohub status Yes Yes Yes Yes Yes
E621 status Yes No No Yes Yes
E926 status Yes No No Yes Yes
Derpibooru status Yes No No Yes Yes
Furbooru status Yes No No Yes Yes
ATFbooru status Yes Yes Yes Yes Yes
Behoimi status Yes No No Yes Yes
Paheal status Yes No No Yes Yes

Example

search()

Takes parameter (query: str, block: str = "", limit: int = 100, page: int = 1, random: bool = True, gacha: bool = False)

import asyncio
import booru

async def main():
    dan = booru.Danbooru()
    res = await dan.search(query="cat_girl", block="futanari")
    print(res) ## this is <class 'str'>
    print(booru.resolve(res)) ## this is <class 'list'>

asyncio.run(main())
  • You will never gets content which contains futa tags.

You can also import specific booru client.

from booru import Rule34
some_booru = Rule34()

## do with r34

search_image()

Takes parameter (query: str, block: str = "", limit: int = 100, page: int = 1)

import asyncio
from booru import Rule34

async def main():
    r34 = Rule34()
    img = await r34.search_image(query="cat_girl", block="futanari")
    print(img)

asyncio.run(main())
  • This will parses image url only, instead object

find_tags()

You want to wildcard or query completion like the browser do?


What browser looks like

This library also

import asyncio
from booru import Danbooru, resolve

async def main():
    dan = Danbooru()
    find_tags = await dan.find_tags("jeanne") ## arbitrary tags
    wildcard = resolve(find_tags)
    print(wildcard)

asyncio.run(main())
  • Get the wildcard[0] for the best match.

booru.resolve()

You will need this for every object, this library designed to be neat and clean returns, although it must be reparsed to the string first, that's why booru.resolve() exist.

Documentation

The documentation can be found https://sinkaroid.github.io/booru

Legal

This tool can be freely copied, modified, altered, distributed without any attribution whatsoever. However, if you feel like this tool deserves an attribution, mention it. It won't hurt anybody

Licence: WTF.