MJPansa's picture
Update app.py
25ead2e verified
raw
history blame contribute delete
No virus
1.69 kB
import streamlit as st
from pytube import YouTube
import os
import base64
# Function to download YouTube video and return the path of the downloaded file
def download_video(url, selected_quality):
try:
yt = YouTube(url)
st.write("Video Title:", yt.title)
st.write("Downloading...")
stream = yt.streams.filter(progressive=True, file_extension='mp4').get_by_resolution(selected_quality)
download_path = os.path.join(os.path.expanduser("~"), "Downloads")
downloaded_file_path = stream.download(output_path=download_path)
st.success("Download completed successfully!")
return downloaded_file_path
except Exception as e:
st.error(f"An error occurred: {e}")
return None
# Function to create a download link
def create_download_link(file_path):
file_name = os.path.basename(file_path)
with open(file_path, "rb") as f:
bytes = f.read()
b64 = base64.b64encode(bytes).decode()
href = f'<a href="data:file/mp4;base64,{b64}" download="{file_name}">Download {file_name}</a>'
return href
# Streamlit UI
st.title("YouTube Video Downloader")
url = st.text_input("Enter YouTube Video URL:", "")
quality_options = ["1080p", "720p", "480p", "360p"]
selected_quality = st.selectbox("Select Video Quality:", quality_options)
if st.button("Download"):
if url.strip() == "":
st.warning("Please enter a YouTube video URL.")
else:
downloaded_file_path = download_video(url, selected_quality)
if downloaded_file_path:
download_link = create_download_link(downloaded_file_path)
st.markdown(download_link, unsafe_allow_html=True)