update readme
This commit is contained in:
parent
970c569395
commit
6f2ea17d3d
250
README.md
250
README.md
@ -1,253 +1,83 @@
|
|||||||
# Video Inspiration Finder 🎯
|
# Video Inspiration Finder
|
||||||
|
|
||||||
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.
|
AI-powered YouTube video recommendation system that learns your preferences.
|
||||||
|
|
||||||

|
## Quick Start
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
## 🌟 Features
|
|
||||||
|
|
||||||
- 🔍 **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
|
|
||||||
|
|
||||||
## 🚀 Quick Start
|
|
||||||
|
|
||||||
### Option 1: Web Dashboard (Recommended)
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/yourusername/video-idea-finder-algorithm.git
|
|
||||||
cd video-idea-finder-algorithm
|
|
||||||
./setup.sh
|
|
||||||
# Select option 1 for Dashboard
|
|
||||||
```
|
|
||||||
|
|
||||||
### Option 2: Command Line Interface
|
|
||||||
```bash
|
```bash
|
||||||
./setup.sh
|
./setup.sh
|
||||||
# Select option 2 for CLI mode
|
|
||||||
```
|
```
|
||||||
|
|
||||||
The setup script will:
|
Select option 1 for web dashboard (recommended).
|
||||||
1. Create a Python virtual environment
|
|
||||||
2. Install all dependencies
|
|
||||||
3. Help you configure your YouTube API key
|
|
||||||
4. Launch your preferred interface
|
|
||||||
|
|
||||||
## 📋 Prerequisites
|
## Requirements
|
||||||
|
|
||||||
- **Python 3.7+**
|
- **Python 3.7+**
|
||||||
- **YouTube Data API v3 Key** (free from [Google Cloud Console](https://console.cloud.google.com/))
|
- **YouTube Data API v3 Key** from [Google Cloud Console](https://console.cloud.google.com/)
|
||||||
|
|
||||||
## ⚙️ Configuration
|
## Setup
|
||||||
|
|
||||||
1. **Get YouTube API Key**:
|
1. **Get YouTube API Key**:
|
||||||
- Visit [Google Cloud Console](https://console.cloud.google.com/)
|
- Visit [Google Cloud Console](https://console.cloud.google.com/)
|
||||||
- Create a project or select existing one
|
- Create project and enable YouTube Data API v3
|
||||||
- Enable YouTube Data API v3
|
- Create API key
|
||||||
- Create credentials (API key)
|
|
||||||
|
|
||||||
2. **Set up environment**:
|
2. **Configure environment**:
|
||||||
```bash
|
```bash
|
||||||
# Copy the example environment file
|
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
|
# Edit .env and add your API key:
|
||||||
# Edit .env and add your API key
|
# YOUTUBE_API_KEY=your_actual_api_key_here
|
||||||
YOUTUBE_API_KEY=your_actual_api_key_here
|
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Add your search queries**:
|
3. **Run setup**:
|
||||||
- Edit `src/youtube/search.py` in the `get_coding_search_queries()` function
|
```bash
|
||||||
- Add search terms relevant to your interests
|
./setup.sh
|
||||||
- Example: `"python machine learning"`, `"react tutorial"`, etc.
|
```
|
||||||
|
|
||||||
## 🏗️ Project Structure
|
## Available Commands
|
||||||
|
|
||||||
```
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🧠 How the AI Works
|
|
||||||
|
|
||||||
### Feature Engineering
|
|
||||||
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
|
|
||||||
|
|
||||||
### Machine Learning Pipeline
|
|
||||||
1. **Data Collection**: YouTube API provides video metadata
|
|
||||||
2. **Feature Extraction**: Convert raw video data into numerical features
|
|
||||||
3. **User Feedback**: Collect like/dislike ratings with optional notes
|
|
||||||
4. **Model Training**: RandomForest classifier with 100 trees
|
|
||||||
5. **Prediction**: Generate confidence scores for new videos
|
|
||||||
|
|
||||||
### Learning Process
|
|
||||||
- **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
|
|
||||||
|
|
||||||
## 🖥️ Available Commands
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Full interactive setup
|
# Interactive setup menu
|
||||||
./setup.sh
|
./setup.sh
|
||||||
|
|
||||||
# CLI-only mode
|
|
||||||
python main.py
|
|
||||||
|
|
||||||
# Web dashboard
|
# Web dashboard
|
||||||
python run_dashboard.py
|
python3 dashboard_api.py
|
||||||
|
|
||||||
# Search for additional videos
|
# CLI mode
|
||||||
python search_more_videos.py
|
python3 main.py
|
||||||
|
|
||||||
# Start API server directly
|
# Search for more videos
|
||||||
python dashboard_api.py
|
python3 search_more_videos.py
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🎨 Dashboard Features
|
## Web Dashboard
|
||||||
|
|
||||||
- **YouTube-like Interface**: Familiar grid layout with thumbnails
|
- Access at: http://localhost:5001
|
||||||
- **AI Confidence Scores**: See how confident the AI is about each recommendation
|
- YouTube-like interface with AI confidence scores
|
||||||
- **Real-time Feedback**: Rate videos with instant visual feedback
|
- Rate videos to train the AI model
|
||||||
- **Model Status**: Track learning progress and training status
|
|
||||||
- **Liked Videos**: Review your previously liked videos
|
|
||||||
- **Responsive Design**: Perfect on any screen size
|
|
||||||
|
|
||||||
## 🔧 Customization
|
## Manual Setup
|
||||||
|
|
||||||
### Search Queries
|
If you prefer manual setup:
|
||||||
Edit the search queries in `src/youtube/search.py`:
|
|
||||||
```python
|
|
||||||
def get_coding_search_queries() -> List[str]:
|
|
||||||
return [
|
|
||||||
"python machine learning tutorial",
|
|
||||||
"javascript react project",
|
|
||||||
"web development 2024",
|
|
||||||
# Add your own search terms
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
### ML Model Parameters
|
|
||||||
Modify model settings in `src/ml/model_training.py`:
|
|
||||||
```python
|
|
||||||
model = RandomForestClassifier(
|
|
||||||
n_estimators=100, # Number of trees
|
|
||||||
max_depth=10, # Tree depth
|
|
||||||
min_samples_split=5, # Minimum samples for split
|
|
||||||
random_state=42
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🤝 Contributing
|
|
||||||
|
|
||||||
We welcome contributions! Here's how you can help:
|
|
||||||
|
|
||||||
1. **Fork the repository**
|
|
||||||
2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
|
|
||||||
3. **Make your changes** and test thoroughly
|
|
||||||
4. **Commit your changes**: `git commit -m 'Add amazing feature'`
|
|
||||||
5. **Push to the branch**: `git push origin feature/amazing-feature`
|
|
||||||
6. **Open a Pull Request**
|
|
||||||
|
|
||||||
### Development Setup
|
|
||||||
```bash
|
```bash
|
||||||
# Clone your fork
|
# Create virtual environment
|
||||||
git clone https://github.com/yourusername/video-idea-finder-algorithm.git
|
python3 -m venv venv
|
||||||
|
source venv/bin/activate
|
||||||
# Create development environment
|
|
||||||
python -m venv venv
|
|
||||||
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
pip install -r requirements.txt
|
pip install requests pandas scikit-learn numpy python-dotenv flask flask-cors
|
||||||
|
|
||||||
# Run tests (if available)
|
# Run dashboard
|
||||||
python -m pytest
|
python3 dashboard_api.py
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📝 License
|
## Troubleshooting
|
||||||
|
|
||||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
**Python not found**: Use `python3` instead of `python`
|
||||||
|
|
||||||
## 🙏 Acknowledgments
|
|
||||||
|
|
||||||
- **YouTube Data API v3** for video data
|
|
||||||
- **scikit-learn** for machine learning capabilities
|
|
||||||
- **Flask** for the web framework
|
|
||||||
- **SQLite** for local data storage
|
|
||||||
|
|
||||||
## 📚 Learn More
|
|
||||||
|
|
||||||
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!
|
|
||||||
|
|
||||||
## 🐛 Troubleshooting
|
|
||||||
|
|
||||||
### Common Issues
|
|
||||||
|
|
||||||
**API Key Issues**:
|
**API Key Issues**:
|
||||||
- Ensure your YouTube API key is valid and has quota remaining
|
- Ensure YouTube Data API v3 is enabled
|
||||||
- Check that YouTube Data API v3 is enabled in Google Cloud Console
|
- Check your API key has quota remaining
|
||||||
|
|
||||||
**Database Issues**:
|
**Database Issues**: Delete `video_inspiration.db` and run `./setup.sh` again
|
||||||
- Delete `video_inspiration.db` to reset the database
|
|
||||||
- Run `./setup.sh` again 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.py` if needed
|
|
||||||
|
|
||||||
### Need Help?
|
|
||||||
|
|
||||||
- 📧 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
|
|
||||||
Loading…
x
Reference in New Issue
Block a user