youtubeden video progressbarımın %0 dan baslayarak indirmeye baslıcak %100 olunca da video indirmesi tamamlanacak
Birde playlist var. Ekranlarım cok donuyor yapamıyorum
from pytube import YouTube
from pytube import Playlist
from PyQt5.QtWidgets import QApplication
from untitled import Ui_MainWindow
from PyQt5 import QtWidgets
import sys
import os
from PyQt5.QtWidgets import QMainWindow,QMessageBox
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QProgressBar
from threading import Thread
from pytube.cli import on_progress
from PyQt5.QtWidgets import QFileDialog as filedialog
#1. playlist cekilecek
#2.playlistin donmamasını sağlanacak
#3.progresbarr kullanılacak playlist ile entegreli olacak
#4.
class Main(QMainWindow):
def __init__(self):
super(Main, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.download_button.clicked.connect(self.video_timer)
self.ui.browse_konum.clicked.connect(self.dosya_yukle)
self.ui.progressBar.hide()
self.progress_bar_baslangic = 0
self.timer = QTimer()
self.timer.timeout.connect(self.videoYukle)
def dosya_yukle(self):
pass
def video_timer(self):
self.timer.start(400)
def videoYukle(self):
url = self.ui.link_line.text()
mp4_yukle = YouTube(url)
mp4_download = mp4_yukle.streams.get_highest_resolution()
self.ui.progressBar.show()
if self.progress_bar_baslangic <100:
self.progress_bar_baslangic+=5
self.ui.progressBar.setValue(self.progress_bar_baslangic)
mp4_download.download()
else:
self.progress_bar_baslangic = 0
self.ui.progressBar.setValue(self.progress_bar_baslangic)
'''
if self.ui.mp4_radio.isChecked() == True:
url = self.ui.link_line.text()
mp4_yukle = YouTube(url,on_progress_callback=on_progress)
mp4_download = mp4_yukle.streams.get_highest_resolution()
mp4_download.download() # parantezin içine output_path = burayada konum yazman gerekıyor sonrakı konum
if self.ui.mp3_radio.isChecked() == True:
url = self.ui.link_line.text()
mp3_yukle = YouTube(url)
mp3_download = mp3_yukle.streams.get_audio_only()
mp3_download.download()
'''
'''
url = self.ui.link_line.text()
my_playlist = Playlist(url)
if my_playlist:
for playlist in my_playlist.videos:
playlist.streams.first().download()
else:
'''
app = QApplication([])
kullanicilar = Main()
kullanicilar.show()
app.exec_()
Neden QTimer kullanıyorsun ki, diyelim senin QTimer’in çalıştı video yüklemeye başladı, ama daha o videonu yüklemeyi bitiremeden yeniden Qtimer çalşıyor ve yeniden indirmeye çalışıyor, tabi aynı anda bir videoyu bir kaç kez indirmeye çalışıyorsun, o yüzden donma oluyor.
Şöyle anlıyorum ki Qtimer’i progressbar’ın değerini artırma mantığı ile yazmışsın, ama .download() fonksiyonunu da onun içine aldığın için yukarıda bahs etdiğim sorun oluyor
Öncelikle progressbar’ın değerini neye uygun değiştireceksin, yani video yüklenirken 100de kaçının yüklendiğini nasıl bileceksin ki, ona uygun progressbar’ın değerini değiştiresin. Pytube böyle bir yüzdelik döndürüyormu? Onu bulmak lazım. Ha progressbar olmadan nasıl yaparız dersen ona bir fikrim ola bilir.
hocam birde mesela line edit veya labeller boşsa hata verdirmek istiyorum messagebox ile
fakat fonksiyon thread ile çalıştığı için direk program kapanıyor
buna da bir çözüm var mıdır?