Pyqt5 Pytube ve Listwidgets Sorunu

Arkadaşlar merhaba kodlarım şu şekilde;





import threading
import time

from pytube import YouTube
from pytube import Playlist

from PyQt5.QtWidgets import QApplication, QFileDialog
from programs import Ui_MainWindow
from PyQt5 import QtWidgets, QtCore
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
from PyQt5.QtCore import QTimer, pyqtSignal
from PyQt5.QtCore import QPoint, QTimer




class Main(QMainWindow):
    signal_Msj = pyqtSignal()
    signal_listeye_yazma = pyqtSignal(str)


    def __init__(self):
        super(Main, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)


        self.setWindowTitle("Youtube")

        self.ui.download_button.clicked.connect(self.videoYukle_Th)
        self.ui.download_button.clicked.connect(self.videoYuklee)
        self.ui.browse_konum.clicked.connect(self.dosya_yukle)

        self.video_yuklenme = False
        self.signal_listeye_yazma.connect(self.listeye_yaz)

        self.signal_Msj.connect(self.msj_goster)

        self.ui.progressBar.hide()



        #BAŞLIK BARI SİLME

        self.setWindowFlags (QtCore.Qt.FramelessWindowHint)
        self.setAttribute (QtCore.Qt.WA_TranslucentBackground)

        self.setFixedSize(self.size())


        #HAREKET

        self.dragPos = self.pos ( )

        def mouseMoveEvent(event):
            delta = QPoint (self.pos ( ) + event.globalPos ( ) - self.dragPos)
            self.move (self.pos ( ) + event.globalPos ( ) - self.dragPos)
            self.dragPos = event.globalPos ( )
            event.accept ( )

        self.ui.frame.mouseMoveEvent = mouseMoveEvent
        #self.ui.label.mouseMoveEvent = mouseMoveEvent

        self.ui.close.clicked.connect (lambda: self.close ( ))
        self.ui.icona.clicked.connect (lambda: self.showMinimized ( ))

        self.ui.link_line.setPlaceholderText("Lütfen link giriniz")




        self.timer = QTimer()
        self.timer.timeout.connect(self.videoYukle_Th)

        self.ui.label_5.hide()
        self.ui.mp4_radio.hide()
        self.ui.mp3_radio.hide()

        self.ui.link_line.textChanged.connect(self.link_kontrol)
        self.ui.listWidget.hide()


    def mousePressEvent(self, event):
        self.dragPos = event.globalPos ( )

    def msj_goster(self):
        messagebox = QMessageBox()
        messagebox.setIcon(QMessageBox.Warning)
        messagebox.setWindowTitle("Mp3 Hatası")
        messagebox.setText(
            "Bir mp3 dosyasını iki kere indiremezsiniz")
        messagebox.setStandardButtons(QMessageBox.Ok)
        buton_ok = messagebox.button(QMessageBox.Ok)
        buton_ok.setText("Tamam")
        messagebox.exec_()


    def listeye_yaz(self, video_ismi):

        self.ui.listWidget.addItem(video_ismi)






    def link_kontrol(self):
        self.ui.label_5.show()
        self.ui.mp4_radio.show()
        self.ui.mp3_radio.show()
        if self.ui.link_line.text() == "":
            self.ui.label_5.hide()
            self.ui.mp3_radio.hide()
            self.ui.mp4_radio.hide()
        else:
            # self.ui.progressBar.show()
            pass

    def videoYukle_Th(self):
        if not self.video_yuklenme:
            Thread(target=self.videoYukle, daemon=True).start()


    def videoYuklee(
            self):  # aşagıdakı fonksıyon videoYukle threadle calıstıgı ıcın messagebox hata verdırdı bunun yerıne başka bir fonksıyonla çağırdık
        if self.ui.label_4.text() == "":
            messagebox = QMessageBox()
            messagebox.setIcon(QMessageBox.Warning)
            messagebox.setWindowTitle("Hedef dizini")
            messagebox.setText(
                "Lütfen hedef dizinini boş bırakma")
            messagebox.setStandardButtons(QMessageBox.Ok)
            buton_ok = messagebox.button(QMessageBox.Ok)
            buton_ok.setText("Tamam")
            messagebox.exec_()
        elif self.ui.link_line.text() == "":
            messagebox = QMessageBox()
            messagebox.setIcon(QMessageBox.Warning)
            messagebox.setWindowTitle("Link hatası")
            messagebox.setText(
                "Lütfen link alanını boş bırakma")
            messagebox.setStandardButtons(QMessageBox.Ok)
            buton_ok = messagebox.button(QMessageBox.Ok)
            buton_ok.setText("Tamam")
            messagebox.exec_()
        elif self.ui.mp4_radio.isChecked() == False and self.ui.mp3_radio.isChecked() == False:
            messagebox = QMessageBox()
            messagebox.setIcon(QMessageBox.Warning)
            messagebox.setWindowTitle("Format Hatası")
            messagebox.setText(
                "Lütfen mp4 veya mp3 seçeneklerini seçiniz")
            messagebox.setStandardButtons(QMessageBox.Ok)
            buton_ok = messagebox.button(QMessageBox.Ok)
            buton_ok.setText("Tamam")
            messagebox.exec_()

    def dosya_yukle(self):
        file_dialog = QFileDialog()
        self.file_dialog_yukle = file_dialog.getExistingDirectory(self, "Select")  # dosyayı seçtik
        self.ui.label_4.setText(self.file_dialog_yukle)  # labele yazdırdık






    def videoYukle(self):
        self.ui.listWidget.show()

        label_4 = self.ui.label_4.text()
        url = self.ui.link_line.text()

        self.my_playlist = Playlist(url)
        # mp3 için

        # playlisti indirirken listwidgets ekranında sayac youtubedeki tek videoyu indirirke gördüğü için sayıcıyı ilk başta tekli video indirdigini zannediyor
        # ve sayacı oradan baslatıyor yani ekranda ilk videonun ismi 2 defa gözüküyor onu engellemek için playlisti ayrı bir kodla yazdık
        # mp4 için

        try:
            if self.ui.mp4_radio.isChecked() == True:

                playlist_sayac = 0
                if self.my_playlist:
                    self.ui.progressBar.show()

                    for self.playlist in self.my_playlist.videos:
                        self.playlist.register_on_progress_callback(self.progress_callback_playlist)
                        self.playlist.register_on_complete_callback(self.complete_callback_playlist)

                        self.playlist.streams.filter(progressive=True).order_by('resolution').desc().first().download(
                            output_path=self.file_dialog_yukle)

                        playlist_sayac += 1

                        self.video_yuklenme = False



                        video_ismi = str(playlist_sayac) + ' - ' + self.playlist.title

                        self.signal_listeye_yazma.emit(video_ismi)




        except KeyError:
            pass




        try:
            if label_4 != "":

                if self.ui.mp4_radio.isChecked() == True:
                    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)

                    mp4_download = self.mp4_yukle.streams.get_highest_resolution()

                    if mp4_download:
                        self.ui.progressBar.show()
                        mp4_download.download(
                            output_path=self.file_dialog_yukle)  # parantezin içine output_path = burayada konum yazman gerekıyor sonrakı konum


                        self.video_yuklenme = False
                        video_ismi = mp4_download.title
                        self.signal_listeye_yazma.emit(video_ismi)



        except KeyError:
            pass

        try:

            if self.ui.mp3_radio.isChecked() == True:
                self.mp3_yukle = YouTube(url)
                self.mp3_yukle.register_on_progress_callback(self.progress_callback_mp3)
                self.mp3_yukle.register_on_complete_callback(self.progress_callback_mp3_callback)

                mp3_download = self.mp3_yukle.streams.filter(only_audio=True).first()
                if mp3_download:
                    self.ui.progressBar.show()
                    mp3 = mp3_download.download(output_path=self.file_dialog_yukle)

                    # dosyayı mp3'e çevirdik
                    base, ext = os.path.splitext(mp3)
                    new_file = base + '.mp3'
                    os.rename(mp3, new_file)

                    self.video_yuklenme = False

                    video_ismi = mp3_download.title
                    self.signal_listeye_yazma.emit(video_ismi)
        except FileExistsError:
            self.video_yuklenme = False
            self.signal_Msj.emit()




    #region
    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):  # progress bar kapandıgında
        time.sleep(3)
        self.ui.progressBar.hide()
    #endregion


    #region
    def progress_callback_playlist(self,stream, chunk, bytes_remaining):

        download = self.playlist
        contentsize = download.streams.get_highest_resolution().filesize

        size = contentsize - bytes_remaining
        steer = int(size / contentsize * 100)

        self.ui.progressBar.setValue(steer)

    def complete_callback_playlist(self,stream, file_handle):
        pass
    #endregion

    #region
    def progress_callback_mp3(self,stream, chunk, bytes_remaining):
        download = self.mp3_yukle
        contentsize = download.streams.get_audio_only().filesize

        size = contentsize - bytes_remaining
        steer = int(size / contentsize * 100)

        self.ui.progressBar.setValue(steer)

    def progress_callback_mp3_callback(self,stream, file_handle):
        time.sleep(3)
        self.ui.progressBar.hide()
    #endregion




app = QApplication([])

kullanicilar = Main()
kullanicilar.show()

app.exec_()

Sorunum şu;

Playlist videoyu indiriyorum. Her video indiğinde otomatik videonun tittle ismini listwidgetse yazdırıyor
fakat listenin en sonuna ilk inen videonun ismini ikinci defa yazıyor bunu nasıl engelleyebılırım ?

Kodlarda zaten playlist ve tek video indirmeyi ayırdım ama olmuyor

fotografdaki sorunu gösterdim