示例#1
0
class Video2PDF:
    '''
        Class to convert an mp4 video to a PDF
        '''
    def __init__(self):
        self.quilt = None

    def random_string(self, length):
        letters = string.ascii_letters + string.digits
        return ''.join(random.choice(letters) for i in range(length))

    def run(self, path):
        self.stitcher = Stitcher(path)
        self.stitcher.stitch()
        self.pdfifier = PDFifier()
        self.quilt = self.stitcher.get_quilt()

        name = self.random_string(16)
        self.pdfifier.makePDF(self.quilt, name)

        filename = name

        if (os.path.isfile(path + ".mp3")):
            os.remove(path + ".mp3")
        if (os.path.isdir("audio_segments")):
            shutil.rmtree("audio_segments")
        if (os.path.isdir("slides")):
            shutil.rmtree("slides")

        return filename
示例#2
0
class MyWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)

        self.startButton.clicked.connect(self.openFileNameDialog)
        self.nextButton.clicked.connect(self.nextSlide)
        self.previousButton.clicked.connect(self.prevSlide)
        self.pdfButton.clicked.connect(self.genPDF)

        self.quilt = None
        self.image_num = 0

    def startNoah(self, path):
        #data is a string with the text
        self.stitcher = Stitcher(path)
        self.stitcher.stitch()
        self.pdfifier = PDFifier()
        self.quilt = self.stitcher.get_quilt()

        self.image_num = 0
        image_map = QPixmap(self.quilt[0].slide_path)
        data = self.fix_text(self.quilt[0].script)
        self.slideImage.setPixmap(image_map)
        self.textArea.setText('\n'.join(data))
        self.repaint()

    def nextSlide(self):
        if (self.quilt != None):
            if (self.image_num < len(self.quilt) - 1):
                self.image_num += 1
                image_map = QPixmap(self.quilt[self.image_num].slide_path)
                self.slideImage.setPixmap(image_map)
                data = self.fix_text(self.quilt[self.image_num].script)
                self.textArea.setText('\n'.join(data))
                self.repaint()

    def prevSlide(self):
        if (self.quilt != None):
            if (self.image_num > 0):
                self.image_num -= 1
                image_map = QPixmap(self.quilt[self.image_num].slide_path)
                self.slideImage.setPixmap(image_map)
                data = self.fix_text(self.quilt[self.image_num].script)
                self.textArea.setText('\n'.join(data))
                self.repaint()

    def fix_text(self, script):
        first = True
        fixed = list()
        for segment in script:
            new_text = ""
            for text in segment:
                for word in text:
                    if (first):
                        first = False
                        new_text += word
                    else:
                        new_text += (" " + word)
            fixed.append(new_text)
        return fixed

    def openFileNameDialog(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        path, _ = QFileDialog.getOpenFileName(
            self,
            "QFileDialog.getOpenFileName()",
            "",
            "All Files (*);;Python Files (*.py)",
            options=options)
        path = os.path.basename(path)
        if path:
            self.startNoah(path)

    def genPDF(self):
        print("Generating a pdf...")
        if (self.quilt != None):
            self.pdfifier.makePDF(self.quilt)
        print("Done!")