Skip to content

Latest commit

 

History

History
74 lines (54 loc) · 2.26 KB

File metadata and controls

74 lines (54 loc) · 2.26 KB

My Music Player

A Python desktop music player with smart playlists, recommendations, metadata editing, and a polished GUI. Features include search, seek, keyboard shortcuts, playlist management, and machine learning–based song suggestions and playlist generation.


📦 Features

  • 🎵 Play music locally (.mp3, .wav, .flac, etc.)
  • 🔄 Seek, pause, stop, skip, and shuffle playback
  • 🎚️ Visual seek bar, playback status, and time indicators
  • 📁 Multiple playlists with add/remove support
  • 🧠 Auto-generated playlists via NLP and audio similarity
  • 💡 Real-time song recommendations
  • 🔍 Search and fuzzy match track names
  • ❤️ Like/dislike logging with play history tracking
  • ⌨️ Global hotkeys to play/pause (Ctrl+Shift+Z) and skip (Ctrl+Shift+X)
  • 🧾 Metadata extraction via mutagen
  • 📊 TF-IDF and Word2Vec NLP models for playlist and similarity inference

🚀 Getting Started

Create and activate a virtual environment

python -m venv venv
source venv/bin/activate        # macOS/Linux
venv\Scripts\activate           # Windows

Install dependencies

pip install -r requirements.txt

Run the app

python main.py "path/to/your/music/folder"

📂 Project Structure

.
├── main.py                  # Entry point
├── gui.py                   # Tkinter GUI and playback logic
├── audio_backend.py         # Audio control via pygame
├── history_manager.py       # Logs play, pause, like, dislike
├── metadata_manager.py      # Extracts metadata using mutagen
├── playlist_manager.py      # Generates playlists using NLP and audio similarity
├── recommendation.py        # Suggests similar songs using TF-IDF
└── history.csv              # Logs song usage with timestamps

🙋 Contributors

  • Dallin Stewart – Original developer and designer

📌 Notes

  • Uses pygame.mixer for playback (requires working audio system)
  • Some features (like NLP playlist generation) require downloading large models (e.g., Word2Vec)
  • Song metadata may be missing or inaccurate depending on file tagging
  • Works best on local music libraries with reasonably consistent filenames and tags