Python Flask
https://flask.palletsprojects.com/en/2.3.x/installation/
Create an environment
C:\flask_dev>py -3 -m venv venv
Activate the environment
C:\flask_dev>venv\Scripts\activate
Install Flask
venv C:\flask_dev>pip install Flask
Install requirements
pytube
pytube is a genuine, lightweight, dependency-free Python library (and command-line utility) for downloading YouTube videos.
https://pypi.org/project/pytube/
(venv) PS C:\flask_dev\myapp>pip install pytube
pathlib
pathlib offers a set of classes to handle filesystem paths. It offers the following advantages over using string objects:
https://pypi.org/project/pathlib/
(venv) PS C:\flask_dev\myapp>pip install pathlib
C:\flask_dev\myapp\app.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # from flask import Flask, request, render_template import os import re app = Flask(__name__) @app .route( "/download" , methods = [ "GET" , "POST" ]) def downloadVideo(): mesage = '' errorType = 0 if request.method = = 'POST' and 'video_url' in request.form: youtubeUrl = request.form[ "video_url" ] if (youtubeUrl): validateVideoUrl = ( r '(https?://)?(www\.)?' '(youtube|youtu|youtube-nocookie)\.(com|be)/' '(watch\?v=|embed/|v/|.+\?v=)?([^&=%\?]{11})' ) validVideoUrl = re.match(validateVideoUrl, youtubeUrl) if validVideoUrl: url = YouTube(youtubeUrl) video = url.streams.get_highest_resolution() downloadFolder = str (os.path.join(Path.home(), "Downloads/Youtube_download" )) video.download(downloadFolder) mesage = 'Video Downloaded Successfully!' errorType = 1 else : mesage = 'Enter Valid YouTube Video URL!' errorType = 0 else : mesage = 'Enter YouTube Video Url.' errorType = 0 return render_template( 'youtube.html' , mesage = mesage, errorType = errorType) if __name__ = = "__main__" : app.run() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #templates/youtube.html <html> <head> <Title>Python Flask YouTube video Downloader< / Title> <meta charset = "utf-8" > <meta name = "viewport" content = "width=device-width, initial-scale=1" > <link href = "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel = "stylesheet" > < / head> <body> <div class = "container mt-3" > <h2>Python Flask YouTube Downloader< / h2> <form action = "/download" method = "post" > { % if mesage is defined and mesage % } { % if errorType is defined and errorType % } <div class = "alert alert-success" >{{ mesage }}< / div> { % else % } <div class = "alert alert-danger" >{{ mesage }}< / div> { % endif % } { % endif % } <div class = "mb-3 mt-3" > <label for = "video_url" >Enter YouTube Video Url:< / label> < input type = "text" class = "form-control" id = "video_url" placeholder = "Enter url" name = "video_url" > < / div> <button type = "submit" class = "btn btn-primary" >Download< / button> < / form> < / div> <br><br> < / body> < / html> |
http://127.0.0.1:5000/download