Thumbnail + preview tools for media folders (ffmpeg + pillow helpers).
Project description
Librifygen
High-performance thumbnail & preview generator for videos and images.
Librifygen is a cross-platform media processing toolkit that generates:
- Image thumbnails
- Video thumbnails (single-frame extraction)
- Video preview clips (random segments stitched together)
- Full CLI tool + clean Python API
- Designed for automation, content pipelines, and library indexing tools.
Uses ffmpeg for video operations and Pillow for image processing.
🚀 Features
- Extract thumbnails from videos at midpoint or a provided timestamp
- Resize images intelligently (crop or letterbox)
- Batch-scan directories recursively
- Create multi-clip video previews
- CLI + Python module
- Works on Linux, Windows, macOS
- Safe and predictable processing (temp dirs, logging, error handling)
📦 Installation
Requires:
Python 3.8+
Pillow
ffmpeg-python
ffmpeg (system binary)
Install Librifygen:
pip install librifygen
🔧 Installing ffmpeg (Required)
Librifygen depends on the ffmpeg binary being present in your system PATH. Here are the easiest installation methods per OS:
🟦 Windows
Option A — Use Chocolatey (recommended)
choco install ffmpeg
Option B — Use Scoop
scoop install ffmpeg
Option C — Manual Download
- Download from: https://www.gyan.dev/ffmpeg/builds/
- Extract the folder
- Add the
bin/directory to your PATH environment variable
Verify:
ffmpeg -version
🍎 macOS
Using Homebrew (recommended)
brew install ffmpeg
Using MacPorts
sudo port install ffmpeg
Verify:
ffmpeg -version
🐧 Linux
Debian / Ubuntu
sudo apt update
sudo apt install ffmpeg
Fedora
sudo dnf install ffmpeg
Arch Linux
sudo pacman -S ffmpeg
Verify:
ffmpeg -version
🖥️ CLI Usage
After installation, the librifygen command becomes available:
librifygen <command> [options]
Available commands:
thumbs— generate thumbnails for images/videos in a directorypreview— generate multi-clip preview videos
▶️ Generate Thumbnails
Basic usage
librifygen thumbs /path/to/media /path/to/output
With workers & custom size
librifygen thumbs ~/Pictures ~/Thumbs --workers 8
🎬 Generate Preview Videos
librifygen preview ./videos ./previews
Custom clips, duration, audio, transitions
librifygen preview ./videos ./previews \
--num-clips 4 \
--clip-duration 3 \
--workers 4
A preview is generated like:
input.mp4 → previews/input_preview.mp4
🐍 Python API Usage
Use Librifygen directly in your Python code:
✔ Generate image thumbnail
from librifygen.thumbnail import generate_image_thumbnail
output = generate_image_thumbnail(
"media/photo.png",
"thumbnails/photo.jpg"
)
print(output)
✔ Generate video thumbnail
from librifygen.thumbnail import generate_video_thumbnail
thumb = generate_video_thumbnail(
"media/video.mp4",
"thumbnails/video.jpg"
)
print("Thumbnail:", thumb)
✔ Generate preview video
from librifygen.preview import generate_video_preview
preview = generate_video_preview(
"media/video.mp4",
"previews",
num_clips=4,
clip_duration=5,
)
print(preview)
✔ Batch processing
from librifygen.thumbnail import generate_thumbnails
results = generate_thumbnails(
input_dir="media",
output_dir="thumbs",
max_workers=6
)
for src, out in results:
print(src, "->", out)
📂 Example Project Structure
You can integrate Librifygen into your own project like:
project/
│
├── media/
│ ├── images/
│ ├── videos/
│
├── thumbs/
│
├── previews/
│
└── generate_media_assets.py
Example script:
from librifygen.thumbnail import generate_thumbnails
from librifygen.preview import batch_create_previews
generate_thumbnails("media", "thumbs", max_workers=8)
batch_create_previews("media/videos", "previews", num_clips=4)
⚙️ Supported Formats
Images
jpg, jpeg, png, bmp, tiff, webp
Videos
mp4, mov, mkv, webm, avi, flv, m4v
Formats are customizable using:
from librifygen.config import set_extensions
set_extensions(video_exts=[".mp4", ".mov"], image_exts=[".jpg"])
🧩 Roadmap
- GPU-accelerated previews (via CUDA / Vulkan / Metal)
- Progress bars & verbose CLI
- Config file support
- Parallel image-resizing via ProcessPool optimization
- WebAssembly build (ffmpeg-wasm) for browser-based pipelines
📝 License
MIT License © Me
🤝 Contributing
Pull requests welcome. Please open issues for bugs, feature requests, or ffmpeg compatibility questions.
🧪 Testing your installation
pip install librifygen
librifygen --help
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file librifygen-0.2.5.tar.gz.
File metadata
- Download URL: librifygen-0.2.5.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e6cb89d58f158b89ac9b63323bd4af1a0d76e373d07c30311189f0a026646ce
|
|
| MD5 |
9af4e363a87e2bfaa3185a25be78ced8
|
|
| BLAKE2b-256 |
463a50c4caccacf25c38461466bedad05dbd89ac1b93f7771338ce32fa6bafb2
|
File details
Details for the file librifygen-0.2.5-py3-none-any.whl.
File metadata
- Download URL: librifygen-0.2.5-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a13a16a45e00257407ee9d449d317349e4ff76509775c20d698d81243bed4296
|
|
| MD5 |
2c2e59bff112a18234992e00a03902d7
|
|
| BLAKE2b-256 |
7dd9c2fe9691e555cc8a5ce4715e1215d7ddc274fbd503171642bc9e82d9faa1
|