A feature-rich music player application with playlist management, playback controls, song information display, volume and progress tracking, Discord integration, and more.
MIT License
License • Contributing • Gallery • Installation • Troubleshooting • Configuration • Core Features • User Interface • Shortcuts • Logging • Playlist Maker • Usage
A feature-rich music player application with playlist management, playback controls, song information display, volume and progress tracking, Discord integration, and more.
Playlists Management:
Music Playback Controls:
Song Information:
Volume Control:
Progress Tracking:
Discord Integration:
Key Bindings:
External Actions:
Accent Color:
automatic
value for the colorization_color
in the config.json file.your_hex_color
value for the colorization_color
in the config.json file.Playlists and Songs Display:
Controls and Layouts:
Dialogs:
Delete
key to remove it from the list.
Delete
key to remove it from the playlist.Media Play/Pause
(FN + F7
) key to toggle play/pause.Media Next
(FN + F6
) key to skip to the next track.Media Previous
(FN + F5
) key to return to the previous track.The PlaylistMaker
class provides a user-friendly interface for creating and managing playlists. It allows users to select folders containing songs, add songs manually, and save playlists in JSON format.
Select Folder:
Add Songs Manually:
Save Playlist:
Open Existing Playlist:
Edit and Delete Songs:
For automatic recognition, the song files in the selected folder should follow this naming scheme:
Artist - Title [YouTube ID].mp3
Example(s):
Artist - Title [dQw4w9WgXcQ].mp3
Artist (feat. Artist) - Title (Bass Boosted) [dQw4w9WgXcQ].mp3
{
"playlist_name": "default",
"playlist_large_image_key":"https://i.pinimg.com/236x/42/43/03/424303bef006eb35803ae00505248d7a.jpg",
"song_count": 2,
"songs": [
{
"artist": "Artist 1",
"title": "Title 1",
"youtube_id": "dQw4w9WgXcQ",
"path": "C:\\Users\\USER\\Music\\FOLDER\\Artist 1 - Title 1 [dQw4w9WgXcQ].mp3",
"playlist": "default",
"album": "Album 1",
"genre": "Genre 2",
"picture_path": "C:\\Users\\USER\\Music\\FOLDER\\picture.jpg",
"picture_link":"link to the picture (for rich presence)"
},
{
"artist": "Artist 2",
"title": "Title 2",
"youtube_id": "dQw4w9WgXcQ",
"path": "C:\\Users\\USER\\Music\\FOLDER\\Artist 2 - Title 2 [dQw4w9WgXcQ].mp3",
"playlist": "default",
"album": "Album 2",
"genre": "Genre 2",
"picture_path": "C:\\Users\\USER\\Music\\FOLDER\\picture.jpg",
"picture_link":"link to the picture (for rich presence)"
}
]
}
Clone the repository:
git clone https://github.com/vorlie/IotaPlayer.git
Navigate to the project directory:
cd IotaPlayer
Make virtual environment:
python -m venv venv
./venv/Scripts/activate
Install the required dependencies: (To install using git, you must install Git.)
py -m pip install PyQt5==5.15.10
py -m pip install pygame==2.6.0
py -m pip install git+https://github.com/qwertyquerty/pypresence.git@master
py -m pip install mutagen==1.47.0
py -m pip install pynput==1.7.7
py -m pip install matplotlib
py -m pip install git+https://github.com/vorlie/PyQtDarkTheme.git@main --ignore-requires-python
Ensure you have the necessary environment variables and configuration files:
config.json
file with necessary configuration details.
1150680286649143356
.Building from source using pyinstaller:
If planning to build from source.
pip -m install pyinstaller==6.6.0
pyinstaller IotaPlayerWIN.spec
If you want console output:
console
value to True
in the IotaPlayerWIN.spec
file. If you decide to leave it as False
, then be aware of how PyInstaller works, it can trigger your anti virus.
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='IotaPlayer',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['icon.ico'],
)
Run the application:
python main.py
or use the executable you built in the previous step.
Control the application:
Create/Edit Playlists:
Discord Integration:
With the settings page added, you can change most of the settings directly from the application.
config.json
: Place your configuration settings here. Example:
{
"connect_to_discord": true, # disable or enable the RPC
"discord_client_id": "1150680286649143356",
"large_image_key": "default_image", # image key or image link
"use_playing_status": false, # if false, it will use listening type
"root_playlist_folder": "playlists", # path to the folder
"default_playlist": "default", # name of the default playlist
"colorization_color": "automatic", # hex color or leave it as it is, it will use system accent color
"volume_percantage": 100 # integer value for volume percentage (0-100)
}
Logging Configuration:
musicPlayer.py
there are commented logging configurations. Uncomment them to use them.
combined_app.log
for application and discord logs.Ensure all dependencies are installed: Verify the installation of all required packages.
PyQt5==5.15.10
pygame==2.6.0
git+https://github.com/qwertyquerty/pypresence.git@master
mutagen==1.47.0
pynput==1.7.7
git+https://github.com/vorlie/PyQtDarkTheme.git@main
Check Discord connection: Ensure your Discord client ID is correct and that you are connected to Discord.
Review logs:
Check combined_app.log
for detailed logging information if issues arise.
This project is licensed under the MIT License. See the LICENSE file for details.