diff options
author | nathansmithsmith <nathansmith7@mailfence.com> | 2023-11-09 20:53:10 +0000 |
---|---|---|
committer | nathansmithsmith <nathansmith7@mailfence.com> | 2023-11-09 20:53:10 +0000 |
commit | 40b98d98f8dcc7b8a6da46e825d667989a436c67 (patch) | |
tree | 140e3dcd1d2897feaa9527e756a0d103266ba9a4 /src/model/youload_app.py | |
parent | c01b36209a12fe7b19ee4ba8a3a467697d9bbf5f (diff) | |
download | youload-40b98d98f8dcc7b8a6da46e825d667989a436c67.tar.gz youload-40b98d98f8dcc7b8a6da46e825d667989a436c67.tar.bz2 youload-40b98d98f8dcc7b8a6da46e825d667989a436c67.zip |
Added download types
Diffstat (limited to 'src/model/youload_app.py')
-rw-r--r-- | src/model/youload_app.py | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/src/model/youload_app.py b/src/model/youload_app.py deleted file mode 100644 index 6d20b22..0000000 --- a/src/model/youload_app.py +++ /dev/null @@ -1,132 +0,0 @@ -#! /usr/bin/python3 - -from kivy.app import App -from kivy.uix.boxlayout import BoxLayout -from kivy.uix.button import Button -from kivy.uix.floatlayout import FloatLayout -from kivy.uix.gridlayout import GridLayout -from kivy.uix.textinput import TextInput -from kivy.uix.label import Label -from kivy.uix.filechooser import FileChooser - -import threading -from pathlib import Path -import pytube - -from youload_playlist import YouLoadPlayList -from model.youload_file_chooser import YouloadFileChooser - -class YouloadApp(App): - def build(self): - layout = BoxLayout(orientation='vertical') - - # Data members - self.url = "https://youtube.com/playlist?list=PLuZUmvZz4WI78uqT5S71yBHNBMJ97HzhY&si=SI2qN9MgxmmK2rbf" - self.is_downloading = False - self.should_stop_download = False - - # Url input. - url_input = TextInput(text=self.url, multiline=False, size_hint=(0.8, 1.0)) - url_input.bind(text=self.uid_url_input) - - # Submit button. - self.submit = Button(text="Download", size_hint=(0.2, 1.0)) - self.submit.bind(on_press=self.submit_cb) - - # Url and submit layout. - url_and_submit = BoxLayout(size_hint=(1.0, 0.1)) - url_and_submit.add_widget(url_input) - url_and_submit.add_widget(self.submit) - - # Download status. - self.download_status = Label(text="Nothing downloading", size_hint=(0.4, 1.0)) - - # Folder display. - self.folder_display = Label(text=str(Path.home()), size_hint=(0.4, 1.0)) - - # choose folder button. - self.choose_folder_button = Button(text="Folder", size_hint=(0.2, 1.0)) - self.choose_folder_button.bind(on_press=self.choose_folder_cb) - - # Info line. - info_line = BoxLayout(size_hint=(1.0, 0.1)) - info_line.add_widget(self.download_status) - info_line.add_widget(self.folder_display) - info_line.add_widget(self.choose_folder_button) - - # Info display. - self.downloads_display = Label(text="", size_hint=(1.0, 0.8)) - - # Everything else (: - layout.add_widget(url_and_submit) - layout.add_widget(info_line) - layout.add_widget(self.downloads_display) - - # File chooser. - self.file_chooser = YouloadFileChooser() - self.file_chooser.set_app(self) - - # Screen layout. - self.screen_layout = FloatLayout() - self.screen_layout.add_widget(layout) - - return self.screen_layout - - def uid_url_input(self, instance, value): - self.url = value - - # Download the videos in a different thread so the ui still works. - def download_playlist_thread(self): - try: - self.download_status.text = "Fetching playlist" - self.submit.text = "Stop" - self.is_downloading = True - - # Get playlist. - playlist = YouLoadPlayList(self.url) - - # Set directory and other stuff. - playlist.set_download_directory(self.folder_display.text) - playlist.prepare_for_download() - self.downloads_display.text = f"Downloading to {playlist.folder_name}\n" - - # Download each video - for i in range(playlist.video_count): - # Stop this mother fucker - if self.should_stop_download: - break - - self.download_status.text = f"Downloading {i+1}/{playlist.video_count}" - self.downloads_display.text += playlist.download_video(i) + "\n" - - # Complete download. - self.download_status.text = "Download complete" - except FileExistsError: - self.download_status.text = "Folder already exists" - except KeyError: - self.download_status.text = "Error getting playlist" - - self.submit.text = "Download" - self.is_downloading = False - - def stop_download(self): - self.should_stop_download = True - - def submit_cb(self, instance): - # Is already downloading something. - if self.is_downloading: - self.download_status.text = "Stopping download" - self.stop_download() - return - - # Start download thread. - download_thread = threading.Thread(target=self.download_playlist_thread) - self.should_stop_download = False - download_thread.start() - - def choose_folder_cb(self, instance): - self.screen_layout.add_widget(self.file_chooser) - - def on_stop(self): - self.stop_download() - |