Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from pytube import YouTube | |
| class YouTubeDownloader: | |
| def run(): | |
| st.header("Video View and Download") | |
| option = st.selectbox('How would you like to be contacted for the download list?',('Email', 'Mobile phone')) | |
| st.write('You selected:', option) | |
| option2 = st.selectbox('Would you try one of these one minute AI generated science fiction short videos?',('https://youtu.be/v-qlGRxdm6c', 'https://youtu.be/5yToL7ymfNo')) | |
| url = st.text_input("YouTube Video URL:") | |
| if option2: | |
| url=option2 | |
| if url: | |
| YouTubeDownloader.validate_url(url) | |
| with st.expander("View"): | |
| st.video(url) | |
| if st.button("Download"): | |
| YouTubeDownloader.cleanup() | |
| file_ = YouTubeDownloader.download_video(url) | |
| st.video(file_) | |
| YouTubeDownloader.helper_message() | |
| def download_video(url): | |
| with st.spinner("Downloading..."): | |
| local_file = ( | |
| YouTube(url) | |
| .streams.filter(progressive=True, file_extension="mp4") | |
| .first() | |
| .download() | |
| ) | |
| st.success("Downloaded") | |
| return local_file | |
| def validate_url(url): | |
| import validators | |
| if not validators.url(url): | |
| st.error("Video URL invalid") | |
| st.stop() | |
| def cleanup(cls): | |
| import pathlib | |
| import glob | |
| junks = glob.glob("*.mp4") | |
| for junk in junks: | |
| pathlib.Path(junk).unlink() | |
| def helper_message(cls): | |
| st.write("To save click elipses ... and choose download") | |
| if __name__ == "__main__": | |
| YouTubeDownloader.run() | |