Skip to content

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.

Notifications You must be signed in to change notification settings

dontknow492/BeatRoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

27 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

BeatRoot- Modern Music Player Application

Python Qt Fluent Design Asyncio
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

pip install PySide6 qfluentwidgets ytmusicapi loguru mutagen python-vlc ytdlp qsaync, aiosqlite

Repository Links

Getting Started

  1. Clone the repository:
git clone https://github.com/dontknow492/BeatRoot.git
cd musify
  1. Install requirements:
pip install -r requirements.txt
  1. Run the application:
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:

{
  "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 layout
  2. Music Playback

    • Double-click tracks to play
    • Use bottom player controls
    • Right-click player for advanced options
  3. Search

    • Global search bar in header
    • Supports artists/albums/tracks
    • Instant results with previews
  4. 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:
class NewInterface(ViewInterface):
    def __init__(self, parent=None):
        super().__init__(parent)
        # Add custom components
  1. Register in navigation:
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

Home Interface

Compact bottom player controls

Player Interface

Search any music

Search Interface

View play playlist, artist, releated songs

Playlist

Elignent and real time lyrics

Lyrics Interface

Get your stats, usage reports, top song, artist, etc

Stats Interface

Dark theme appearance

Dark Theme

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.

About

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published