Exemplo n.º 1
0
    def cli_convert(self, args):
        #NODOC
        printsd(args)
        if args.all:
            # `calibre-debug -r djvumaker -- convert --all`
            printsd('in cli convert_all')
            # TODO: make work `djvumaker -- convert --all`
            # raise NotImplementedError('Convert all is not implemented.')

            user_input = ask_yesno_input(
                'Do you wany to copy-convert all PDFs to DJVU?')
            if not user_input:
                return None

            from calibre.library import db
            from calibre.customize.ui import run_plugins_on_postimport
            db = db()  # initialize calibre library database
            for book_id in list(db.all_ids()):
                if db.has_format(book_id, 'DJVU', index_is_id=True):
                    continue
                # TODO: shouldn't work with this code, db has not atributte run_plugins_on_postimport
                #       https://github.com/kovidgoyal/calibre/blob/master/src/calibre/customize/ui.py
                if db.has_format(book_id, 'PDF', index_is_id=True):
                    run_plugins_on_postimport(db, book_id, 'pdf')
                    continue
        elif args.path is not None:
            # `calibre-debug -r djvumaker -- convert -p test.pdf` -> tempfile(test.djvu)
            printsd('in path')
            if is_rasterbook(args.path):
                djvu = self.run_backend(args.path, log=self.prints.func)
                if djvu:
                    input_filename, _ = os.path.splitext(args.path)
                    shutil.copy2(djvu, input_filename + '.djvu')
                    prints("Finished DJVU outputed to: {}.".format(
                        input_filename + '.djvu'))

                    user_input = ask_yesno_input(
                        'Do you want to open djvused in subshell?'
                        ' (may not work on not macOS)')
                    if not user_input:
                        return None
                    # de-munge the tty
                    sys.stdin = sys.__stdin__
                    sys.stdout = sys.__stdout__
                    sys.stderr = sys.__stderr__
                    os.system("stat '%s'" % djvu)
                    # TODO: doesn't work on Windows, why is it here?
                    os.system("djvused -e dump '%s'" % djvu)
                    os.system("djvused -v '%s'" % djvu)

        elif args.id is not None:
            # `calibre-debug -r djvumaker -- convert -i 123 #id(123).pdf` -> tempfile(id(123).djvu)
            printsd('in convert by id')
            self._postimport(args.id)
Exemplo n.º 2
0
    def cli_convert(self, args):
        #NODOC
        printsd(args)
        if args.all:
            # `calibre-debug -r djvumaker -- convert --all`
            printsd('in cli convert_all')
            # TODO: make work `djvumaker -- convert --all`
            # raise NotImplementedError('Convert all is not implemented.')

            user_input = ask_yesno_input('Do you wany to copy-convert all PDFs to DJVU?')
            if not user_input:
                return None

            from calibre.library import db
            from calibre.customize.ui import run_plugins_on_postimport
            db = db() # initialize calibre library database
            for book_id in list(db.all_ids()):
                if db.has_format(book_id, 'DJVU', index_is_id=True):
                    continue
                # TODO: shouldn't work with this code, db has not atributte run_plugins_on_postimport
                #       https://github.com/kovidgoyal/calibre/blob/master/src/calibre/customize/ui.py
                if db.has_format(book_id, 'PDF', index_is_id=True):
                    run_plugins_on_postimport(db, book_id, 'pdf')
                    continue
        elif args.path is not None:
            # `calibre-debug -r djvumaker -- convert -p test.pdf` -> tempfile(test.djvu)
            printsd('in path')
            if is_rasterbook(args.path):
                djvu = self.run_backend(args.path, log=self.prints.func)
                if djvu:
                    input_filename, _ = os.path.splitext(args.path)
                    shutil.copy2(djvu, input_filename + '.djvu')
                    prints("Finished DJVU outputed to: {}.".format(input_filename + '.djvu'))

                    user_input = ask_yesno_input('Do you want to open djvused in subshell?'
                                                 ' (may not work on not macOS)')
                    if not user_input:
                        return None
                    # de-munge the tty
                    sys.stdin = sys.__stdin__
                    sys.stdout = sys.__stdout__
                    sys.stderr = sys.__stderr__
                    os.system("stat '%s'" % djvu)
                    # TODO: doesn't work on Windows, why is it here?
                    os.system("djvused -e dump '%s'" % djvu)
                    os.system("djvused -v '%s'" % djvu)

        elif args.id is not None:
            # `calibre-debug -r djvumaker -- convert -i 123 #id(123).pdf` -> tempfile(id(123).djvu)
            printsd('in convert by id')
            self._postimport(args.id, fork_job=False)
Exemplo n.º 3
0
        self.ids = []
        self.accept()

    def keyPressEvent(self, ev):
        if ev.key() in (Qt.Key_Enter, Qt.Key_Return):
            ev.accept()
            return
        return QDialog.keyPressEvent(self, ev)


if __name__ == '__main__':
    from calibre.gui2 import Application
    from calibre.library import db
    app = Application([])
    db = db()
    ids = sorted(db.all_ids(), reverse=True)
    ids = tuple(zip(ids[0::2], ids[1::2]))
    gm = partial(db.get_metadata,
                 index_is_id=True,
                 get_cover=True,
                 cover_as_data=True)
    get_metadata = lambda x: map(gm, ids[x])
    d = CompareMany(list(xrange(len(ids))),
                    get_metadata,
                    db.field_metadata,
                    db=db)
    if d.exec_() == d.Accepted:
        for changed, mi in d.accepted.itervalues():
            if changed and mi is not None:
                print(mi)
Exemplo n.º 4
0
                       'confirm_metadata_review_reject', parent=self):
            return
        self.next_item(False)
        for id_ in self.ids:
            self.rejected_ids.add(id_)
            oldmi, newmi = self.get_metadata(id_)
            self.accepted[id_] = (False, None)
        self.ids = []
        self.accept()

    def keyPressEvent(self, ev):
        if ev.key() in (Qt.Key_Enter, Qt.Key_Return):
            ev.accept()
            return
        return QDialog.keyPressEvent(self, ev)

if __name__ == '__main__':
    from calibre.gui2 import Application
    from calibre.library import db
    app = Application([])
    db = db()
    ids = sorted(db.all_ids(), reverse=True)
    ids = tuple(zip(ids[0::2], ids[1::2]))
    gm = partial(db.get_metadata, index_is_id=True, get_cover=True, cover_as_data=True)
    get_metadata = lambda x:map(gm, ids[x])
    d = CompareMany(list(xrange(len(ids))), get_metadata, db.field_metadata, db=db)
    if d.exec_() == d.Accepted:
        for changed, mi in d.accepted.itervalues():
            if changed and mi is not None:
                print (mi)