Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from kivy.uix.label import Label
- from kivy.uix.textinput import TextInput
- from kivy.uix.button import Button
- from kivy.app import App
- from kivy.uix.popup import Popup
- from kivy.uix.floatlayout import FloatLayout
- from kivy.uix.scrollview import ScrollView
- from pytube import YouTube
- class Layout(FloatLayout):
- def __init__(self, **kwargs):
- super().__init__(**kwargs)
- self.vids = []
- self.label_banner = Label(text='YouTube Downloader', size_hint=(None,None), size=(180,50),
- pos_hint={'top':0.98, 'center_x':0.5}, font_size=40)
- self.label_url = Label(text='URL', size_hint=(None,None), size=(180,50),
- pos_hint={'top':0.87, 'center_x':0.5})
- self.txtin_url = TextInput(text='', size_hint=(None,None), size=(620,130),
- pos_hint={'top':0.81, 'center_x':0.5})
- self.label_url = Label(text='URL', size_hint=(None,None), size=(180,50),
- pos_hint={'top':0.87, 'center_x':0.5})
- self.btn_go = Button(text='Go', size_hint=(None,None), size=(180,70),
- pos_hint={'top':0.68, 'center_x':0.5},
- on_release=self.process, on_press=self.wait)
- self.label_url = Label(text='URL', size_hint=(None,None), size=(180,50),
- pos_hint={'top':0.87, 'center_x':0.5})
- self.popup1 = Popup(title='In-progress',content=Label(text='Please wait\nThis might take\n5 mins'), size_hint=(0.6,0.6), pos_hint={'top':0.75, 'center_x':0.5},auto_dismiss=True)
- self.popup2 = Popup(title='Done',content=Label(text='Done!'), size_hint=(0.6,0.6), pos_hint={'top':0.75, 'center_x':0.5},auto_dismiss=True)
- self.popup3 = Popup(title='Error',content=Label(text='Error!'), size_hint=(0.6,0.6), pos_hint={'top':0.75, 'center_x':0.5},auto_dismiss=True)
- self.txtin_result = TextInput(text='', size_hint=(1,None), height=1050,
- pos_hint={'top':0.60, 'center_x':0.5})
- self.sv = ScrollView(size_hint=(1,None), height=400, pos_hint={'top':0.60,'center_x':0.5})
- self.label_vq= Label(text='Stream Quality No:', size_hint=(None,None), size=(180,40),
- pos_hint={'top':0.25, 'x':0.06})
- self.txtin_vq= TextInput(text='', size_hint=(None,None), size=(100,50),
- pos_hint={'top':0.25, 'x':0.36})
- self.label_dp= Label(text='Download path:', size_hint=(None,None), size=(160,40),
- pos_hint={'top':0.17, 'x':0.04})
- self.label_dp2= Label(text='Check C: drive for downloads', size_hint=(None,None), size=(460,120),
- pos_hint={'top':0.20, 'x':0.31},color=(0,1,0,1))
- self.btn_d= Button(text='Download', size_hint=(None,None), size=(200,60),
- pos_hint={'top':0.08, 'center_x':0.50},
- on_press=self.wait2, on_release=self.process2)
- self.sv.add_widget(self.txtin_result)
- self.add_widget(self.label_banner)
- self.add_widget(self.label_url)
- self.add_widget(self.txtin_url)
- self.add_widget(self.sv)
- self.add_widget(self.btn_go)
- self.add_widget(self.label_vq)
- self.add_widget(self.txtin_vq)
- self.add_widget(self.label_dp)
- self.add_widget(self.label_dp2)
- self.add_widget(self.btn_d)
- def process(self, *args):
- try:
- yt = YouTube(self.txtin_url.text)
- items = yt.streams.all()
- except:
- self.popup3.open()
- else:
- for x in items:
- self.vids.append(x)
- self.popup2.open()
- for vid in self.vids:
- self.txtin_result.text += str(vid) + '\n'
- def wait(self, *args):
- try:
- if len(self.txtin_url.text) > 0:
- self.popup1.open()
- except:
- self.popup3.open()
- else:
- pass
- def wait2(self, *args):
- if len(self.txtin_url.text) > 7:
- self.popup1.open()
- def process2(self, *args):
- try:
- num = self.txtin_vq.text
- num = int(num)
- self.vids[num].download()
- except:
- self.popup3.open()
- else:
- self.vids[num].download()
- self.popup2.open()
- class Main(App):
- def build(self, *args):
- return Layout()
- app = Main()
- app.run()
Add Comment
Please, Sign In to add comment