Your Private YouTube Collection
Read this in English | Español
TubeVault is a static webpage that acts as a media server, allowing you to access and organize your YouTube videos in an interface similar to services like Plex or Jellyfin. With TubeVault, you can create your own collection of movies, series, and personal videos, accessing them easily and quickly.
🎯 Smart Organization
- Movies, Series and Personal Videos
- Search by title, director, or actors
- Rich metadata (director, actors, synopsis)
🎨 Modern Interface
- Responsive design
- TMDB posters
- Streaming-style interface
💾 Optimization
- Local cache
- Lazy image loading
- Automatic updates
Python
- Python 3.x is required
- Download from python.org if not installed
- Verify installation with
python3 --version
- Go to Google Cloud Console
- Create a new project
- Enable YouTube Data API v3
- In the "Credentials" panel:
- Create an API Key
- Configure OAuth 2.0:
- Create an OAuth 2.0 Client ID
- In "Authorized JavaScript origins" add:
http://localhost:8000 http://127.0.0.1:8000
- In "Authorized redirect URIs" add:
http://localhost:8000/oauth2callback http://127.0.0.1:8000/oauth2callback
- Create an account at TMDB
- Go to API settings
- Request an API Key
- Clone the repository
- Rename
scripts/config.example.js
toscripts/config.js
- In
scripts/config.js
, replace the values with your keys:
const CONFIG = {
youtubeApiKey: 'YOUR_YOUTUBE_API_KEY', // YouTube API Key from Google Cloud Console
oauthClientId: 'YOUR_OAUTH_CLIENT_ID', // OAuth 2.0 Client ID from Google Cloud Console
channelId: 'YOUR_CHANNEL_ID', // Your YouTube channel ID
tmdbApiKey: 'YOUR_TMDB_API_KEY', // TMDB API Key
updateInterval: 3600000, // Update interval in ms
unlistedVideos: [] // No need to modify
};
- Open a terminal in the project directory
- Run the command:
python3 -m http.server 8000
- Open your browser and go to
http://localhost:8000
For TubeVault to properly process your videos, use this format in the description:
[DIRECTOR: Director Name]
[ACTORS: Actor 1, Actor 2, Actor 3]
[SYNOPSIS: Movie description]
[SEASON: 1]
[UNIT: 3]
[EPISODE: 5]
[SYNOPSIS: Episode description]
[UNIT: 2]
[EPISODE: 1]
[SYNOPSIS: Lesson description]
- Tags must be in UPPERCASE and between brackets
- Synopsis can contain multiple lines
- For series and courses:
- SEASON is optional
- UNIT groups episodes into sections
- EPISODE determines playback order
- YouTube API has a daily limit of 10,000 units
- Use with your own or authorized content
- Private videos update automatically
This project was developed with assistance from Claude (Anthropic). As such:
- Code can be optimized
- Better practices may exist
- Improvements and suggestions are welcome
If you find this project useful and want to support its development:
Your support helps maintain and improve TubeVault!
Contributions are welcome!
- 🐛 Report bugs
- 💡 Suggest improvements
- 🔧 Submit pull requests
MIT License - see LICENSE.md
This project is for personal and educational use. Do not encourage copyright infringement.
Made with ❤️ using YouTube Data API and TMDB