A personal project born from the need for a lightweight music player with robust WebDAV integration, designed to seamlessly sync with cloud storage services.
A powerful, modern music player with support for local and cloud-based music libraries.
✨ Unified Music Library
- 🎵 Local files and folders
- ☁️ Cloud storage via WebDAV (Nextcloud, OwnCloud, etc.)
- 🔍 Search across local and cloud
🎧 Playback & Control
- 📋 Playlists (create, save, load, edit)
- 🔀 Shuffle and 🔁 Repeat
- 🎚️ Volume, mute, seeking with progress
- ⌨️ System media keys via MPRIS (Play/Pause, Next, Previous, Stop)
- 🧰 Enhanced tray menu: Now Playing, Play/Pause, Next/Prev, Stop, Shuffle, Repeat, Mute, inline Volume slider, Seek ±10s, Show/Hide Window, Open Current Location, Settings, Web Panel, Quit
- 🌐 Web Interface (LAN): real-time remote control from any device
☁️ Cloud Integration
- 🌐 WebDAV (Nextcloud, OwnCloud, etc.) with folder scanning and cover art
🎨 Modern UI
- 🌙 Dark theme with sleek purple-blue accents
- 📱 Responsive layout
- Python 3.x
- PySide6
- Additional libraries (see below)
- Clone the repository:
git clone https://github.com/phantompixeldev/HiCloudMP.git
cd HiCloudMP- (Recommended) Create and activate a virtual environment:
python -m venv venv
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate- Install Python dependencies:
pip install -r requirements.txt- Linux desktop (for MPRIS/media keys): install system packages if missing
- Arch/Endeavour/Manjaro:
sudo pacman -S python-gobject
- Debian/Ubuntu:
sudo apt-get install python3-gi gir1.2-glib-2.0
- Run the player:
python main.pyHiCloud MP now includes a powerful web interface for remote control from any device on your local network!
- 🎛️ Full playback control (play, pause, next, previous, stop)
- 🔊 Volume control
- 📋 Playlist view (see and play any track)
- ⏩ Seek bar (see and seek track progress)
- 🔀 Shuffle and 🔁 Repeat toggles
- ⚡ Real-time updates (instant sync between desktop and all web clients)
- 📱 Multi-device: Control from your phone, tablet, or another PC
- Open HiCloud MP and go to Settings
- Enable Web Interface (LAN control)
- On any device/browser in your LAN, go to:
http://<your-pc-ip>:5000
(replace<your-pc-ip>with your computer's local IP address) - Enjoy full remote control of your music player!
- Click "Add Folder" or "Add Files" to add music to your library
- Browse to select your music files or folders
- Choose whether to add to your library or directly to a playlist
- Click "Add Cloud" to add a WebDAV storage account
- Enter your WebDAV server details (URL, username, password)
- Click "Scan Cloud" to discover your music files
- Add tracks to the current queue
- Click "New Playlist" or use the dropdown menu
- Enter a name for your playlist
- Click "Save Playlist"
- Use the transport controls (Play/Pause, Next, Previous, Stop)
- Adjust volume with the slider or the tray menu
- Use your keyboard's media keys (via MPRIS) on supported desktops
- Right-click the tray icon to access controls and actions:
- Now Playing, Show/Hide Window
- Play/Pause, Previous, Next, Stop, Seek ±10s
- Shuffle, Repeat, Mute, Volume slider
- Open Current Location, Settings, Web Panel, Quit
With the app running:
playerctl -l # list detected players
playerctl -p hicloudmp status
playerctl -p hicloudmp play-pause
playerctl -p hicloudmp next
playerctl -p hicloudmp metadataThe player stores settings in the following files:
mediafolders.json- List of local media folderscloudfiles.json- Cloud account settings and cached file listsplaylists.json- Saved playlists
- MP3 (.mp3)
- FLAC (.flac)
- WAV (.wav)
- OGG (.ogg)
- AAC (.aac)
- M4A (.m4a)
- WMA (.wma)
-
Media keys not working but playerctl works:
- Close other media apps (e.g., Firefox, Spotify) so your desktop routes keys to HiCloud MP.
- Ensure the player is active/playing. Some desktops send keys to the last active MPRIS player.
- A desktop file can help desktops prefer your player (request one if you need it installed).
-
playerctl cannot find the player:
- Start the app and re-run
playerctl -l. Look forhicloudmp. - Check that your session has a DBus user bus (normal on desktop Linux).
- Start the app and re-run
-
Missing DBus/PyGObject on Linux:
- Install
python-gobject(Arch) orpython3-gi(Debian/Ubuntu) as shown above.
- Install
-
Web interface not starting:
- Ensure Flask and Flask-SocketIO are installed (
pip install -r requirements.txt). - Enable it in Settings, then open the Web Panel from the menu.
- Ensure Flask and Flask-SocketIO are installed (
MIT License
Contributions are welcome! Please feel free to submit a Pull Request.