Download from Jable.tv & scrape local video libraries with a Web UI
- Video Download — Concurrent HLS download from Jable.tv with Cloudflare bypass, automatic segment merge via FFmpeg
- Metadata Scraping — Scan local folders, fetch metadata from multiple sources (JavDB, JavBus, DMM, JavTrailers, ThePornDB), generate Kodi-compatible NFO files and artwork
- Web UI — React-based interface for batch download, scraping, subscription management, and library browsing
- Subscription Tracking — Monitor magnet link updates on JavDB with optional Telegram notifications
- CLI — Command-line interface for scripted downloads
- Browser Userscripts — Tampermonkey extensions for one-click download/subscribe on JavDB and Jable
Frontend (React / Vite)
↓ REST /api/* + WebSocket /ws
API Layer (FastAPI)
↓
Managers (Download / Scrape / Subscription)
↓
Core Library
├── Downloader → JableExtractor → HLS
├── Scraper → Crawlers (JavDB, JavBus, DMM, ...) → NFO Writer
└── Utils (config, history, network, browser, translate)
docker run -d \
--name mr-banana \
-p 8000:8000 \
-v /your/config:/config \
-v /your/media:/data \
-e ALLOWED_BROWSE_ROOTS="/data" \
cailurus/mr-banana:latestOpen http://localhost:8000 in your browser.
| Container Path | Description | Example Host Path |
|---|---|---|
/config |
Config, database, logs (persisted across updates) | /volume/mrbanana/config |
/data |
Media files (videos, downloads) | /volume/data |
Files stored in /config:
config.json— Application settingsmr_banana_subscription.db— Subscription databaselogs/— Application logs
services:
mr-banana:
image: cailurus/mr-banana:latest
container_name: mr-banana
ports:
- "8000:8000"
volumes:
- /your/config:/config
- /your/media:/data
environment:
- ALLOWED_BROWSE_ROOTS=/data
restart: unless-stopped- Python 3.10+
- Node.js 18+
- FFmpeg
- patchright + Chromium (
patchright install chromiumon first run)
git clone https://github.com/cailurus/MrBanana.git
cd MrBanana
python3 -m venv .venv && source .venv/bin/activate
make py-install # Install Python dependencies
make web-install # Install Node dependenciesmake dev # FastAPI :8000 + Vite :5173 with hot reload
make test # Run tests
make test-quick # Run tests (quiet output)make fe # Build frontend → ./static
make serve # FastAPI serves ./static on :8000python -m mr_banana.cli --url <VIDEO_URL> --output_dir <OUT_DIR>| Flag | Description |
|---|---|
--url |
Jable.tv video URL (required) |
--output_dir |
Output folder |
--format |
Filename format — supports {id} and {title} |
-v |
Verbose logging |
- Install Tampermonkey
- Click to install: mrbanana-helper.user.js
- Configure your Mr. Banana server address in Tampermonkey settings
Supported sites:
- JavDB — "Subscribe to Mr. Banana" button on detail pages
- Jable — "Download to Mr. Banana" button on video pages
| Name | Description | Default |
|---|---|---|
LOG_LEVEL |
Log level | INFO |
MR_BANANA_LOG_LEVEL |
Override log level | INFO |
MR_BANANA_CONFIG_DIR |
Config directory | /config (Docker) |
ALLOWED_BROWSE_ROOTS |
Directories browsable in Web UI | /data |
CORS_ORIGINS |
CORS allowed origins | * |