Portable Windows app to search, download, organize, preview, and AI-caption stock photos and videos from Pixabay, Pexels, and Unsplash.
Media Buddy is a native stock image downloader and local media library for searching, downloading, organizing, previewing, tagging, and AI-captioning stock photos and videos from Pixabay, Pexels, and Unsplash. It includes batch downloads, provider metadata capture, a local REST API, and Florence-2 ONNX computer vision for captions and object tags.
It is a Tauri 2 + SolidJS + Rust rewrite of the original Python ImageBuddy app. There is no Python runtime requirement.
| Search | Library | Settings |
|---|---|---|
![]() |
![]() |
![]() |
| Filters | Video Preview | API |
|---|---|---|
![]() |
![]() |
![]() |
- Multi-source search across Pixabay, Pexels, and Unsplash.
- Photo and video support, including preview posters for videos.
- Persistent search topics with per-provider cursors.
- Batch downloads with concurrency controls.
- Local library backed by SQLite WAL mode.
- Rich metadata capture where providers expose it.
- Large image/video inspector with editable caption and tags.
- Florence-2 ONNX AI vision for captions and object tags.
- Dynamic GPU/CPU worker planning for Florence-2.
- Built-in REST API for automation with bearer-token security.
- Portable data folder beside the executable.
For normal users, publish the NSIS installer from:
src-tauri/target/release/bundle/nsis/Media Buddy_0.1.0_x64-setup.exe
For portable testing, share:
mediabuddy.exe
When launched, the portable executable creates a sibling data/ folder for
settings, downloads, logs, the SQLite library, and Florence-2 model/runtime
cache.
- Open Settings.
- Use Get key beside Pixabay, Pexels, and Unsplash to create provider API keys.
- Paste each key and press Test & save.
- Open Images -> Search and run a query.
- Select result cards and choose Download selected or Download all.
- Open Images -> Library to inspect, tag, delete, or AI-caption saved media.
Florence-2 is not bundled in the executable. When you press Load, Media Buddy downloads the required ONNX model and runtime files into:
data/models/
GPU workers are used when compatible. CPU workers are used only for CPU mode or as fallback when GPU planning/loading fails.
The API tab starts a local REST server, defaulting to:
http://127.0.0.1:5000
Use the API tab to copy the bearer token, open live docs, and copy example curl
commands. The status endpoint is public; other /api/v1/* routes require the
token when one is configured.
- Wiki pages: docs/wiki/Home.md
- PDF-ready manual: docs/MEDIA_BUDDY_MANUAL.md
- PDF export notes: docs/PDF_EXPORT.md
- Screenshot checklist: docs/wiki/Screenshot-Checklist.md
- Release checklist: docs/wiki/Release-Checklist.md
- Release notes: docs/RELEASE_NOTES_0.1.0.md
- Security policy: SECURITY.md
Requirements:
- Windows 10 or 11
- Rust stable
- Node.js 20+
- Microsoft C++ Build Tools / Visual Studio 2022 Build Tools
- WebView2 Runtime, usually already present on Windows 10/11
# Clone this repository, then:
cd ImageBuddy
npm install
npm run tauri dev
npm run tauri buildRelease executable:
src-tauri/target/release/mediabuddy.exe
Installers:
src-tauri/target/release/bundle/nsis/Media Buddy_0.1.0_x64-setup.exe
src-tauri/target/release/bundle/msi/Media Buddy_0.1.0_x64_en-US.msi
data/
|-- config/
| `-- settings.json
|-- images/
| |-- originals/
| `-- thumbs/
|-- videos/
| |-- originals/
| `-- thumbs/
|-- logs/
|-- models/
|-- images.db
|-- images.db-shm
`-- images.db-wal
Override the data location with:
$env:MEDIABUDDY_DATA_DIR = "D:\MediaBuddyData"Media Buddy stores provider keys and the REST token locally in
data/config/settings.json. Downloads, metadata, logs, model files, and the
SQLite library stay local unless you share the folder yourself.
Search/download/API calls go to the configured providers and local REST API clients. Florence-2 model/runtime downloads come from Hugging Face, Microsoft ONNX Runtime, NuGet, and PyPI for cuDNN runtime files.
MIT. See LICENSE.





