Skip to content

Repository files navigation

booru.dl

A booru image scraper and browser with an Electron desktop app. Browse and download images from multiple booru sites with a clean dark UI.

Features

Browser

  • Paginated image/video grid (12 / 24 / 48 / 100 per page)
  • Lightbox with keyboard navigation (← →)
  • Video preview on hover
  • Tag autocomplete (JSON + XML, works on all supported API types)
  • Blacklist autocomplete

Downloader

  • Multi-job download queue
  • Filename templates: {id}_{artist}_{characters} etc.
  • Available tokens: {id} {artist} {artists} {character} {characters} {series} {all_series} {rating} {width} {height} {md5} {tags}
  • Duplicate detection (MD5 hash)
  • Sort downloads into subfolders by rating (safe / questionable / explicit)
  • Download videos (webm/mp4) optionally
  • Skip existing files / resume downloads
  • Configurable delay and retry count with exponential backoff
  • Pause / resume / stop

Custom sites

  • Auto-detect API type
  • Supports Moebooru, Danbooru, Gelbooru (old + new style), Shimmie2, Szurubooru
  • Downloads saved to booru_downloads/{domain}/{tags}/

Supported sites

Site API Auth
yande.re Moebooru optional
Danbooru Danbooru optional (free: 2 tags, Gold: 6 tags)
Konachan Moebooru optional
Gelbooru Gelbooru required
rule34.xxx(custom) Gelbooru required (api.rule34.xxx)
Any custom site auto-detect optional

Auth

  • Danbooru — login + API key from account settings
  • Gelbooru / rule34.xxx — user_id + API key from account → options → API
  • Szurubooru — login + API token

Installation

Desktop app (recommended)

Download the latest release from GitLab Releases.

  • booru.dl Setup x.x.x.exe — NSIS installer
  • booru.dl x.x.x.exe — portable, no install needed

No Python required — the backend is bundled as a compiled executable.

From source

Requirements: Node.js 18+, Python 3.8+

git clone https://gitlab.com/sp4r0ww/booru.dl
cd booru.dl
pip install flask requests pyinstaller
npm install

Run in development:

npm start

Build:

npm run build:all

Output goes to dist/.

File structure

├── main.js              Electron main process
├── preload.js           IPC bridge
├── index.html           UI markup
├── app.js               Frontend JS
├── style.css            Styles
├── package.json         Electron + build config
├── backend/
│   └── server.py        Python backend (Flask)
├── test_server.py       Unit tests (36 tests)
└── icon.ico             App icon

Tests

python test_server.py

License

Apache License 2.0

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages