i tried different solutions, but no one works. This is my last attempt.
When the script join in the first try print in console "porco" but doesn't write in the text.result Label, why??? It skip directly to the last Label write for download accomplished
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from pytube import YouTube
class InputLink(GridLayout):
def __init__(self, **kwargs):
super(InputLink, self).__init__(**kwargs)
self.rows = 4
self.add_widget(Label(text="Link Youtube:"))
self.link = TextInput(multiline=False)
self.add_widget(self.link)
self.result = Label(text="testo")
self.add_widget(self.result)
self.bottone1 = Button(text="Download")
self.bottone1.bind(on_press=self.click1)
self.add_widget(self.bottone1)
def click1(self,btn):
self.result.text = self.link.text
yt = ""
#print(yt.streams.filter(only_audio=True).all())
try:
yt = YouTube(self.link.text)
self.result.text = "Avvio il download di "+self.link.text#<--WHY??
print('porco')
except Exception as e:
self.result.text = "Errore 1"+str(e)
return
self.download(yt)
def download(self,yt):
try:
yt.streams.filter(subtype='mp4').first().download()
self.result.text = "Download completato!"
except Exception as e:
self.result.text = "Errore 2"+str(e)
class YoutubeApp(App):
def build(self):
return InputLink()
if __name__ == "__main__":
YoutubeApp().run()
It did not display the updated text because it is downloading in the same frame.
yt
with self.yt
self.download(yt)
with Clock.schedule_once(self.download, 1)
download(self, yt)
method with download(self, dt)
def click1(self, btn):
self.result.text = self.link.text
self.yt = ""
# print(yt.streams.filter(only_audio=True).all())
try:
self.yt = YouTube(self.link.text)
self.result.text = "Avvio il download di " + self.link.text # <--WHY??
print('porco')
except Exception as e:
self.result.text = "Errore 1" + str(e)
return
Clock.schedule_once(self.download, 1)
def download(self, dt):
try:
self.yt.streams.filter(subtype='mp4').first().download()
self.result.text = "Download completato!"
except Exception as e:
self.result.text = "Errore 2" + str(e)