Musify is a feature-rich cross-platform music player application with modern UI design, combining local music library management with online streaming capabilities through YouTube Music integration, completely build using python.
- Music Playback
- Play/pause control
- Next/previous track navigation
- Shuffle and repeat modes
- Queue management
- Lyrics display
- Track progress bar
- Local music library organization
- Playlist management (create/edit/delete)
- Artist/album categorization
- Recent plays history
- Favorites/liked tracks system
- YouTube Music streaming
- Search across YT Music catalog
- Genre-based browsing
- Playlist/album/artist exploration
- Watch playlist generation
- Fluent Design System interface
- Responsive layout
- Acrylic effects and animations
- Dark/light theme support
- Customizable navigation pane
- Multiple view modes
- Context menus and dialogs
- Background data fetching
- Asynchronous operations
- Database persistence (SQLite)
- Network connectivity checks
- Error handling and logging
- Cross-platform compatibility
- Play time
- Song played
- Playlist Played
- Artist View
- Full Album Browser
- Fav/Liked Songs
- Top Songs
- Top Artists
- Top Albums
- Python 3.9+
- pip package manager
pip install PySide6 qfluentwidgets ytmusicapi loguru mutagen python-vlc ytdlp qsaync, aiosqlite
- Clone the repository:
git clone https://github.com/dontknow492/BeatRoot.git
cd musify
- Install requirements:
pip install -r requirements.txt
- Run the application:
python main.py
musify/
โโโ data/
โ โโโ app/ # JSON data templates
โ โโโ user/ # User data and database
โโโ src/
โ โโโ api/ # YouTube Music API integration
โ โโโ common/ # Shared common widget
โโโ components/ # Components like cards, dialog, etc
โ โโโ interfaces/ # UI views and widgets
โ โโโ utility/ # Helper functions and managers
โโโ main.py # Main application entry
โโโ README.md
Create config.json
with YouTube Music authentication:
{
"YTMusic": {
"auth": "your_oauth_credentials",
"user_id": "your_user_id"
}
}
-
Navigation
- Use the sidebar to switch between views
- Right-click items for context menus
- Drag window edges for responsive layout
-
Music Playback
- Double-click tracks to play
- Use bottom player controls
- Right-click player for advanced options
-
Search
- Global search bar in header
- Supports artists/albums/tracks
- Instant results with previews
-
Library Management
- Import local folders through Local interface
- Create smart playlists
- View listening statistics
- Main Components
MainWindow
: Root application windowViewManager
: Dynamic view managementPlayerInterface
: Playback controlsDatabaseManager
: SQLite operationsDataFetcherWorker
: Background API calls
- Model-View-Controller (MVC)
- Observer pattern for signals/slots
- Asynchronous programming with Qasync
- Worker thread for API operations
- Worker thread for downloading Songs
- QNetworkManager for async thumbnail downloading
- Add new interfaces:
class NewInterface(ViewInterface):
def __init__(self, parent=None):
super().__init__(parent)
# Add custom components
- Register in navigation:
self.addSubInterface(self.newInterface, FluentIcon.ADD, "New Feature")
This project is currently unlicensed. Please contact the author for licensing information.
Contributions are welcome! Please follow:
- Fork the repository
- Create your feature branch
- Commit changes with descriptive messages
- Push to the branch
- Open a pull request
If you find this project useful, please consider:
- โญ Starring the repository
- ๐ Reporting issues
- ๐ก Suggesting new features
- ๐๏ธ Writing documentation
Note: This application is under active development. Some features may be experimental, not work so please be patient, i am trying my full to complete so hope you like it.
Important: This application use vlc pluging and vlc dlls to play the song, stream it so huge thanks to vlc for this and i wanted it able to play without needing of vlc in system so i used vlc plugin, dll for it.