def split(self, video_id: str, crop_start: float = 0, crop_end: float = 0):
        input_file_path = Path(
            self.input_path, "{vid}.{ext}".format(vid=video_id,
                                                  ext=self.extension))

        cropped_path = self.output_path / "{vid}.{ext}".format(
            vid=video_id, ext=self.extension)

        if input_file_path.exists():
            # Audio
            if self.extension == "mp3" and self.should_crop(cropped_path):
                clip = AudioFileClip(str(input_file_path.absolute()))

                if crop_start is not 0 or crop_end is not 0:
                    clip = clip.subclip(crop_start, crop_end)

                if clip.audio:
                    clip.audio.write_audiofile(str(cropped_path.absolute()))

                clip.close()

            elif self.extension == "mp4" and self.should_crop(cropped_path):
                clip = VideoFileClip(str(input_file_path.absolute()))

                if crop_start is not 0 or crop_end is not 0:
                    clip = clip.subclip(crop_start, crop_end)

                if clip:
                    clip.write_videofile(str(cropped_path.absolute()))

                clip.close()
        else:
            # logger.warning('Failed to find file from: %s', input_file_path)
            pass
Exemplo n.º 2
0
    def download(self, directory):
        bitrate = str(int(self.stream.bitrate / 1000)) + "k"
        url = self.stream.url
        extension = ".mp3" if self.onlyAudio else ".mp4"
        finalPath = os.path.join(directory,
                                 sanitizeFilename(self.name) + extension)

        clip = AudioFileClip(url) if self.onlyAudio else VideoFileClip(url)

        if self.stream.mediaType == "V":
            audioClip = AudioFileClip(self.audioStream.url)

            clip = clip.set_audio(audioClip)

        if self.volumeMultiplier != 0:
            newVolume = (
                1 + self.volumeMultiplier / 100
            )**2 if self.volumeMultiplier < 0 else self.volumeMultiplier / 5

            clip = clip.volumex(newVolume)

        if self.cut:

            # Clip the video
            low = self.lowCut
            high = self.highCut
            if low < 0:
                low = 0
            if high > clip.end:
                high = clip.end
            clip = clip.subclip(low, high)

            # Save as final path name

            if self.onlyAudio:
                clip.write_audiofile(finalPath, bitrate=bitrate)
                self.applyID3Tags(finalPath)
            else:
                clip.write_videofile(finalPath, threads=NUM_THREADS)

            clip.close()

        elif self.onlyAudio:

            clip.write_audiofile(finalPath, bitrate=bitrate)

            clip.close()

            self.applyID3Tags(finalPath)

        else:

            clip.write_videofile(finalPath, threads=NUM_THREADS)
            clip.close()
        try:
            clip.close()
        except:
            pass
        return finalPath