Arkadaşlar haftalardır uğraşıyorum bir çözüme ulaşamadım. yardımcı olacak birisi yok mu?
self.ui.download_button.clicked.connect(self.videoYukle_Th)
bu benim download butonum. buna bastığımda videoyu indirmesi gerekiyor.
Ama
def videoYukle_Th(self):
if not self.video_yuklenme:
self.t1 =Thread(target=self.videoYukle, daemon=True)
self.t1.start()
video indirirken donduğu için thread kullandım şimdi videoYukle fonksiyonuma geçelim.
self.ui.listWidget.show()
url = self.ui.link_line.text()
self.veri_al_iki = self.ui.comboBox.currentText()
try:
if self.ui.mp4_radio.isChecked() == True:
if self.ui.combobox_secim.currentText() == 'Playlist':
self.my_playlist = Playlist(url)
playlist_sayac = 0
print("playlist üstüne girdi")
if self.my_playlist:
print("Playlistin içine girdi")
self.ui.progressBar.show()
print("playliste girdi")
for self.playlist in self.my_playlist.videos:
print("playlist for geldi")
self.playlist.register_on_progress_callback(self.progress_callback_playlist)
self.playlist.register_on_complete_callback(self.complete_callback_playlist)
a = self.playlist.streams.filter(res=f"{self.veri_al_iki}").first()
a.download(output_path=self.file_dialog_yukle)
playlist_sayac += 1
self.video_yuklenme = True
video_ismi = str(playlist_sayac) + ' - ' + self.playlist.title
self.signal_listeye_yazma.emit(video_ismi)
print("playlıstın sonuna girdi")
if self.video_yuklenme == True:
self.signal_mesaj_video_indirme.emit()
else:
self.signal_Msj_playlist.emit()
elif self.ui.combobox_secim.currentText() == "Tekvideo":
print("mp4 içine girdi..")
self.mp4_yukle = YouTube(url)
self.mp4_yukle.register_on_progress_callback(self.progress_callback)
self.mp4_yukle.register_on_complete_callback(self.complete_callback)
self.veri_al_iki = self.ui.comboBox.currentText()
print("mp4 indirmeye giriyorr")
mp4_download = self.mp4_yukle.streams.filter(res=f"{self.veri_al_iki}").first()
print(self.veri_al_iki)
if mp4_download:
print("mp4 indiriyor")
self.ui.progressBar.show()
mp4_download.download(
output_path=self.file_dialog_yukle)
self.video_yuklenme = False
video_ismi = mp4_download.title
self.signal_listeye_yazma.emit(video_ismi)
print("mp4 indirildi")
except KeyError:
self.signal_Msj_4k_playlist.emit()
except AttributeError:
pass
bu da indireceğim download butonumun içerisi tek video ve playlist videoları indirebiliyorum
Fakat
self.mp4_yukle.register_on_progress_callback(self.progress_callback)
self.mp4_yukle.register_on_complete_callback(self.complete_callback)
ilki video indirdiğinde progressbarın alabileceği aksiyonu belirtir.
ikincisi ise progressbar kapandığında alabileceği fonksiyonu belirtir
def progress_callback(self, stream, chunk, bytes_remaining):
download = self.mp4_yukle
contentsize = download.streams.get_highest_resolution().filesize
size = contentsize - bytes_remaining
steer = int(size / contentsize * 100)
self.ui.progressBar.setValue(steer)
def complete_callback(self, stream, file_handle):
time.sleep(3)
self.ui.progressBar.hide()
1 adet refresh butonum var. Ben bu kodlarına neresıne ne koymalıyım ki progressbarı durdursun ve sıfırlasın.
Bool değişkeni atayarak yaptım olmadı
Pytubenin içinde durdurma gibi bir özellik yok
Threadın içinde de stop yok
Çözüm var mı?