{"id":25692734,"url":"https://github.com/dontknow492/beatroot","last_synced_at":"2026-05-16T06:10:33.862Z","repository":{"id":277841931,"uuid":"933696945","full_name":"dontknow492/BeatRoot","owner":"dontknow492","description":"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.","archived":false,"fork":false,"pushed_at":"2025-02-24T14:58:58.000Z","size":64805,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-24T15:47:11.403Z","etag":null,"topics":["asynchronous-programming","media-player","mp3-player","music-player","music-streaming-application","open-source","python","qt","youtube-music-player","ytmusicapi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dontknow492.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-02-16T13:44:32.000Z","updated_at":"2025-02-24T14:59:02.000Z","dependencies_parsed_at":"2025-02-16T14:59:27.949Z","dependency_job_id":null,"html_url":"https://github.com/dontknow492/BeatRoot","commit_stats":null,"previous_names":["dontknow492/beatroot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dontknow492%2FBeatRoot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dontknow492%2FBeatRoot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dontknow492%2FBeatRoot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dontknow492%2FBeatRoot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dontknow492","download_url":"https://codeload.github.com/dontknow492/BeatRoot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240573618,"owners_count":19822878,"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","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":["asynchronous-programming","media-player","mp3-player","music-player","music-streaming-application","open-source","python","qt","youtube-music-player","ytmusicapi"],"created_at":"2025-02-24T23:28:24.396Z","updated_at":"2025-11-18T06:03:21.632Z","avatar_url":"https://github.com/dontknow492.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BeatRoot- Modern Music Player Application\n\n![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54)\n![Qt](https://img.shields.io/badge/Qt-%23217346.svg?style=for-the-badge\u0026logo=Qt\u0026logoColor=white)\n![Fluent Design](https://img.shields.io/badge/Fluent%20Design-0078D4?style=for-the-badge\u0026logo=microsoft\u0026logoColor=white)\n![Asyncio](https://img.shields.io/badge/Asyncio-red?style=for-the-badge\u0026logo=microsoft\u0026logoColor=white)\\\nMusify 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.\n\n## Features ✨\n\n### Core Functionality\n- **Music Playback**\n  - Play/pause control\n  - Next/previous track navigation\n  - Shuffle and repeat modes\n  - Queue management\n  - Lyrics display\n  - Track progress bar\n\n### Library Management\n- Local music library organization\n- Playlist management (create/edit/delete)\n- Artist/album categorization\n- Recent plays history\n- Favorites/liked tracks system\n\n### Online Integration\n- YouTube Music streaming\n- Search across YT Music catalog\n- Genre-based browsing\n- Playlist/album/artist exploration\n- Watch playlist generation\n\n### UI/UX Features\n- Fluent Design System interface\n- Responsive layout\n- Acrylic effects and animations\n- Dark/light theme support\n- Customizable navigation pane\n- Multiple view modes\n- Context menus and dialogs\n\n### Advanced Features\n- Background data fetching\n- Asynchronous operations\n- Database persistence (SQLite)\n- Network connectivity checks\n- Error handling and logging\n- Cross-platform compatibility\n\n### Your Stats\n- Play time\n- Song played\n- Playlist Played\n- Artist View\n- Full Album Browser\n- Fav/Liked Songs\n\n### Tracking\n- Top Songs\n- Top Artists\n- Top Albums\n\n## Installation 🛠️\n\n### Prerequisites\n- Python 3.9+\n- pip package manager\n\n### Dependencies\n```bash\npip install PySide6 qfluentwidgets ytmusicapi loguru mutagen python-vlc ytdlp qsaync, aiosqlite\n```\n\n### Repository Links\n- [QFluentWidgets](https://github.com/zhiyiYo/QFluentWidgets)\n- [qasync](https://github.com/CabbageDevelopment/qasync)\n- [loguru](https://github.com/Delgan/loguru)\n- [ytmusicapi](https://github.com/sigma67/ytmusicapi)\n- [yt-dlp](https://github.com/yt-dlp/yt-dlp)\n- [python-vlc](https://github.com/videolan/vlc)\n\n### Getting Started\n1. Clone the repository:\n```bash\ngit clone https://github.com/dontknow492/BeatRoot.git\ncd BeatRoot\n```\n\n2. Install requirements:\n```bash\npip install -r requirements.txt\n```\n\n3. Run the application:\n```bash\npython main.py\n```\n\n## Project Structure 📁\n```\nmusify/\n├── data/\n│   ├── app/          # JSON data templates\n│   └── user/         # User data and database\n├── src/\n│   ├── api/          # YouTube Music API integration\n│   ├── common/       # Shared common widget\n    ├── components/   # Components like cards, dialog, etc\n│   ├── interfaces/   # UI views and widgets\n│   └── utility/      # Helper functions and managers\n├── main.py           # Main application entry\n└── README.md\n```\n\n## Configuration ⚙️\nCreate `config.json` with YouTube Music authentication:\n```json\n{\n  \"YTMusic\": {\n    \"auth\": \"your_oauth_credentials\",\n    \"user_id\": \"your_user_id\"\n  }\n}\n```\n\n## Usage 🎮\n1. **Navigation**\n   - Use the sidebar to switch between views\n   - Right-click items for context menus\n   - Drag window edges for responsive layout\n\n2. **Music Playback**\n   - Double-click tracks to play\n   - Use bottom player controls\n   - Right-click player for advanced options\n\n3. **Search**\n   - Global search bar in header\n   - Supports artists/albums/tracks\n   - Instant results with previews\n\n4. **Library Management**\n   - Import local folders through Local interface\n   - Create smart playlists\n   - View listening statistics\n\n## Development 🧑💻\n\n### Code Architecture\n- **Main Components**\n  - `MainWindow`: Root application window\n  - `ViewManager`: Dynamic view management\n  - `PlayerInterface`: Playback controls\n  - `DatabaseManager`: SQLite operations\n  - `DataFetcherWorker`: Background API calls\n\n### Key Patterns\n- Model-View-Controller (MVC)\n- Observer pattern for signals/slots\n- Asynchronous programming with Qasync\n- Worker thread for API operations\n- Worker thread for downloading Songs\n- QNetworkManager for async thumbnail downloading\n\n### Extending Functionality\n1. Add new interfaces:\n```python\nclass NewInterface(ViewInterface):\n    def __init__(self, parent=None):\n        super().__init__(parent)\n        # Add custom components\n```\n\n2. Register in navigation:\n```python\nself.addSubInterface(self.newInterface, FluentIcon.ADD, \"New Feature\")\n```\n\n## License 📄\nThis project is currently unlicensed. Please contact the author for licensing information.\n\n## Contributing 🤝\nContributions are welcome! Please follow:\n1. Fork the repository\n2. Create your feature branch\n3. Commit changes with descriptive messages\n4. Push to the branch\n5. Open a pull request\n\n## Screenshots 📸\n\n#### Home view showing featured content\n\u003cimg src=\"screenshots/home.png\" alt=\"Home Interface\" style=\"border-radius: 10px; border: 2px solid #ccc; width: 500px;  /* Adjust width as needed */\"\u003e\n\n#### Compact bottom player controls \n\u003cimg src=\"screenshots/player.png\" alt=\"Player Interface\" style=\"border-radius: 4px; width: 500px;  /* Adjust width as needed */\"\u003e\n\n#### Search any music \n\u003cimg src=\"screenshots/search.png\" alt=\"Search Interface\" style=\"border-radius: 10px;/* Adjust width as needed */\"\u003e\n\n#### View play playlist, artist, releated songs\n\u003cimg src=\"screenshots/playlist.png\" alt=\"Playlist\" style=\"border-radius: 10px;/* Adjust width as needed */\"\u003e\n\n#### Elignent and real time lyrics \n\u003cimg src=\"screenshots/lyrics.png\" alt=\"Lyrics Interface\" style=\"border-radius: 10px;/* Adjust width as needed */\"\u003e\n\n#### Get your stats, usage reports, top song, artist, etc \n![]()\n\u003cimg src=\"screenshots/stats.png\" alt=\"Stats Interface\" style=\"border-radius: 10px;/* Adjust width as needed */\"\u003e\n\n#### Dark theme appearance\n\u003cimg src=\"screenshots/home_dark.png\" alt=\"Dark Theme\" style=\"border-radius: 10px;/* Adjust width as needed */\"\u003e\n\n\n## Support ❤️\nIf you find this project useful, please consider:\n- ⭐ Starring the repository\n- 🐛 Reporting issues\n- 💡 Suggesting new features\n- 🖋️ Writing documentation\n\n---\n**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.\n\n**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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdontknow492%2Fbeatroot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdontknow492%2Fbeatroot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdontknow492%2Fbeatroot/lists"}