██████╗ ██████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗ ██████╗██╗ ██╗
██╔════╝ ██╔═══██╗██╔═══██╗████╗ ██║██║████╗ ██║██╔════╝ ██╔════╝██║ ██║
██║ ███╗██║ ██║██║ ██║██╔██╗ ██║██║██╔██╗ ██║██║ ███╗██║ ██║ ██║
██║ ██║██║ ██║██║ ██║██║╚██╗██║██║██║╚██╗██║██║ ██║██║ ██║ ██║
╚██████╔╝╚██████╔╝╚██████╔╝██║ ╚████║██║██║ ╚████║╚██████╔╝╚██████╗███████╗██║
╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═════╝╚══════╝╚═╝
v3.1.0 | made by or4acle
For educational purposes only.
A multi-site hentai content downloader CLI built for Termux. Download manga, doujinshi, images, and videos from multiple sites with a single tool.
This project, gooningCLI, was created strictly for educational and learning purposes by its developer. It serves as a practical exercise in Python programming, API integration, and web scraping.
StreliziaSystems and its owner, or4acle, are NOT responsible for any media, data, or material downloaded, accessed, or stored using this software. The tool merely acts as an automated client; what you choose to search for and download is entirely your own responsibility as the end-user.
While we have put genuine effort into implementing Safety Filters (Blocklists) to prevent the fetching of sensitive, illegal, or disturbing content, no system is completely bulletproof. We acknowledge that loopholes and bypasses can be discovered and abused by malicious users. We strongly condemn the download of prohibited materials, but as this is an open-source tool executed locally on your machine, we cannot monitor, control, or be held liable for how it is ultimately used.
By using this software, you agree to take full responsibility for your actions.
| Site | Type | Method | Auth Required |
|---|---|---|---|
| nhentai.net | Manga/Doujinshi | API v2 | No |
| hanime.tv | Videos | Scraping | No |
| hentaihaven.xxx | Videos | yt-dlp | No |
| rule34.xxx | Images | API (posts.json) | Yes (API key) |
| gelbooru.com | Images | API (JSON) | Yes (API key) |
| hitomi.la | Manga/Doujinshi | HTML scraping | No |
| danbooru.donmai.us | Images | API (JSON) | No |
| konachan.com | Images | API (JSON) | No |
| nhentai (tags) | Manga | API v2 (specific tags) | No |
- Multi-site support - 8 sites + tag-specific nhentai queries
- Concurrent downloads - ThreadPoolExecutor for fast parallel image downloading
- Resilient networking - Exponential backoff, retry on failure, rate limiting
- File validation - Checks file size against Content-Length, retries incomplete downloads
- Smart server rotation - Distributes requests across multiple image servers
- Download history - Track everything you've downloaded
- Bookmarks - Save content to download later
- Blacklist - Filter out unwanted tags or specific gallery IDs
- Statistics - View your download stats, top tags, storage usage
- Deduplication - Find and remove duplicate files by hash
- Organize - Sort download folders by site, date, or type
- Clean - Remove empty folders, old downloads, or small files
- Export - Export galleries as JSON metadata, CBZ (comic archive), or ZIP
- Batch mode - Download from a text file with multiple search terms
- Slideshow - View downloaded images in terminal (ASCII art) or open them
- Wallpaper - Set downloaded images as Android wallpaper via Termux API
- Themes - 6 built-in color themes (default, fire, ocean, matrix, mono, pink)
- Proxy support - SOCKS5/HTTP proxy configuration
- Notifications - Android notifications when downloads complete
- CLI arguments - Use interactively or script with command-line args
- Verbose logging - Full HTTP request/response details with timing
- Error tracebacks - Complete stack traces on failures
- File I/O logging - See every file write with sizes
- API debugging - Response summaries and search parameters
- Enable via menu option [18] or
--debugCLI flag
# Clone the repo
git clone https://github.com/StreliziaSystems/gooningCLI.git
cd gooningCLI
# Run setup
bash setup.sh
# Or install manually
pip install requests tqdm colorama beautifulsoup4
pip install yt-dlp # Optional: for hentaihaven video downloads
pkg install termux-api # Optional: for notifications & wallpaperpython gooningcli.pyOpens a menu with all commands. Just enter the number.
# Search and download
python gooningcli.py search "futa" -n 10 -s nhentai
# Download random gallery
python gooningcli.py random
# View gallery info
python gooningcli.py info 12345
# Developer mode
python gooningcli.py --debug search "futa" -n 5
# View history/stats
python gooningcli.py history
python gooningcli.py stats| Command | Description |
|---|---|
search |
Search and download content |
random |
Download a random gallery |
info |
Show gallery details |
history |
View download history |
stats |
Show download statistics |
bookmarks |
View bookmarks |
bookmark add |
Add a bookmark |
bookmark remove |
Remove a bookmark |
blacklist |
View/manage blacklist |
blacklist tag <tag> |
Blacklist a tag |
blacklist id <id> |
Blacklist a gallery ID |
dedup |
Find and remove duplicates |
organize |
Organize folders by site/date/type |
clean |
Clean old/empty/small downloads |
export |
Export as JSON/CBZ/ZIP |
batch |
Download from a text file |
slideshow |
View downloaded images |
wallpaper |
Set image as wallpaper (Termux) |
config |
View/set configuration |
theme |
Change color theme |
proxy |
Set proxy URL |
devmode |
Toggle developer mode |
update |
Update via git pull |
shell |
Run shell command |
help |
Show help |
Config is stored in ~/.gooningcli/config.json:
{
"theme": "default",
"download_dir": "~/gooningcli_downloads",
"max_workers": 5,
"proxy": "",
"rate_limit": 0.5,
"auto_zip": false,
"auto_cbz": false,
"notify": true,
"debug": false
}| Key | Default | Description |
|---|---|---|
theme |
default |
Color theme (default/fire/ocean/matrix/mono/pink) |
download_dir |
~/gooningcli_downloads |
Where to save downloads |
max_workers |
5 |
Concurrent download threads |
proxy |
"" |
HTTP/SOCKS5 proxy URL |
rate_limit |
0.5 |
Delay between requests (seconds) |
default_site |
all |
Default site for search (nhentai/gelbooru/danbooru/konachan/all) |
nhentai_mirrors |
["nhentai.net"] |
nhentai mirrors to try in order |
auto_zip |
false |
Auto-zip manga galleries after download |
auto_cbz |
false |
Auto-create CBZ archives after download |
notify |
true |
Android notifications (Termux only) |
debug |
false |
Developer mode (verbose logging) |
Enable dev mode to get detailed debugging output:
# Via CLI flag
python gooningcli.py --debug search "futa" -n 5
# Via menu
# Option [18] -> Toggle on/off
# What it shows:
# [HTTP] GET https://nhentai.net/api/v2/search?query=futa -> 200 (145ms)
# [FILE] WRITE: /path/to/001.jpg (52847 bytes)
# [ERROR] HTTP 429 on search (attempt 2/3, 4000ms)
# Traceback (most recent call last):
# File "gooningcli.py", line 318, in retry_with_backoff
# ...Create a text file with one search term per line:
# my_downloads.txt
# Lines starting with # are ignored
futa
big boobs
sole female
ahegaoThen run:
python gooningcli.py batchgooningCLI/
gooningcli.py # Main script
requirements.txt # Python dependencies
setup.sh # Termux setup script
README.md # This file
~/.gooningcli/
config.json # Configuration
history.json # Download history
bookmarks.json # Saved bookmarks
blacklist.json # Blacklisted tags/IDs
- Python 3.8+
- Termux (recommended) or any Linux/macOS/Windows terminal
- Internet connection
| Package | Required | Purpose |
|---|---|---|
| requests | Yes | HTTP client |
| beautifulsoup4 | Yes | HTML parsing |
| tqdm | No | Progress bars |
| colorama | No | Terminal colors |
| yt-dlp | No | Video downloads (hentaihaven) |
| Package | Required | Purpose |
|---|---|---|
| python | Yes | Runtime |
| termux-api | No | Notifications, wallpaper |
| git | No | Auto-update feature |
- Search - Queries the site's API or scrapes search results
- Filter - Checks results against your blacklist
- Download - Fetches content with concurrent workers and retry logic
- Validate - Verifies file integrity via Content-Length
- Save - Stores files and logs to history
- Notify - Sends Android notification on completion (Termux)
The code is organized into modular classes:
ConfigManager- Handles all config, history, bookmarks, blacklistDLog- Developer mode logger (only outputs when debug is enabled)NHentaiDownloader- nhentai API v2 client with concurrent image downloadHanimeDownloader- hanime.tv scraperHentaiHavenDownloader- hentaihaven with yt-dlp integrationRule34Downloader- rule34.xxx API clientGelbooruDownloader- gelbooru.com API clientHitomiDownloader- hitomi.la scraperNHentaiTagDownloader- nhentai specific tag queries
Each downloader implements search_and_download(query, count, output_dir).
To add a new site, create a class with:
class MySiteDownloader:
def search(self, query: str) -> list[dict]:
# Return [{"slug": "...", "title": "..."}]
...
def search_and_download(self, query: str, count: int, output_dir: str):
...Then add it to _download_from_site() and SITES.
Happy gooning, ya freaks! :D