Skip to content

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.

License

Notifications You must be signed in to change notification settings

PeytonNowlin/Ithildin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1 Commit
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Ithildin - YouTube Transcript Downloader

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.

Python FastAPI Vue.js License

๐Ÿ‘จโ€๐Ÿ’ป Developer

Peyton Nowlin
๐Ÿ“ง Peytonn98@Gmail.com
๐ŸŒ nowlinautomation.com


๐Ÿ“‹ Overview

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.

Key Features

  • โšก 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

๐Ÿ› ๏ธ Tech Stack

Backend

  • FastAPI - High-performance async Python web framework
  • Uvicorn - Lightning-fast ASGI server
  • WebSockets - Real-time bidirectional communication
  • Pydantic - Data validation and settings management

Frontend

  • Vue.js 3 - Progressive JavaScript framework
  • Vanilla CSS - Custom styling with modern CSS features
  • WebSocket API - Real-time progress updates

Libraries

  • youtube-transcript-api - YouTube transcript extraction
  • FPDF - PDF document generation

๐Ÿ—๏ธ Architecture

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

Design Patterns

  • 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

๐Ÿš€ Getting Started

Prerequisites

  • Python 3.8 or higher
  • pip (Python package manager)

Installation

  1. Clone the repository

    git clone https://github.com/PeytonNowlin/Ithildin.git
    cd Ithildin
  2. Install dependencies

    pip install -r requirements.txt
  3. Run the application

    python run.py

    Or use uvicorn directly:

    uvicorn api.main:app --reload
  4. Access the application

    Navigate to http://localhost:8000 in your browser


๐Ÿ“– Usage

  1. Enter YouTube URL - Paste any valid YouTube video link
  2. Configure Options - Choose whether to include timestamps
  3. Download - Click the download button and watch real-time progress
  4. Save PDF - Download the generated PDF transcript

Supported URL Formats

  • https://www.youtube.com/watch?v={video_id}
  • https://youtu.be/{video_id}
  • https://www.youtube.com/embed/{video_id}

๐Ÿ”Œ API Reference

Endpoints

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

Example Request

import requests

response = requests.post('http://localhost:8000/api/transcript/download', json={
    'url': 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
    'include_timestamps': True
})

๐Ÿ’ก Technical Highlights

  • 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

๐Ÿ“ฆ Dependencies

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

๐ŸŽจ UI/UX Features

  • 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

๐Ÿ”ฎ Future Enhancements

  • 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)

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿค Connect

For questions, collaborations, or opportunities:


Built with โšก FastAPI + ๐Ÿ’š Vue.js

Version 3.0

About

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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors