“”” YouTube Video Downloader – Flask Web Application Install required packages: pip install flask yt-dlp “”” from flask import Flask, render_template_string, request, jsonify, send_file import yt_dlp import os import re app = Flask(__name__) # HTML Template HTML_TEMPLATE = “”” YouTube Video Downloader

YouTube Video Downloader

Download videos from YouTube in various qualities

Processing… Please wait

YouTube Thumbnail Downloader

Download thumbnails from YouTube videos in HD

“”” def extract_video_id(url): “””Extract video ID from YouTube URL””” patterns = [ r'(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/shorts\/)([a-zA-Z0-9_-]{11})’, ] for pattern in patterns: match = re.search(pattern, url) if match: return match.group(1) return None @app.route(‘/’) def index(): return render_template_string(HTML_TEMPLATE) @app.route(‘/download’, methods=[‘POST’]) def download(): try: data = request.json url = data.get(‘url’) quality = data.get(‘quality’, ‘best’) if not url: return jsonify({‘success’: False, ‘message’: ‘URL is required’}) # Configure download options download_folder = ‘downloads’ os.makedirs(download_folder, exist_ok=True) ydl_opts = { ‘format’: ‘best[ext=mp4]’ if quality == ‘best’ else f’bestvideo[height<={quality}]+bestaudio/best[height<={quality}]', 'outtmpl': os.path.join(download_folder, '%(title)s.%(ext)s'), 'quiet': True, 'no_warnings': True, } # Download video with yt_dlp.YoutubeDL(ydl_opts) as ydl: info = ydl.extract_info(url, download=True) filename = ydl.prepare_filename(info) # Get video info duration = f"{info.get('duration', 0) // 60}:{info.get('duration', 0) % 60:02d}" return jsonify({ 'success': True, 'message': 'Video downloaded successfully!', 'info': { 'title': info.get('title', 'Unknown'), 'duration': duration, 'filename': os.path.basename(filename) }, 'download_url': f'/get_file/{os.path.basename(filename)}' }) except Exception as e: return jsonify({'success': False, 'message': f'Error: {str(e)}'}) @app.route('/get_file/‘) def get_file(filename): try: file_path = os.path.join(‘downloads’, filename) return send_file(file_path, as_attachment=True) except Exception as e: return jsonify({‘success’: False, ‘message’: f’Error: {str(e)}’}) if __name__ == ‘__main__’: print(“=” * 50) print(“YouTube Video Downloader Server”) print(“=” * 50) print(“Server starting at: http://127.0.0.1:5000”) print(“Press CTRL+C to stop the server”) print(“=” * 50) app.run(debug=True, host=’0.0.0.0′, port=5000)