diff options
author | nathansmithsmith <nathansmith7@mailfence.com> | 2023-11-09 18:28:44 +0000 |
---|---|---|
committer | nathansmithsmith <nathansmith7@mailfence.com> | 2023-11-09 18:28:44 +0000 |
commit | a923bfde6c4612f013c40354a3726aa1f06de15c (patch) | |
tree | 33397092aab0a08bf10b7b29257e5b65e7d62c04 | |
parent | bfdf9baefe2d0fa3b8e4f20ee59cdbb7afa934c5 (diff) | |
download | youload-a923bfde6c4612f013c40354a3726aa1f06de15c.tar.gz youload-a923bfde6c4612f013c40354a3726aa1f06de15c.tar.bz2 youload-a923bfde6c4612f013c40354a3726aa1f06de15c.zip |
Folder chooser thingy working
-rw-r--r-- | src/model/youload_app.py | 12 | ||||
-rw-r--r-- | src/model/youload_file_chooser.py | 7 | ||||
-rw-r--r-- | src/youload_playlist.py | 4 |
3 files changed, 20 insertions, 3 deletions
diff --git a/src/model/youload_app.py b/src/model/youload_app.py index 9e4d757..b75aee6 100644 --- a/src/model/youload_app.py +++ b/src/model/youload_app.py @@ -10,7 +10,7 @@ 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 @@ -39,7 +39,10 @@ class YouloadApp(App): url_and_submit.add_widget(self.submit) # Download status. - self.download_status = Label(text="Nothing downloading", size_hint=(0.8, 1.0)) + 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="Choose folder", size_hint=(0.2, 1.0)) @@ -48,6 +51,7 @@ class YouloadApp(App): # 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. @@ -60,6 +64,7 @@ class YouloadApp(App): # File chooser. self.file_chooser = YouloadFileChooser() + self.file_chooser.set_app(self) # Screen layout. self.screen_layout = FloatLayout() @@ -83,8 +88,9 @@ class YouloadApp(App): self.download_status.text = "Error getting playlist" return + playlist.set_download_directory(self.folder_display.text) playlist.prepare_for_download() - self.downloads_display.text = f"Downloading {self.url}\n" + self.downloads_display.text = f"Downloading to {playlist.folder_name}\n" # Download each video for i in range(playlist.video_count): diff --git a/src/model/youload_file_chooser.py b/src/model/youload_file_chooser.py index 3f4af66..ab37a2d 100644 --- a/src/model/youload_file_chooser.py +++ b/src/model/youload_file_chooser.py @@ -37,10 +37,17 @@ class YouloadFileChooser(Popup): layout.add_widget(self.file_chooser) self.add_widget(layout) + def set_app(self, app): + self.app = app + def close_button_cb(self, instance): + self.app.folder_display.text = self.get_folder() self.parent.remove_widget(self) def uid_path_input(self, instance, value): if os.path.exists(value): self.file_chooser.path = value + def get_folder(self): + return self.file_chooser.path + diff --git a/src/youload_playlist.py b/src/youload_playlist.py index 1d62ee5..803b1c1 100644 --- a/src/youload_playlist.py +++ b/src/youload_playlist.py @@ -19,6 +19,10 @@ class YouLoadPlayList: video_size = video.streams.get_highest_resolution().filesize // 1048576 return f"Title: {video.title}, Size: {video_size} MB" + def set_download_directory(self, directory: str) -> None: + """Sets where the playlist folder will be downloaded""" + self.folder_name = os.path.join(directory, make_alpha_numeric(self.yt_playlist.title)) + def prepare_for_download(self) -> None: """Gets the playlist ready for download. Creates the output folder and that stuff.""" os.mkdir(self.folder_name) |