An intelligent YouTube video recommendation system that learns your preferences to suggest coding videos you'll love. Built with machine learning and featuring a beautiful web dashboard.
- π Smart YouTube Search: Automatically finds trending coding videos using configurable search queries
- π€ Machine Learning Recommendations: RandomForest model learns your preferences from ratings
- π Beautiful Web Dashboard: YouTube-like interface with AI confidence scores
- π Privacy First: All data stored locally in SQLite - no external tracking
- β‘ One-Command Setup: Get started with a single command
- π± Responsive Design: Works perfectly on desktop and mobile
- π― Real-time Learning: Model updates instantly as you rate more videos
git clone https://github.com/yourusername/video-idea-finder-algorithm.git
cd video-idea-finder-algorithm
./setup.sh
# Select option 1 for Dashboard./setup.sh
# Select option 2 for CLI modeThe setup script will:
- Create a Python virtual environment
- Install all dependencies
- Help you configure your YouTube API key
- Launch your preferred interface
- Python 3.7+
- YouTube Data API v3 Key (free from Google Cloud Console)
-
Get YouTube API Key:
- Visit Google Cloud Console
- Create a project or select existing one
- Enable YouTube Data API v3
- Create credentials (API key)
-
Set up environment:
# Copy the example environment file cp .env.example .env # Edit .env and add your API key YOUTUBE_API_KEY=your_actual_api_key_here
-
Add your search queries:
- Edit
src/youtube/search.pyin theget_coding_search_queries()function - Add search terms relevant to your interests
- Example:
"python machine learning","react tutorial", etc.
- Edit
video-idea-finder-algorithm/
βββ src/
β βββ database/ # SQLite database operations
β β βββ manager.py # Database setup and schema
β β βββ video_operations.py # Video data CRUD
β β βββ preference_operations.py # User ratings CRUD
β βββ youtube/ # YouTube API integration
β β βββ search.py # Video search functionality
β β βββ details.py # Video metadata retrieval
β β βββ utils.py # Helper functions
β βββ ml/ # Machine learning pipeline
β β βββ feature_extraction.py # Video feature engineering
β β βββ model_training.py # ML model management
β β βββ predictions.py # Recommendation engine
β βββ rating/ # Interactive rating system
β βββ display.py # Video information display
β βββ session.py # Rating session management
β βββ user_input.py # User interaction handling
βββ templates/ # Web dashboard frontend
β βββ dashboard.html # Single-page application
βββ main.py # CLI application entry point
βββ dashboard_api.py # Web API server
βββ run_dashboard.py # Dashboard launcher
βββ search_more_videos.py # Additional video search utility
βββ setup.sh # Automated setup script
βββ .env.example # Environment template
βββ README.md # This file
The system extracts 11 key features from each video:
- Content Features: Title length, description length, keyword presence
- Engagement Metrics: View count, like ratio, engagement score
- Semantic Analysis: Title sentiment, tutorial/beginner/AI keyword detection
- Behavioral Patterns: Time constraints, challenge keywords
- Data Collection: YouTube API provides video metadata
- Feature Extraction: Convert raw video data into numerical features
- User Feedback: Collect like/dislike ratings with optional notes
- Model Training: RandomForest classifier with 100 trees
- Prediction: Generate confidence scores for new videos
- Cold Start: Shows random videos until you have 10+ ratings
- Warm Start: AI model activates and provides personalized recommendations
- Continuous Learning: Model retrains after each new rating
# Full interactive setup
./setup.sh
# CLI-only mode
python main.py
# Web dashboard
python run_dashboard.py
# Search for additional videos
python search_more_videos.py
# Start API server directly
python dashboard_api.py- YouTube-like Interface: Familiar grid layout with thumbnails
- AI Confidence Scores: See how confident the AI is about each recommendation
- Real-time Feedback: Rate videos with instant visual feedback
- Model Status: Track learning progress and training status
- Liked Videos: Review your previously liked videos
- Responsive Design: Perfect on any screen size
Edit the search queries in src/youtube/search.py:
def get_coding_search_queries() -> List[str]:
return [
"python machine learning tutorial",
"javascript react project",
"web development 2024",
# Add your own search terms
]Modify model settings in src/ml/model_training.py:
model = RandomForestClassifier(
n_estimators=100, # Number of trees
max_depth=10, # Tree depth
min_samples_split=5, # Minimum samples for split
random_state=42
)We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and test thoroughly
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
# Clone your fork
git clone https://github.com/yourusername/video-idea-finder-algorithm.git
# Create development environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run tests (if available)
python -m pytestThis project is licensed under the MIT License - see the LICENSE file for details.
- YouTube Data API v3 for video data
- scikit-learn for machine learning capabilities
- Flask for the web framework
- SQLite for local data storage
This project demonstrates several key concepts:
- API Integration: YouTube Data API v3 usage
- Machine Learning: Feature engineering and model training
- Web Development: Flask API and responsive frontend
- Database Design: SQLite schema and operations
- DevOps: Environment management and deployment
Perfect for learning about ML-powered recommendation systems!
API Key Issues:
- Ensure your YouTube API key is valid and has quota remaining
- Check that YouTube Data API v3 is enabled in Google Cloud Console
Database Issues:
- Delete
video_inspiration.dbto reset the database - Run
./setup.shagain to reinitialize
Import Errors:
- Activate the virtual environment:
source venv/bin/activate - Reinstall dependencies:
pip install -r requirements.txt
Port Conflicts:
- Dashboard runs on port 5001 by default
- Change the port in
dashboard_api.pyif needed
- π§ Open an issue on GitHub
- π¬ Check existing issues for solutions
- π Review the troubleshooting section above
β Found this helpful? Give it a star! β
Built with β€οΈ for the coding community