aboutsummaryrefslogtreecommitdiffstats
path: root/src/model/youload_app.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/model/youload_app.py')
-rw-r--r--src/model/youload_app.py132
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()
-