A full-stack web application that extracts and exports YouTube video transcripts as professionally formatted PDFs with real-time progress tracking. Named after the seeing stone from Tolkien's legendarium, Ithildin reveals the hidden text within videos.
Peyton Nowlin
๐ง Peytonn98@Gmail.com
๐ nowlinautomation.com
This application provides a seamless way to download YouTube video transcripts and convert them into polished PDF documents. Built with modern web technologies, it features a responsive UI with real-time WebSocket updates, async background processing, and an intuitive user experience.
- โก Real-Time Updates: WebSocket-powered progress tracking for instant feedback
- ๐ Async Processing: Non-blocking background tasks with FastAPI
- ๐ PDF Generation: Clean, professional PDF output with optional timestamps
- ๐จ Modern UI: Responsive Vue.js interface with dark theme and animations
- ๐ RESTful API: Well-structured API endpoints for easy integration
- ๐ฑ Mobile-Friendly: Fully responsive design for all devices
- FastAPI - High-performance async Python web framework
- Uvicorn - Lightning-fast ASGI server
- WebSockets - Real-time bidirectional communication
- Pydantic - Data validation and settings management
- Vue.js 3 - Progressive JavaScript framework
- Vanilla CSS - Custom styling with modern CSS features
- WebSocket API - Real-time progress updates
- youtube-transcript-api - YouTube transcript extraction
- FPDF - PDF document generation
Ithildin/
โโโ api/
โ โโโ main.py # FastAPI app & WebSocket manager
โ โโโ routes.py # API route handlers
โโโ models/
โ โโโ transcript_model.py # Business logic & PDF generation
โโโ frontend/
โ โโโ index.html # Vue.js SPA
โ โโโ app.js # Application logic
โ โโโ styles.css # UI styling
โโโ downloads/ # Generated PDF storage
โโโ requirements.txt # Python dependencies
โโโ run.py # Application entry point
- MVC Architecture: Separation of concerns with models, routes, and views
- WebSocket Manager: Singleton pattern for connection management
- Async/Await: Non-blocking I/O operations throughout
- REST API: Standardized HTTP methods and status codes
- Python 3.8 or higher
- pip (Python package manager)
-
Clone the repository
git clone https://github.com/PeytonNowlin/Ithildin.git cd Ithildin -
Install dependencies
pip install -r requirements.txt
-
Run the application
python run.py
Or use uvicorn directly:
uvicorn api.main:app --reload
-
Access the application
Navigate to
http://localhost:8000in your browser
- Enter YouTube URL - Paste any valid YouTube video link
- Configure Options - Choose whether to include timestamps
- Download - Click the download button and watch real-time progress
- Save PDF - Download the generated PDF transcript
https://www.youtube.com/watch?v={video_id}https://youtu.be/{video_id}https://www.youtube.com/embed/{video_id}
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Serve frontend application |
POST |
/api/transcript/download |
Initiate transcript download |
GET |
/api/transcript/download/{filename} |
Download generated PDF |
GET |
/api/transcript/status/{file_id} |
Check download status |
WS |
/ws/progress |
WebSocket for progress updates |
import requests
response = requests.post('http://localhost:8000/api/transcript/download', json={
'url': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
'include_timestamps': True
})- WebSocket Integration: Custom ConnectionManager class for efficient real-time updates
- Async Background Tasks: Non-blocking PDF generation using FastAPI's background tasks
- Error Handling: Comprehensive exception handling with user-friendly error messages
- CORS Support: Configured for cross-origin requests
- Responsive Design: CSS Grid and Flexbox for adaptive layouts
- Clean Code: Modular structure with separation of concerns
youtube-transcript-api>=0.6.2
fpdf>=1.7.2
fastapi>=0.104.0
uvicorn[standard]>=0.24.0
websockets>=12.0
pydantic>=2.5.0
- Animated orb with pulsing glow effects
- Starfield background animation
- Real-time progress bar with percentage
- Smooth transitions and hover effects
- Status indicators for WebSocket connection
- Responsive mobile-first design
- Support for multiple languages
- Batch download functionality
- User authentication and history
- Cloud storage integration
- Advanced PDF formatting options
- Export to additional formats (TXT, JSON, SRT)
This project is licensed under the MIT License - see the LICENSE file for details.
For questions, collaborations, or opportunities:
- Email: Peytonn98@Gmail.com
- Website: nowlinautomation.com
- GitHub: @PeytonNowlin
Built with โก FastAPI + ๐ Vue.js
Version 3.0