Spaces:
Paused
Paused
| import streamlit as st | |
| import os | |
| import yt_dlp | |
| import psutil | |
| # Function to get disk usage information | |
| def get_disk_info(): | |
| disk_info = psutil.disk_usage('/') | |
| return disk_info | |
| # Streamlit UI setup | |
| st.title("YouTube Video Downloader 8K supported") | |
| # Placeholder for disk usage info | |
| disk_info_placeholder = st.empty() | |
| # Function to update disk usage information | |
| def update_disk_info(): | |
| disk_info = get_disk_info() | |
| disk_used_gb = disk_info.used / (1024 ** 3) | |
| disk_total_gb = disk_info.total / (1024 ** 3) | |
| disk_info_placeholder.markdown("## Server Information") | |
| disk_info_placeholder.markdown(f"**Disk Usage:** {disk_info.percent}% used ({disk_used_gb:.2f} GB of {disk_total_gb:.2f} GB)") | |
| # Initial disk information update | |
| update_disk_info() | |
| # Streamlit input fields | |
| url = st.text_input("Enter the YouTube URL:") | |
| quality = st.selectbox("Select the desired quality:", ['4320', '2160', '1440', '1080', '720', '480']) | |
| save_file_name = st.text_input("Enter the save file name (without extension):") | |
| # Convert quality to the appropriate format string for yt-dlp | |
| quality_format = f"bestvideo[height<={quality}]+bestaudio/best[height<={quality}]" | |
| # Define download options based on user input | |
| ydl_opts = { | |
| 'format': quality_format, # Download the specified quality | |
| 'outtmpl': f'{save_file_name}.%(ext)s', # Save the video with the specified name | |
| } | |
| if st.button("Download"): | |
| with st.spinner("Downloading... Please wait."): | |
| try: | |
| # Download the video | |
| with yt_dlp.YoutubeDL(ydl_opts) as ydl: | |
| result = ydl.download([url]) | |
| # Check if download was successful | |
| if result == 0: | |
| # Get the actual file extension used | |
| info_dict = ydl.extract_info(url, download=False) | |
| extension = info_dict.get('ext', 'webm') | |
| file_path = f'{save_file_name}.{extension}' | |
| # Check if the file exists | |
| if os.path.exists(file_path): | |
| # Provide a download link for the file | |
| with open(file_path, "rb") as file: | |
| st.download_button( | |
| label="Download video", | |
| data=file, | |
| file_name=f"{save_file_name}.{extension}", | |
| mime=f"video/{extension}" | |
| ) | |
| st.success('Your video is ready for download.') | |
| else: | |
| st.error("File not found. Please make sure the download was successful.") | |
| else: | |
| st.error("Download failed. Please check the URL and try again.") | |
| except Exception as e: | |
| st.error(f"An error occurred: {str(e)}") | |
| # Update disk information whenever the user interacts with the app | |
| update_disk_info() |