{"id":31320620,"url":"https://github.com/soroush-thr/formatfusion","last_synced_at":"2026-05-18T04:36:16.103Z","repository":{"id":315798121,"uuid":"1060791278","full_name":"soroush-thr/FormatFusion","owner":"soroush-thr","description":"A modern, high-performance desktop file converter for Windows with drag-and-drop interface, supporting images, audio, and video files with hardware acceleration and intelligent compression.","archived":false,"fork":false,"pushed_at":"2025-09-20T18:47:36.000Z","size":106,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-20T20:41:28.057Z","etag":null,"topics":["audio-conversion","dark-theme","desktop-application","drag-and-drop","ffmpeg","file-converter","hardware-acceleration","image-processing","mvvm-architecture","pyqt6","python","python3","video-conversion","windows-application"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soroush-thr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-20T15:49:04.000Z","updated_at":"2025-09-20T18:49:51.000Z","dependencies_parsed_at":"2025-09-21T04:45:52.146Z","dependency_job_id":null,"html_url":"https://github.com/soroush-thr/FormatFusion","commit_stats":null,"previous_names":["soroush-thr/formatfusion"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/soroush-thr/FormatFusion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soroush-thr%2FFormatFusion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soroush-thr%2FFormatFusion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soroush-thr%2FFormatFusion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soroush-thr%2FFormatFusion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soroush-thr","download_url":"https://codeload.github.com/soroush-thr/FormatFusion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soroush-thr%2FFormatFusion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276953985,"owners_count":25734618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-25T02:00:09.612Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-conversion","dark-theme","desktop-application","drag-and-drop","ffmpeg","file-converter","hardware-acceleration","image-processing","mvvm-architecture","pyqt6","python","python3","video-conversion","windows-application"],"created_at":"2025-09-25T16:52:16.002Z","updated_at":"2025-09-25T16:52:20.362Z","avatar_url":"https://github.com/soroush-thr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FormatFusion - Universal File Converter\n\nA modern, high-performance desktop application for Windows that converts images, audio, and video files with an intuitive drag-and-drop interface. Built with Python and PyQt6 following the MVVM design pattern, featuring a beautiful dark theme and optimized conversion engines.\n\n## ✨ Key Features\n\n### 🖼️ **Advanced Image Conversion**\n- **Supported Input Formats**: PNG, JPG, JPEG, BMP, TIFF, GIF, WebP\n- **Output Formats**: PNG, JPG with quality optimization\n- **Smart Resizing**: Optional pixel-based resizing with aspect ratio preservation\n- **File Size Control**: Kilobyte-based size limiting with intelligent compression\n- **Quality Engine**: High-quality conversion using Pillow with optimization algorithms\n\n### 🎵 **Professional Audio Conversion**\n- **Supported Input Formats**: WAV, M4A, FLAC, OGG, MP3, AAC, WMA\n- **Output Format**: MP3 with optimized encoding\n- **Quality Presets**: 128kbps (Standard), 192kbps (Good), 256kbps (High), 320kbps (Lossless)\n- **Fast Processing**: Optimized FFmpeg integration\n\n### 🎬 **Ultra-Fast Video Conversion**\n- **Supported Input Formats**: MKV, MOV, AVI, WebM, FLV, MP4, WMV, M4V\n- **Output Format**: MP4 with H.264/AAC codecs\n- **Quality Presets**: 480p, 720p, 1080p, Original quality\n- **Speed Optimization**: 3-5x faster conversion with hardware acceleration\n- **Fast Mode**: Ultrafast encoding for maximum speed\n- **Hardware Acceleration**: Auto-detects NVIDIA, Intel, and AMD GPU encoding\n\n### 🎨 **Modern User Interface**\n- **Dark Theme**: Professional navy-blue color scheme\n- **Drag \u0026 Drop**: Intuitive file selection with visual feedback\n- **Real-time Preview**: File information and conversion options\n- **Progress Tracking**: Visual progress bar with real-time updates\n- **Smart Defaults**: Automatic save location in same folder as input\n- **Error Handling**: Clear error messages and validation\n- **Logo Support**: Custom logo integration throughout the interface\n\n## Installation\n\n### Prerequisites\n\n1. **Python 3.8 or higher**\n   - Download from [python.org](https://www.python.org/downloads/)\n   - Make sure to check \"Add Python to PATH\" during installation\n\n2. **FFmpeg**\n   - Download from [ffmpeg.org](https://ffmpeg.org/download.html)\n   - Extract and place `ffmpeg.exe` in one of these locations:\n     - Project root directory\n     - `bin/` directory\n     - `resources/` directory\n     - System PATH\n\n### Setup Instructions\n\n1. **Clone or Download the Project**\n   ```bash\n   git clone \u003crepository-url\u003e\n   cd FormatFusion\n   ```\n\n2. **Create Virtual Environment (Recommended)**\n   ```bash\n   python -m venv venv\n   venv\\Scripts\\activate  # On Windows\n   ```\n\n3. **Install Dependencies**\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. **Verify FFmpeg Installation**\n   - Place `ffmpeg.exe` in the project root directory\n   - Or ensure it's available in your system PATH\n\n## Running the Application\n\n### From Source Code\n```bash\npython main.py\n```\n\n### First Run\n1. Launch the application\n2. Drag and drop a file onto the main area, or click to browse\n3. Select your conversion options\n4. Click \"Convert\" and choose output location\n5. Wait for conversion to complete\n\n## Building Executable\n\n### Using PyInstaller\n\n1. **Install PyInstaller**\n   ```bash\n   pip install pyinstaller\n   ```\n\n2. **Create Executable**\n   ```bash\n   pyinstaller --onefile --windowed --name FormatFusion main.py\n   ```\n\n3. **Include FFmpeg**\n   ```bash\n   pyinstaller --onefile --windowed --name FormatFusion --add-data \"ffmpeg.exe;.\" main.py\n   ```\n\n### Advanced Build Script\nCreate `build.py` for automated building:\n\n```python\nimport PyInstaller.__main__\nimport os\n\n# Build executable\nPyInstaller.__main__.run([\n    '--onefile',\n    '--windowed',\n    '--name=FormatFusion',\n    '--add-data=ffmpeg.exe;.',\n    '--add-data=requirements.txt;.',\n    '--icon=icon.ico',  # Optional: add custom icon\n    'main.py'\n])\n```\n\n## 📁 Project Structure\n\n```\nFormatFusion/\n├── main.py                    # Application entry point\n├── requirements.txt           # Python dependencies\n├── setup.py                   # Automated setup script\n├── build.py                   # Executable build script\n├── README.md                  # This documentation\n├── ffmpeg.exe                 # FFmpeg binary (place here)\n├── resources/                 # Application resources\n│   ├── logo.png              # Custom logo (optional)\n│   └── README.md             # Logo setup instructions\n├── temp/                     # Documentation and guides\n│   ├── SETUP_GUIDE.md        # Simple setup guide\n│   └── VIDEO_OPTIMIZATION.md # Performance details\n├── models/                   # Data models (MVVM)\n│   ├── __init__.py\n│   ├── file_info.py          # File information model\n│   └── conversion_options.py # Conversion settings model\n├── viewmodels/               # Business logic (MVVM)\n│   ├── __init__.py\n│   └── main_viewmodel.py     # Main view model\n├── views/                    # User interface (MVVM)\n│   ├── __init__.py\n│   └── main_window.py        # Main window with dark theme\n├── services/                 # External services\n│   ├── __init__.py\n│   └── conversion_service.py # Optimized conversion engine\n└── utils/                    # Utility functions\n    ├── __init__.py\n    └── file_utils.py         # File operation utilities\n```\n\n## 🚀 Performance Optimizations\n\n### **Video Conversion Speed**\n- **3-5x Faster**: Optimized FFmpeg settings with ultrafast presets\n- **Hardware Acceleration**: Auto-detects and uses GPU encoding (NVIDIA, Intel, AMD)\n- **Fast Mode**: Default setting for maximum speed with minimal quality loss\n- **Smart Fallbacks**: Automatic fallback to software encoding if hardware fails\n\n### **Image Processing**\n- **Intelligent Compression**: Smart quality adjustment for file size limits\n- **Memory Efficient**: Optimized Pillow usage with proper resource management\n- **Batch Processing**: Efficient handling of multiple image operations\n\n### **Audio Conversion**\n- **Optimized Encoding**: Fast MP3 conversion with quality presets\n- **Stream Processing**: Efficient audio stream handling\n\n## 🎨 User Experience\n\n### **Modern Interface**\n- **Dark Theme**: Professional navy-blue color scheme with cyan accents\n- **Responsive Design**: Adapts to different window sizes\n- **Visual Feedback**: Hover effects, progress bars, and status updates\n- **Custom Logo**: Support for custom branding throughout the interface\n\n### **Smart Features**\n- **Auto Save Location**: Defaults to same folder as input file\n- **File Type Detection**: Automatic format recognition and appropriate options\n- **Progress Tracking**: Real-time conversion progress with visual indicators\n- **Error Recovery**: Graceful error handling with helpful messages\n\n## 🏗️ Architecture\n\nFormatFusion follows the **Model-View-ViewModel (MVVM)** pattern:\n\n- **Models**: Data structures and business entities (`file_info.py`, `conversion_options.py`)\n- **Views**: User interface components (`main_window.py` with dark theme)\n- **ViewModels**: Business logic and state management (`main_viewmodel.py`)\n- **Services**: External dependencies and conversion logic (`conversion_service.py`)\n- **Utils**: Helper functions and utilities (`file_utils.py`)\n\n## Troubleshooting\n\n### Common Issues\n\n1. **\"FFmpeg not found\" Error**\n   - Ensure `ffmpeg.exe` is in the correct location\n   - Check that the file is not corrupted\n   - Verify FFmpeg works from command line: `ffmpeg -version`\n\n2. **\"Missing Dependencies\" Error**\n   - Run `pip install -r requirements.txt`\n   - Ensure you're using the correct Python version\n   - Try creating a fresh virtual environment\n\n3. **Conversion Fails**\n   - Check that input file is not corrupted\n   - Ensure output directory is writable\n   - Verify file format is supported\n\n4. **Application Won't Start**\n   - Check Python version (3.8+ required)\n   - Verify all dependencies are installed\n   - Check for antivirus interference\n\n### Performance Tips\n\n- For large video files, use \"Original\" quality to avoid re-encoding\n- Close other applications during conversion for better performance\n- Use SSD storage for faster file I/O\n\n## Development\n\n### Adding New File Formats\n\n1. Update `FileType` enum in `models/file_info.py`\n2. Add extension mapping in `_detect_file_type()` method\n3. Implement conversion logic in `services/conversion_service.py`\n4. Add UI options in `views/main_window.py`\n\n### Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Test thoroughly\n5. Submit a pull request\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Support\n\nFor issues and questions:\n1. Check the troubleshooting section\n2. Search existing issues\n3. Create a new issue with detailed information\n\n## Changelog\n\n### Version 1.0.0\n- Initial release\n- Image, audio, and video conversion\n- Drag-and-drop interface\n- MVVM architecture\n- Windows executable support","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoroush-thr%2Fformatfusion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoroush-thr%2Fformatfusion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoroush-thr%2Fformatfusion/lists"}