diff options
Diffstat (limited to 'src/view')
-rw-r--r-- | src/view/app.py | 46 | ||||
-rw-r--r-- | src/view/download_type_chooser.py | 6 |
2 files changed, 18 insertions, 34 deletions
diff --git a/src/view/app.py b/src/view/app.py index 5c6ce6f..4b295d2 100644 --- a/src/view/app.py +++ b/src/view/app.py @@ -6,14 +6,21 @@ from kivy.uix.button import Button from kivy.uix.textinput import TextInput from kivy.uix.label import Label from kivy import platform +from kivy.logger import Logger, LOG_LEVELS import threading import traceback -from model.youload_playlist import YouLoadPlayList +import youload_downloader from view.file_chooser import YouloadFileChooser from view.download_type_chooser import YouloadDownloadTypeChooser import util +import sys + +# The logger fucks up yt-dlp. +Logger.setLevel(LOG_LEVELS["critical"]) +sys.stdout = sys.__stdout__ +sys.stderr = sys.__stderr__ class YouloadApp(App): def build(self): @@ -109,42 +116,19 @@ class YouloadApp(App): # 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.download_status.text = "Downloading" 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.download_type = self.download_type_chooser.current_type - 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, self.do_add_numbers) + "\n" + self.downloads_display = youload_downloader.download_playlist( + self.url_input.text, + self.download_type_chooser.current_type, + self.folder_display.text, + self.do_add_numbers + ) # Complete download. self.download_status.text = "Download complete" - except FileExistsError as e: - self.download_status.text = "Folder already exists" - self.downloads_display.text = repr(e) + "\n" + traceback.format_exc() - print(self.downloads_display.text) - except KeyError as e: - self.download_status.text = "Error getting playlist" - self.downloads_display.text = repr(e) + "\n" + traceback.format_exc() - print(self.downloads_display.text) - except AttributeError as e: - self.download_status.text = "Download type not supported" - self.downloads_display.text = repr(e) + "\n" + traceback.format_exc() - print(self.downloads_display.text) except Exception as e: self.downloads_display.text = repr(e) + "\n" + traceback.format_exc() print(self.downloads_display.text) diff --git a/src/view/download_type_chooser.py b/src/view/download_type_chooser.py index 927d7a4..2f50cff 100644 --- a/src/view/download_type_chooser.py +++ b/src/view/download_type_chooser.py @@ -3,7 +3,7 @@ from kivy.uix.button import Button from kivy.uix.popup import Popup from kivy.uix.boxlayout import BoxLayout -from model.youload_playlist import YouLoadPlayList +import youload_downloader class YouloadDownloadTypeChooser(Popup): @@ -13,10 +13,10 @@ class YouloadDownloadTypeChooser(Popup): self.title = "Download types" layout = BoxLayout(orientation="vertical") - self.current_type = YouLoadPlayList.DEFAULT_DOWNLOAD_TYPE + self.current_type = youload_downloader.DOWNLOAD_TYPES[0] # Add option buttons. - for download_type in YouLoadPlayList.DOWNLOAD_TYPES: + for download_type in youload_downloader.DOWNLOAD_TYPES: item = Button(text=download_type) item.bind(on_press=self.option_button_cb) layout.add_widget(item) |