def firstClipFileDialog(self):
        options = QFileDialog.Options()
        fileName, _ = QFileDialog.getOpenFileName(self,"Select The First Clip", f"{current_path}/FirstClips","All Files (*);;MP4 Files (*.mp4)", options=options)
        if fileName:
            # name = len(fileName.split("/"))
            # self.firstClipPath = (fileName.split("/")[name-1])

            try:
                vid = cv2.VideoCapture(fileName)
                height = vid.get(cv2.CAP_PROP_FRAME_HEIGHT)
                width = vid.get(cv2.CAP_PROP_FRAME_WIDTH)
                if int(width) != 1920 or int(height) != 1080:
                    self.uploadFail("Incorrect resolution for file %s.\n Resolution was %sx%s, required 1920x1080" % (fileName, width, height))
                else:
                    self.firstClipPath = fileName
                    name = len(self.firstClipPath.split("/"))
                    new_name = (self.firstClipPath.split("/")[name-1]).replace(".mp4", "")
                    self.firstClipCred.setText(new_name)

                    firstClip = scriptwrapper.DownloadedTwitchClipWrapper("", "", "", "", None)
                    firstClip.streamer_name = new_name
                    firstClip.mp4 = self.firstClipPath
                    firstClip.upload = True

                    media_info = MediaInfo.parse(self.firstClipPath)
                    duration = media_info.tracks[0].duration / 1000
                    firstClip.vid_duration = float(duration)



                    self.videoWrapper.scriptWrapper.addClipAtStart(firstClip)
                    self.populateTreeWidget()
                    self.chooseFirstClip.setText("Reselect First Clip")
            except Exception as e:
                self.uploadFail("Error occured uploading file \n %s" % (e))
Beispiel #2
0
def requestClipsWithoutClips(game, amount, clips, window):
    ids = []
    for clip in clips:
        ids.append(str(clip.id))

    r = requests.get(f'http://{httpaddress}/getclipswithoutids',
                     json={
                         "game": game,
                         "amount": int(amount),
                         "ids": ids
                     },
                     headers={'Accept-Encoding': None})
    clips = r.json()["clips"]
    clipwrappers = []
    for clip in clips:
        id = clip["id"]
        mp4 = clip["mp4"]
        streamer = clip["author_name"]
        duration = clip["duration"]
        clip_title = clip["clip_title"]
        diggCount = clip["diggCount"]
        shareCount = clip["shareCount"]
        playCount = clip["playCount"]
        commentCount = clip["commentCount"]
        clipwrappers.append(
            scriptwrapper.DownloadedTwitchClipWrapper(id, streamer, clip_title,
                                                      mp4, duration, diggCount,
                                                      shareCount, playCount,
                                                      commentCount))

    window.set_max_progres_bar.emit(len(clips))

    ftp = ftplib.FTP()
    ftp.connect(settings.address, settings.FTP_PORT)
    ftp.login(settings.FTP_USER, settings.FTP_PASSWORD)
    ftp.cwd('/VideoFiles/')
    bad_indexes = []

    for i, clip in enumerate(clipwrappers):
        try:
            mp4 = clip.mp4
            print("Downloading %s/%s clips %s" %
                  (i + 1, len(clipwrappers), mp4))
            with open("TempClips/%s.mp4" % mp4, 'wb') as file:
                ftp.retrbinary('RETR %s.mp4' % mp4,
                               file.write,
                               blocksize=settings.block_size)
            window.update_progress_bar.emit(i + 1)
        except Exception as e:
            bad_indexes.append(i)
            print("Failed to download clip, will remove later.")
            print(e)

    for i in sorted(bad_indexes, reverse=True):
        del clipwrappers[i]

    vidwrapper = scriptwrapper.ScriptWrapper(clipwrappers)
    window.finished_downloading.emit(vidwrapper)
Beispiel #3
0
    def exportVideo(self):
        intervalCheck = True if (self.intervalClipPath is not None
                                 and settings.enforceInterval
                                 ) or not settings.enforceInterval else False
        firstClipCheck = True if (self.firstClipPath is not None
                                  and settings.enforceFirstClip
                                  ) or not settings.enforceFirstClip else False
        introClipCheck = True if (
            self.introClipPath is not None
            and settings.enforceIntro) or not settings.enforceIntro else False
        outroClipCheck = True if (
            self.outroClipPath is not None
            and settings.enforceOutro) or not settings.enforceOutro else False

        if intervalCheck is True and firstClipCheck is True and introClipCheck is True and outroClipCheck is True:
            self.mediaPlayer.stop()
            final_clips = self.videoWrapper.scriptWrapper.getFinalClips()

            with_intro = []

            if settings.enforceIntro:
                self.introClip = scriptwrapper.DownloadedTwitchClipWrapper(
                    "", "", " ", "", None, 0, 0, 0, 0)
                self.introClip.author_name = None
                self.introClip.mp4 = self.introClipPath
                self.introClip.isIntro = True
                self.introClip.isInterval = False
                self.introClip.upload = True
                self.introClip.isUsed = True

                media_info_intro = MediaInfo.parse(self.introClipPath)
                duration_intro = media_info_intro.tracks[0].duration / 1000

                self.introClip.vid_duration = float(duration_intro)

            if settings.enforceInterval:
                self.intervalClip = scriptwrapper.DownloadedTwitchClipWrapper(
                    "", "", " ", "", None, 0, 0, 0, 0)
                self.intervalClip.author_name = None
                self.intervalClip.mp4 = self.intervalClipPath
                self.intervalClip.isInterval = True
                self.intervalClip.isIntro = False
                self.intervalClip.upload = True
                self.intervalClip.isUsed = True

                media_info_interval = MediaInfo.parse(self.intervalClipPath)
                duration_interval = media_info_interval.tracks[
                    0].duration / 1000

                self.intervalClip.vid_duration = float(duration_interval)

            if settings.enforceOutro:
                self.outroClip = scriptwrapper.DownloadedTwitchClipWrapper(
                    "", "", " ", "", None, 0, 0, 0, 0)
                self.outroClip.author_name = None
                self.outroClip.mp4 = self.outroClipPath
                self.outroClip.isOutro = True
                self.outroClip.upload = True
                self.outroClip.isUsed = True
                media_info_outro = MediaInfo.parse(self.outroClipPath)
                duration_outro = media_info_outro.tracks[0].duration / 1000
                self.outroClip.vid_duration = float(duration_outro)

            if self.defaultIntro.isChecked():
                self.saveDefaultIntro()

            if self.defaultInterval.isChecked():
                self.saveDefaultInterval()

            if self.defaultOutro.isChecked():
                self.saveDefaultOutro()

            for i, clip in enumerate(final_clips):
                with_intro.append(clip)
                if i == 0:
                    if settings.enforceInterval:
                        with_intro.append(self.intervalClip)
                    if settings.enforceIntro:
                        with_intro.append(self.introClip)

            if settings.enforceOutro:
                with_intro.append(self.outroClip)

            self.videoWrapper.final_clips = with_intro
            self.clipupload = ClipUploadMenu(self.videoWrapper,
                                             self.videoName.text())
            self.clipupload.show()

        else:
            print("Choose intro clip and first clip")