예제 #1
0
    def do_book(self):
        book_id = self.book_ids[self.i]
        self.i += 1
        title = ''
        try:
            mi = self.db.get_metadata(book_id,
                                      index_is_id=True,
                                      get_user_categories=False)
            title, formats = mi.title, mi.formats
            if not formats:
                self.failed_ids.append((book_id, title))
                self.no_format_ids.append((book_id, title))
            else:
                # Sorted formats using the preferred input conversion list.
                sorted_formats = sort_formats_by_preference(
                    formats, self.input_map)
                paths_for_formats = []
                for f in sorted_formats:
                    paths_for_formats.append(
                        (f, self.db.format_abspath(book_id,
                                                   f,
                                                   index_is_id=True)))
                self.setLabelText(_('Queueing ') + title)
                self.books_to_scan.append((book_id, title, mi.last_modified,
                                           mi.isbn, paths_for_formats))
            self.setValue(self.i)
        except:
            traceback.print_exc()
            self.failed_ids.append((book_id, title))

        if self.i >= len(self.book_ids):
            return self.do_queue()
        else:
            QTimer.singleShot(0, self.do_book)
예제 #2
0
파일: bulk.py 프로젝트: Hainish/calibre
 def setup_output_formats(self, db, preferred_output_format):
     if preferred_output_format:
         preferred_output_format = preferred_output_format.upper()
     output_formats = get_output_formats(preferred_output_format)
     preferred_output_format = preferred_output_format if \
         preferred_output_format and preferred_output_format \
         in output_formats else sort_formats_by_preference(output_formats,
                 [prefs['output_format']])[0]
     self.output_formats.addItems(list(map(QString, [x.upper() for x in
         output_formats])))
     self.output_formats.setCurrentIndex(output_formats.index(preferred_output_format))
예제 #3
0
파일: bulk.py 프로젝트: wynick27/calibre
 def setup_output_formats(self, db, preferred_output_format):
     if preferred_output_format:
         preferred_output_format = preferred_output_format.upper()
     output_formats = get_output_formats(preferred_output_format)
     preferred_output_format = preferred_output_format if \
         preferred_output_format and preferred_output_format \
         in output_formats else sort_formats_by_preference(output_formats,
                 [prefs['output_format']])[0]
     self.output_formats.addItems(list(map(unicode, [x.upper() for x in
         output_formats])))
     self.output_formats.setCurrentIndex(output_formats.index(preferred_output_format))
예제 #4
0
파일: bulk.py 프로젝트: Eksmo/calibre
 def setup_output_formats(self, db, preferred_output_format):
     if preferred_output_format:
         preferred_output_format = preferred_output_format.lower()
     output_formats = sorted(available_output_formats(),
             key=lambda x:{'EPUB':'!A', 'MOBI':'!B'}.get(x.upper(), x))
     output_formats.remove('oeb')
     preferred_output_format = preferred_output_format if \
         preferred_output_format and preferred_output_format \
         in output_formats else sort_formats_by_preference(output_formats,
                 prefs['output_format'])[0]
     self.output_formats.addItems(list(map(QString, [x.upper() for x in
         output_formats])))
     self.output_formats.setCurrentIndex(output_formats.index(preferred_output_format))
예제 #5
0
def extract_threaded(ids, db, log=None, abort=None, notifications=None):
    '''
    In combination with start_extract_threaded this function performs
    the scan of the book(s) from a separate thread.
    '''
    ids = list(ids)
    same_isbn_ids = []
    input_map = prefs['input_format_order']
    failed_ids = list()
    no_format_ids = list()
    extracted_ids = []
    count = 0
    for book_id in ids:
        if abort.is_set():
            log.error('Aborting...')
            break
        mi = db.get_metadata(book_id, index_is_id=True, get_user_categories=False)
        title, formats = mi.title, mi.formats
        if not formats:
            log.error('  No formats available for', title)
            failed_ids.append((book_id, title))
            no_format_ids.append((book_id, title))
        else:
            # Sorted formats using the preferred input conversion list.
            sorted_formats = sort_formats_by_preference(formats, input_map)
            paths_for_formats = []
            for f in sorted_formats:
                paths_for_formats.append((f, db.format_abspath(book_id, f, index_is_id=True)))
            isbn = None
            try:
                isbn = scan_for_isbn(log, Event(), title, paths_for_formats)
            except:
                pass
            if isbn:
                if mi.isbn == isbn:
                    log.debug('  Identical ISBN extracted of: %s'%(isbn,))
                    same_isbn_ids.append((book_id, title))
                else:
                    log.warn('  New ISBN extracted of: %s'%(isbn,))
                    extracted_ids.append((book_id, title, mi.last_modified, isbn))
            else:
                log.error('  Failed to extract ISBN')
                failed_ids.append((book_id, title))
        log.info('===================================================')
        count += 1
        notifications.put((count/len(ids),
            _('Scanned %d of %d')%(count, len(ids))))
    log('Scan complete, with %d failures'%len(failed_ids))
    return (extracted_ids, same_isbn_ids, failed_ids, no_format_ids)
예제 #6
0
 def setup_output_formats(self, db, preferred_output_format):
     if preferred_output_format:
         preferred_output_format = preferred_output_format.lower()
     output_formats = sorted(available_output_formats(),
                             key=lambda x: {
                                 'EPUB': '!A',
                                 'MOBI': '!B'
                             }.get(x.upper(), x))
     output_formats.remove('oeb')
     preferred_output_format = preferred_output_format if \
         preferred_output_format and preferred_output_format \
         in output_formats else sort_formats_by_preference(output_formats,
                 prefs['output_format'])[0]
     self.output_formats.addItems(
         list(map(QString, [x.upper() for x in output_formats])))
     self.output_formats.setCurrentIndex(
         output_formats.index(preferred_output_format))