A Python application for organizing music files based on their metadata, designed to work with Jellyfin media server. This is an enhanced fork of ImKyleDouglas's Jellyfin Music Organizer.
- Complete rewrite with modern Python practices and type hints
- Enhanced error handling and detailed logging system
- Expanded audio format support
- Customizable organization rules
- Dark theme UI with better user feedback
- Progress tracking with detailed status updates
- Configuration management system
- Comprehensive test suite
- Extensive documentation
- Cross-platform support (Windows, Linux, Mac)
- Smart Organization: Automatically organizes music files based on metadata (artist, album, etc.)
- Wide Format Support: Works with most popular audio formats
- User-Friendly: Dark theme UI with progress tracking
- Customizable: Flexible organization rules to match your needs
- Reliable: Built-in error handling and detailed logging
- AIFF/AIF (.aif, .aiff)
- APE (.ape)
- FLAC (.flac)
- M4A/M4B/M4R (.m4a, .m4b, .m4r)
- MP2/MP3/MP4 (.mp2, .mp3, .mp4)
- MPC (.mpc)
- OGG (.ogg)
- OPUS (.opus)
- WAV (.wav)
- WMA (.wma)
- Python 3.8 or higher
- Git (for cloning the repository)
- PyQt5
- mutagen
- qdarkstyle
- Clone the repository:
git clone https://github.com/yourusername/jellyfin_music_organizer.git
cd jellyfin_music_organizer- Create a virtual environment (recommended):
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
# Basic installation
pip install -r requirements.txt
# Development installation (includes testing tools)
pip install -r requirements-dev.txt- Run the application:
python -m jellyfin_music_organizer.main- Select your music source folder
- Choose the destination folder
- Configure organization settings if needed
- Click "Organize" to start the process
The program will create a folder structure like this:
- User Guide - Detailed instructions for using the application
- Development Guide - Information for developers
- API Documentation - API reference
- Changelog - Version history and changes
Configuration files are stored in:
- Windows:
%USERPROFILE%\.jellyfin_music_organizer\config.json - Linux/Mac:
~/.jellyfin_music_organizer/config.json
Logs are stored in:
- Windows:
%USERPROFILE%\.jellyfin_music_organizer\app.log - Linux/Mac:
~/.jellyfin_music_organizer/app.log
jellyfin_music_organizer/
├── core/ # Core functionality
├── ui/ # User interface components
├── utils/ # Utility functions
└── main.py # Application entry point
python -m pytest tests/Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the User Guide
- Look through existing Issues
- Create a new Issue
- Original project by ImKyleDouglas
- All contributors to the original project
- All file operations are validated and sanitized
- No external network connections required
- Local configuration storage only
- Secure file handling with integrity checks