A modern, feature-rich music streaming and management application built with Python, Flask, and PyWebview. Stream music from YouTube, manage playlists, download tracks, and enjoy an intuitive desktop experience.
- π Smart Search - Search and discover music from YouTube with real-time results
- π§ High-Quality Streaming - Stream audio in the best available format
- π₯ Download Manager - Download your favorite tracks for offline listening
- π Playlist Management - Create, organize, and manage multiple playlists
- π¨ Theme Customization - Multiple theme options (Sunset, and more)
- πΎ Local Playback - Play downloaded music files directly from your device
- βοΈ Configuration - Customize download paths, storage locations, and preferences
- π Update Checker - Automatic detection of new app versions
- OS: Windows, macOS, or Linux
- Python: 3.10 or higher
- RAM: Minimum 2GB (4GB recommended)
- Disk: 500MB for application and cache
- Flask - Web framework
- PyWebview - Desktop UI framework
- yt-dlp - YouTube audio extraction
- Requests - HTTP client library
-
Clone the Repository
git clone https://github.com/thecrewx/puslemusic.git cd puslemusic -
Install Python Dependencies
pip install -r requirements.txt
-
Run the Application
python app.py
Download the latest .pkg.tar.zst package from Releases and install:
sudo pacman -U PulseMusic_Linux_arch.pkg.tar.zst
pulsemusicsudo dpkg -i PulseMusic_Linux.deb
pulsemusicsudo rpm -i PulseMusic_Linux.rpm
pulsemusic-
Launch the Application
- Run
python app.pyor launch from your application menu
- Run
-
Search for Music
- Enter a song name, artist, or keyword in the search bar
- Results appear instantly with thumbnails and duration
-
Stream or Download
- Click the play button to stream
- Click download to save offline
-
Manage Playlists
- Create new playlists from the sidebar
- Add songs to playlists by clicking the "Add" button
- Organize your music collection
-
Configure Settings
- Access settings to change themes
- Customize download location
- Adjust playback preferences
puslemusic/
βββ app.py # Main application file
βββ requirements.txt # Python dependencies
βββ templates/
β βββ index.html # Web UI template
βββ static/
β βββ css/ # Stylesheets
β βββ js/ # JavaScript files
β βββ assets/ # Images and icons
βββ .github/
βββ workflows/
βββ build.yml # CI/CD pipeline
PulseMusic stores configuration in your system's application data directory:
- Windows:
%APPDATA%\PulseMusic\config.json - Linux:
~/.config/PulseMusic/config.json(or equivalent) - macOS:
~/Library/Application Support/PulseMusic/config.json
{
"theme": "sunset",
"playlist_path": "/path/to/playlists",
"download_path": "/path/to/downloads"
}PulseMusic supports multiple theme options:
- Sunset - Warm orange and red tones (Default)
- More themes coming soon!
All downloaded files are stored in your configured download directory and can be:
- Played back offline
- Managed through the Downloads tab
- Deleted individually or in batch
- Organized in playlists
Supported formats:
.webm.m4a.mp3.opus.wav
- Ensure Python 3.10+ is installed
- Verify all dependencies:
pip install -r requirements.txt - Check that port 5001 is available
- Check your internet connection
- Verify YouTube is accessible in your region
- Try searching with different keywords
- Ensure sufficient disk space
- Check download directory permissions
- Verify YouTube video is available for streaming
- The app automatically selects the best available format
- YouTube availability varies by region and video
- Some videos may not have high-quality audio
PulseMusic checks for updates on startup. When a new version is available:
- A notification appears in the app
- Click to visit the releases page
- Download and install the latest version
./build.sh arch./build.sh debianpyinstaller --noconfirm --onefile --windowed \
--add-data "templates:templates" \
--add-data "static:static" \
--name "PulseMusic" app.pyGET /api/search?q=query
Returns list of matching songs with metadata
GET /api/stream?id=videoId
Returns streaming URL for direct playback
POST /api/download
{
"videoId": "...",
"title": "Song Title",
"artists": "Artist Name"
}
GET /api/playlists # List all playlists
POST /api/playlists # Create playlist
POST /api/playlists/<name>/add # Add song
DELETE /api/playlists/<name>/remove # Remove song
Contributions are welcome! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
PulseMusic is designed for personal, non-commercial use. Users are responsible for ensuring they comply with:
- YouTube's Terms of Service
- Local copyright laws
- Audio streaming service agreements
The developers are not responsible for misuse of this application or copyright infringement.
- PyWebView - Desktop application framework
- Flask - Web server
- yt-dlp - YouTube media extraction
- Community Contributors - Your feedback and contributions
For issues, feature requests, or questions:
- Open an Issue
- Check Discussions
- Review Release Notes
- Add Spotify integration
- Implement lyrics display
- Add equalizer
- Multi-language support
- Mobile app version
- Cloud sync for playlists
- Advanced search filters
- Dark mode improvements
Made with β€οΈ by thecrewx
β If you find PulseMusic helpful, please consider giving it a star!