Please use the latest Version
babTomaMusic is a Python-based desktop music application created by Tamino1230. It provides an easy-to-use interface for managing playlists, downloading songs, and integrating with Discord Rich Presence. The application also includes features like hotkeys, sleep timers, and song information retrieval.
Whats New <--- Press here
- Music Playback: Play, pause, stop, and skip songs in your playlist.
- Playlist Management: Load songs from folders and manage playlists easily.
- Song Downloading: Download songs directly from YouTube or other supported platforms.
- Discord Rich Presence: Show your current song and playback status on Discord.
- Hotkeys: Control playback using customizable hotkeys.
- Sleep Timer: Automatically stop playback after a specified time.
- Song Information: Fetch song details and lyrics from online sources.
- Customizable Settings: Adjust volume, shuffle, repeat, and more.
- Error Handling: Debugging tools to identify and resolve issues.
- Python 3.8 or higher
- FFmpeg (included in the project) (Install automaticly in setup.bat)
- Required Python libraries: (Install automaticly in setup.bat)
mutagen yt-dlp pypresence pygame keyboard requests
- Download the project as a ZIP file from the GitHub repository.
- Extract the ZIP file to a folder of your choice.
- Run the
setup.batfile to install dependencies. - After setup, run the
click and extract me.batfile. - Launch the application by running
main.py.
The application settings can be customized in the config.py file. Below are the key configuration options:
- Background Color:
bgcolor(default:"light blue") - Default Folder:
default_folder(default:"download_folder") - Max Volume:
max_volume(default:200) - Sleep Timer:
sleeptimer(default:True) - Hotkeys: Enable or disable hotkeys using
hotkeys_active.
For more details, refer to the comments in the config.py file.
- Load Songs: Use the "Load Songs" option in the menu to load songs from a folder.
- Play Songs: Double-click a song in the playlist or use the playback controls.
- Download Songs: Enter a YouTube URL in the input field and click "Download MP3".
- Discord Integration: Enable or disable Discord Rich Presence using the toggle button.
- Sleep Timer: Start or cancel the sleep timer from the "Extra Functions" menu.
- Song Information: Fetch song details and lyrics using the "Info and Lyrics" option.
- Share: Share your current song on Twitter or other platforms.
The wrapped.py script is a standalone feature inspired by Spotify Wrapped, designed specifically for the babTomaMusic (btM) app. It provides users with a personalized summary of their music listening habits, offering insights into their most-played songs, total listening time, and more.
Example Output:
Your Top 10 Songs:
1. Song A - 669 Minuten
2. Song B - 555 Minuten
...
Total Playtime:
112 hours and 9 minutes
Songs Played Less Than 5 Minutes (Top 5):
- Song X (4 Minuten)
...
Your Least Played 5 Songs:
1. Song Y - 0 Minuten
Unique Songs Played:
269 unique songs
This feature is now part of a dedicated repository: bTM-Wrapped.
The following hotkeys are available (if enabled in config.py):
- Pause/Unpause:
Ctrl+F6 - Next Song:
Ctrl+F7 - Previous Song:
Ctrl+F5 - Start Sleep Mode:
Shift+Ctrl+9
- Incorrect Song Display: Sometimes the wrong song is displayed in the playlist.
- Python Installation in Setup: The
setup.batfile may fail to install Python. Restart the setup if this occurs. Please Install Python Manually.
This project is licensed under the MIT License. See the LICENSE file for more details.
For questions, feedback, or support, contact Tamino1230:
- Discord: @tamino1230
- GitHub: babTomaMusic Repository
- Twitter: @NukeTamino
Find the source code and updates at: https://github.com/Tamino1230/babTomaMusic
These are the main features and UI improvements added recently:
-
Songplaytimes
- Fixed Song playtimes.
-
Virtual Playlists
- Virtual playlists are stored as JSON files in the
_virtual_playlistsfolder. Each JSON contains playlist metadata (name, thumbnail, items). - You can create, load, save, rename and delete virtual playlists. Missing files inside a virtual playlist are skipped when loading.
- Thumbnails for virtual playlists are supported: choose or create a thumbnail and it will be copied into the
_virtual_playlistsfolder.
- Virtual playlists are stored as JSON files in the
-
Right-click and Context Actions
- Right-click songs in the main list to "Add to Virtual Playlist" and choose an existing virtual playlist or create a new one.
- When a virtual playlist is loaded, you can right-click items to "Remove from virtual playlist" (edits the JSON and updates the UI).
-
Manage Virtual Playlists dialog
- A dedicated manager (non-resizable) lets you browse virtual playlists, add/remove/rename items, set a thumbnail, and save changes.
- The manager shows a single thumbnail for the currently-selected virtual playlist placed directly under the control buttons.
- Rename flow includes an option to rename the underlying JSON file as well.
-
Main UI improvements
- Top-right search box: search the main song list, select and scroll to the first match.
- Multi-selection enabled for the main song list (select multiple tracks). Double-click plays the item under the cursor.
- Shuffle toggling now preserves the currently-playing file so your playback doesn't jump unexpectedly when switching shuffle on/off.
-
Discord Rich Presence
- When a virtual playlist is loaded the Discord status includes the playlist name (shown as "Playlist: {name} (virtual playlist) // Volume: xx%"), and normal folder loads clear the virtual playlist context.
-
Playback and reliability
- The Pause/Unpause UI now reliably reflects playback state via an
update_pause_button()helper so the button text matches whether audio is playing or paused. - Playtime tracking and JSON writes (playtimes and virtual-playlist files) use safe saving to reduce corruption risk.
- The Pause/Unpause UI now reliably reflects playback state via an
-
Misc
- Thumbnails support via Pillow (see
requirements.txt). - Various bug fixes and polish: UI ordering fixes, defensive guards around playlist indices, improved error resilience.
- Thumbnails support via Pillow (see