collinsanele

Working YouTube Downloader under construction

Nov 7th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.86 KB | None | 0 0
  1. from kivy.uix.label import Label
  2. from kivy.uix.textinput import TextInput
  3. from kivy.uix.button import Button
  4. from kivy.app import App
  5. from kivy.uix.popup import Popup
  6. from kivy.uix.floatlayout import FloatLayout
  7. from kivy.uix.scrollview import ScrollView
  8. from pytube import YouTube
  9.  
  10.  
  11.  
  12.  
  13.  
  14. class Layout(FloatLayout):
  15. def __init__(self, **kwargs):
  16. super().__init__(**kwargs)
  17. self.vids = []
  18. self.label_banner = Label(text='YouTube Downloader', size_hint=(None,None), size=(180,50),
  19. pos_hint={'top':0.98, 'center_x':0.5}, font_size=40)
  20. self.label_url = Label(text='URL', size_hint=(None,None), size=(180,50),
  21. pos_hint={'top':0.87, 'center_x':0.5})
  22. self.txtin_url = TextInput(text='', size_hint=(None,None), size=(620,130),
  23. pos_hint={'top':0.81, 'center_x':0.5})
  24. self.label_url = Label(text='URL', size_hint=(None,None), size=(180,50),
  25. pos_hint={'top':0.87, 'center_x':0.5})
  26. self.btn_go = Button(text='Go', size_hint=(None,None), size=(180,70),
  27. pos_hint={'top':0.68, 'center_x':0.5},
  28. on_release=self.process, on_press=self.wait)
  29. self.label_url = Label(text='URL', size_hint=(None,None), size=(180,50),
  30. pos_hint={'top':0.87, 'center_x':0.5})
  31. 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)
  32. 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)
  33. 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)
  34. self.txtin_result = TextInput(text='', size_hint=(1,None), height=1050,
  35. pos_hint={'top':0.60, 'center_x':0.5})
  36. self.sv = ScrollView(size_hint=(1,None), height=400, pos_hint={'top':0.60,'center_x':0.5})
  37. self.label_vq= Label(text='Stream Quality No:', size_hint=(None,None), size=(180,40),
  38. pos_hint={'top':0.25, 'x':0.06})
  39. self.txtin_vq= TextInput(text='', size_hint=(None,None), size=(100,50),
  40. pos_hint={'top':0.25, 'x':0.36})
  41. self.label_dp= Label(text='Download path:', size_hint=(None,None), size=(160,40),
  42. pos_hint={'top':0.17, 'x':0.04})
  43. self.label_dp2= Label(text='Check C: drive for downloads', size_hint=(None,None), size=(460,120),
  44. pos_hint={'top':0.20, 'x':0.31},color=(0,1,0,1))
  45. self.btn_d= Button(text='Download', size_hint=(None,None), size=(200,60),
  46. pos_hint={'top':0.08, 'center_x':0.50},
  47. on_press=self.wait2, on_release=self.process2)
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. self.sv.add_widget(self.txtin_result)
  60.  
  61.  
  62.  
  63. self.add_widget(self.label_banner)
  64. self.add_widget(self.label_url)
  65. self.add_widget(self.txtin_url)
  66. self.add_widget(self.sv)
  67. self.add_widget(self.btn_go)
  68. self.add_widget(self.label_vq)
  69. self.add_widget(self.txtin_vq)
  70. self.add_widget(self.label_dp)
  71. self.add_widget(self.label_dp2)
  72. self.add_widget(self.btn_d)
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80. def process(self, *args):
  81. try:
  82. yt = YouTube(self.txtin_url.text)
  83. items = yt.streams.all()
  84. except:
  85. self.popup3.open()
  86. else:
  87. for x in items:
  88. self.vids.append(x)
  89. self.popup2.open()
  90. for vid in self.vids:
  91. self.txtin_result.text += str(vid) + '\n'
  92.  
  93.  
  94.  
  95.  
  96. def wait(self, *args):
  97. try:
  98. if len(self.txtin_url.text) > 0:
  99. self.popup1.open()
  100. except:
  101. self.popup3.open()
  102. else:
  103. pass
  104.  
  105. def wait2(self, *args):
  106. if len(self.txtin_url.text) > 7:
  107. self.popup1.open()
  108.  
  109. def process2(self, *args):
  110. try:
  111. num = self.txtin_vq.text
  112. num = int(num)
  113. self.vids[num].download()
  114. except:
  115. self.popup3.open()
  116. else:
  117. self.vids[num].download()
  118. self.popup2.open()
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. class Main(App):
  137. def build(self, *args):
  138. return Layout()
  139.  
  140.  
  141.  
  142. app = Main()
  143. app.run()
Add Comment
Please, Sign In to add comment