Features • Screenshots • Tech Stack • Architecture • Installation • How It Works • License
- Personal Music Library - Browse and play Billboard's top tracks
- AI-Powered Recommendations - Personalized song suggestions that improve as you listen
- User Authentication - Create an account and sign in to access your personalized content
- Cross-Device Sync - Your listening history and preferences follow you across devices
- Federated Learning - Your listening data is securely stored and processed
- Billboard Hot 100 Integration - Automatically fetch the latest chart-toppers
- YouTube Integration - Download high-quality audio from official music videos
- Beautiful UI/UX - Modern, responsive design with intuitive controls
Groovy's login page
Groovy's main interface with album cover display and music player
Personalized recommendations improve as you listen to more music
🎵 Groovy
│
├── 📂 assets/ # Assets directory
│ ├── 📂 imgs/ # Album artwork images
│ ├── 📂 meta/ # Song metadata JSON files
│ └── 📂 music/ # MP3 audio files
│
├── 📄 Groovy.py # Main application UI
├── 📄 login.py # Authentication interface
├── 📄 firebase_config.py # Firebase configuration
├── 📄 rec.py # Recommendation system
├── 📄 fetch_hot_100.py # Billboard scraper
├── 📄 download_music.py # YouTube downloader
├── 📄 clear_db_assets.py # Utility to reset app
├── 📄 run_groovy.py # Application launcher
├── 📄 .env.example # Environment variables template
└── 📄 requirements.txt # Dependencies
-
Clone the repository
git clone https://github.com/rahulrao9/Groovy.git cd groovy -
Install dependencies
pip install -r requirements.txt
-
Set up environment variables
cp .env.example .env
Edit the
.envfile with your Firebase credentials and other configuration -
Fetch Billboard Hot 100 data
python fetch_hot_100.py
-
Download music from YouTube
python download_music.py
-
Launch the app
python run_groovy.py
or
streamlit run Groovy.py
-
Open the app in your browser
http://localhost:8501
Groovy uses a sophisticated recommendation engine that combines multiple approaches:
-
Content-Based Filtering
- Analyzes artists, song features, and tags
- Creates embeddings to find similar music
-
Play Count Analysis
- Tracks which songs you play most frequently
- Builds an understanding of your explicit preferences
-
Artist Affinity Modeling
- Calculates your preference for specific artists
- Recommends new songs from artists you enjoy
-
Genre/Tag Preference Learning
- Identifies music genres you prefer
- Suggests similar music in your favorite styles
-
Hybrid Scoring
- Combines all these signals with global popularity metrics
- Produces personalized recommendations that improve over time
The recommendation model updates every 10 plays, adapting to your changing preferences.
Groovy uses Firebase Authentication to:
- Allow users to create accounts and sign in
- Securely store and sync listening history across devices
- Provide personalized recommendations that follow users wherever they go
User data is securely stored in Firebase and processed according to best practices. Authentication ensures that your listening habits are private and only accessible to you.
The recommendation system works by:
-
Preprocessing
- Artist name normalization and splitting
- Tag extraction and processing
- Numerical feature normalization
-
Vectorization
- Transforms musical attributes into mathematical spaces
- Calculates similarities between songs
-
Multi-factor Scoring
recommendation_score = ( count_normalized * 0.35 + # Play count engagement_ratio * 0.1 + # How engaging the content is artist_affinity_score * 0.15 + # Artist preference tag_affinity_score * 0.15 + # Genre/tag preference collaborative_score * 0.15 + # Similar users' preferences popularity_score * 0.1 # Global popularity ) * (1 + recency_factor * 0.5) # Recency boost
- User accounts and profiles
- Multi-device sync
- Social sharing features
- Advanced visualization of listening habits
- Voice-activated controls
- Expanded music metadata
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by Rahul Rao
