Media Operations Navigator with Interactive Command-line Assistance
A simple, keyboard-driven interactive CLI application that makes FFmpeg easy to use without exposing FFmpeg syntax.
- Interactive menu - No need to remember command-line flags
- Keyboard navigation - Arrow keys to move, Enter to select, Space to multi-select
- Auto FFmpeg setup - Automatically downloads FFmpeg if not installed
- Recipe-based operations - Pre-configured presets for common tasks
- Progress display - Visual progress bar during conversions
- Multi-file processing - Select multiple files and process them in queue
- Cross-platform - Works on Windows and Linux
| Category | Description |
|---|---|
| Convert Video | MP4, MKV, WebM, AVI with various codecs (H.264, H.265, VP9) |
| Convert Audio | MP3, AAC, FLAC, WAV, OGG, Opus |
| Extract Audio | Extract audio tracks from video files |
| Resize/Compress | Scale to 1080p, 720p, 480p, 360p or compress with quality presets |
| Remux | Change container format without re-encoding |
- Python 3.10 or higher
- FFmpeg (auto-downloaded if not present)
-
Clone the repository:
git clone https://github.com/yourusername/monica.git cd monica -
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python main.py
On first run, MONICA will check for FFmpeg and offer to download it automatically if not found.
- Place your input files in the
/importfolder - Run
python main.py - Use arrow keys to navigate the menu
- Select an operation (e.g., "Convert video")
- Choose a preset (e.g., "MP4 (H.264)")
- Select files to process using Space, then press Enter
- Converted files appear in the
/exportfolder
Output files are automatically named with a timestamp:
<original_name>_<YYYYMMDD_HHMMSS>_<FORMAT>_converted.<ext>
Example: video_20260108_143210_MP4_converted.mp4
monica/
βββ main.py # Entry point
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ import/ # Input files go here
βββ export/ # Output files appear here
βββ logs/ # Log files
βββ docs/ # Documentation
β βββ introduction.md # Project specification
β βββ usage.md # User guide
β βββ recipes.md # Recipe documentation
βββ src/
βββ __init__.py
βββ ffmpeg_manager.py # FFmpeg detection/download
βββ menu.py # Interactive menus
βββ recipes.py # Conversion presets
βββ file_selector.py # File picker
βββ executor.py # Job execution
βββ logger.py # Logging
You can add custom recipes by creating a custom_recipes.json file in the project root. See docs/recipes.md for details.
questionary- Interactive prompts and menuscolorama- Cross-platform colored terminal outputrequests- HTTP client for FFmpeg download
MIT License
Contributions are welcome! Please feel free to submit a Pull Request.