https://github.com/dontknow492/beatroot
A free and open source modern, feature-rich music player built entirely with Python. Supports both local playback and online streaming (YouTube Music). Designed with a sleek Qt-based UI using PySide6 and QFluentWidget, offering a smooth and intuitive user experience.
https://github.com/dontknow492/beatroot
asynchronous-programming media-player mp3-player music-player music-streaming-application open-source python qt youtube-music-player ytmusicapi
Last synced: 7 months ago
JSON representation
A free and open source modern, feature-rich music player built entirely with Python. Supports both local playback and online streaming (YouTube Music). Designed with a sleek Qt-based UI using PySide6 and QFluentWidget, offering a smooth and intuitive user experience.
- Host: GitHub
- URL: https://github.com/dontknow492/beatroot
- Owner: dontknow492
- Created: 2025-02-16T13:44:32.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-02-24T14:58:58.000Z (7 months ago)
- Last Synced: 2025-02-24T15:47:11.403Z (7 months ago)
- Topics: asynchronous-programming, media-player, mp3-player, music-player, music-streaming-application, open-source, python, qt, youtube-music-player, ytmusicapi
- Language: Python
- Homepage:
- Size: 61.8 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# BeatRoot- Modern Music Player Application



\
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.## Features ✨
### Core Functionality
- **Music Playback**
- Play/pause control
- Next/previous track navigation
- Shuffle and repeat modes
- Queue management
- Lyrics display
- Track progress bar### Library Management
- Local music library organization
- Playlist management (create/edit/delete)
- Artist/album categorization
- Recent plays history
- Favorites/liked tracks system### Online Integration
- YouTube Music streaming
- Search across YT Music catalog
- Genre-based browsing
- Playlist/album/artist exploration
- Watch playlist generation### UI/UX Features
- Fluent Design System interface
- Responsive layout
- Acrylic effects and animations
- Dark/light theme support
- Customizable navigation pane
- Multiple view modes
- Context menus and dialogs### Advanced Features
- Background data fetching
- Asynchronous operations
- Database persistence (SQLite)
- Network connectivity checks
- Error handling and logging
- Cross-platform compatibility### Your Stats
- Play time
- Song played
- Playlist Played
- Artist View
- Full Album Browser
- Fav/Liked Songs### Tracking
- Top Songs
- Top Artists
- Top Albums## Installation 🛠️
### Prerequisites
- Python 3.9+
- pip package manager### Dependencies
```bash
pip install PySide6 qfluentwidgets ytmusicapi loguru mutagen python-vlc ytdlp qsaync, aiosqlite
```### Repository Links
- [QFluentWidgets](https://github.com/zhiyiYo/QFluentWidgets)
- [qasync](https://github.com/CabbageDevelopment/qasync)
- [loguru](https://github.com/Delgan/loguru)
- [ytmusicapi](https://github.com/sigma67/ytmusicapi)
- [yt-dlp](https://github.com/yt-dlp/yt-dlp)
- [python-vlc](https://github.com/videolan/vlc)### Getting Started
1. Clone the repository:
```bash
git clone https://github.com/dontknow492/BeatRoot.git
cd musify
```2. Install requirements:
```bash
pip install -r requirements.txt
```3. Run the application:
```bash
python main.py
```## Project Structure 📁
```
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
```## Configuration ⚙️
Create `config.json` with YouTube Music authentication:
```json
{
"YTMusic": {
"auth": "your_oauth_credentials",
"user_id": "your_user_id"
}
}
```## Usage 🎮
1. **Navigation**
- Use the sidebar to switch between views
- Right-click items for context menus
- Drag window edges for responsive layout2. **Music Playback**
- Double-click tracks to play
- Use bottom player controls
- Right-click player for advanced options3. **Search**
- Global search bar in header
- Supports artists/albums/tracks
- Instant results with previews4. **Library Management**
- Import local folders through Local interface
- Create smart playlists
- View listening statistics## Development 🧑💻
### Code Architecture
- **Main Components**
- `MainWindow`: Root application window
- `ViewManager`: Dynamic view management
- `PlayerInterface`: Playback controls
- `DatabaseManager`: SQLite operations
- `DataFetcherWorker`: Background API calls### Key Patterns
- 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### Extending Functionality
1. Add new interfaces:
```python
class NewInterface(ViewInterface):
def __init__(self, parent=None):
super().__init__(parent)
# Add custom components
```2. Register in navigation:
```python
self.addSubInterface(self.newInterface, FluentIcon.ADD, "New Feature")
```## License 📄
This project is currently unlicensed. Please contact the author for licensing information.## Contributing 🤝
Contributions are welcome! Please follow:
1. Fork the repository
2. Create your feature branch
3. Commit changes with descriptive messages
4. Push to the branch
5. Open a pull request## Screenshots 📸
#### Home view showing featured content
#### Compact bottom player controls
#### Search any music
#### View play playlist, artist, releated songs
#### Elignent and real time lyrics
#### Get your stats, usage reports, top song, artist, etc
![]()#### Dark theme appearance
## Support ❤️
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.