Delay load the metadata read/write subsystem

This commit is contained in:
Kovid Goyal 2011-04-19 12:43:09 -06:00
parent f76307f9d5
commit 1206cb3304
7 changed files with 16 additions and 9 deletions

View File

@ -25,7 +25,6 @@ from calibre.devices.errors import FreeSpaceError
from calibre.devices.apple.driver import ITUNES_ASYNC from calibre.devices.apple.driver import ITUNES_ASYNC
from calibre.devices.folder_device.driver import FOLDER_DEVICE from calibre.devices.folder_device.driver import FOLDER_DEVICE
from calibre.devices.bambook.driver import BAMBOOK, BAMBOOKWifi from calibre.devices.bambook.driver import BAMBOOK, BAMBOOKWifi
from calibre.ebooks.metadata.meta import set_metadata
from calibre.constants import DEBUG from calibre.constants import DEBUG
from calibre.utils.config import prefs, tweaks from calibre.utils.config import prefs, tweaks
from calibre.utils.magick.draw import thumbnail from calibre.utils.magick.draw import thumbnail
@ -334,6 +333,7 @@ class DeviceManager(Thread): # {{{
def _upload_books(self, files, names, on_card=None, metadata=None, plugboards=None): def _upload_books(self, files, names, on_card=None, metadata=None, plugboards=None):
'''Upload books to device: ''' '''Upload books to device: '''
from calibre.ebooks.metadata.meta import set_metadata
if hasattr(self.connected_device, 'set_plugboards') and \ if hasattr(self.connected_device, 'set_plugboards') and \
callable(self.connected_device.set_plugboards): callable(self.connected_device.set_plugboards):
self.connected_device.set_plugboards(plugboards, find_plugboard) self.connected_device.set_plugboards(plugboards, find_plugboard)

View File

@ -13,7 +13,6 @@ from calibre.gui2.dialogs.metadata_bulk_ui import Ui_MetadataBulkDialog
from calibre.gui2.dialogs.tag_editor import TagEditor from calibre.gui2.dialogs.tag_editor import TagEditor
from calibre.ebooks.metadata import string_to_authors, authors_to_string, title_sort from calibre.ebooks.metadata import string_to_authors, authors_to_string, title_sort
from calibre.ebooks.metadata.book.base import composite_formatter from calibre.ebooks.metadata.book.base import composite_formatter
from calibre.ebooks.metadata.meta import get_metadata
from calibre.gui2.custom_column_widgets import populate_metadata_page from calibre.gui2.custom_column_widgets import populate_metadata_page
from calibre.gui2 import error_dialog, ResizableDialog, UNDEFINED_QDATE, \ from calibre.gui2 import error_dialog, ResizableDialog, UNDEFINED_QDATE, \
gprefs, question_dialog gprefs, question_dialog
@ -26,6 +25,7 @@ from calibre.utils.magick.draw import identify_data
from calibre.utils.date import qt_to_dt from calibre.utils.date import qt_to_dt
def get_cover_data(path): # {{{ def get_cover_data(path): # {{{
from calibre.ebooks.metadata.meta import get_metadata
old = prefs['read_file_metadata'] old = prefs['read_file_metadata']
if not old: if not old:
prefs['read_file_metadata'] = True prefs['read_file_metadata'] = True

View File

@ -25,7 +25,6 @@ from calibre.ebooks import BOOK_EXTENSIONS
from calibre.ebooks.metadata import string_to_authors, \ from calibre.ebooks.metadata import string_to_authors, \
authors_to_string, check_isbn, title_sort authors_to_string, check_isbn, title_sort
from calibre.ebooks.metadata.covers import download_cover from calibre.ebooks.metadata.covers import download_cover
from calibre.ebooks.metadata.meta import get_metadata
from calibre.ebooks.metadata import MetaInformation from calibre.ebooks.metadata import MetaInformation
from calibre.utils.config import prefs, tweaks from calibre.utils.config import prefs, tweaks
from calibre.utils.date import qt_to_dt, local_tz, utcfromtimestamp from calibre.utils.date import qt_to_dt, local_tz, utcfromtimestamp
@ -353,6 +352,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
self.formats_changed = True self.formats_changed = True
def get_selected_format_metadata(self): def get_selected_format_metadata(self):
from calibre.ebooks.metadata.meta import get_metadata
old = prefs['read_file_metadata'] old = prefs['read_file_metadata']
if not old: if not old:
prefs['read_file_metadata'] = True prefs['read_file_metadata'] = True

View File

@ -18,7 +18,6 @@ from calibre.ptempfile import PersistentTemporaryFile
from calibre.utils.config import tweaks, prefs from calibre.utils.config import tweaks, prefs
from calibre.utils.date import dt_factory, qt_to_dt, isoformat from calibre.utils.date import dt_factory, qt_to_dt, isoformat
from calibre.utils.icu import sort_key from calibre.utils.icu import sort_key
from calibre.ebooks.metadata.meta import set_metadata as _set_metadata
from calibre.utils.search_query_parser import SearchQueryParser from calibre.utils.search_query_parser import SearchQueryParser
from calibre.library.caches import _match, CONTAINS_MATCH, EQUALS_MATCH, \ from calibre.library.caches import _match, CONTAINS_MATCH, EQUALS_MATCH, \
REGEXP_MATCH, MetadataBackup, force_to_bool REGEXP_MATCH, MetadataBackup, force_to_bool
@ -478,6 +477,7 @@ class BooksModel(QAbstractTableModel): # {{{
def get_preferred_formats_from_ids(self, ids, formats, def get_preferred_formats_from_ids(self, ids, formats,
set_metadata=False, specific_format=None, set_metadata=False, specific_format=None,
exclude_auto=False, mode='r+b'): exclude_auto=False, mode='r+b'):
from calibre.ebooks.metadata.meta import set_metadata as _set_metadata
ans = [] ans = []
need_auto = [] need_auto = []
if specific_format is not None: if specific_format is not None:
@ -526,6 +526,7 @@ class BooksModel(QAbstractTableModel): # {{{
def get_preferred_formats(self, rows, formats, paths=False, def get_preferred_formats(self, rows, formats, paths=False,
set_metadata=False, specific_format=None, set_metadata=False, specific_format=None,
exclude_auto=False): exclude_auto=False):
from calibre.ebooks.metadata.meta import set_metadata as _set_metadata
ans = [] ans = []
need_auto = [] need_auto = []
if specific_format is not None: if specific_format is not None:

View File

@ -19,7 +19,6 @@ from calibre.gui2 import NONE, error_dialog, pixmap_to_data, gprefs
from calibre.gui2.filename_pattern_ui import Ui_Form from calibre.gui2.filename_pattern_ui import Ui_Form
from calibre import fit_image from calibre import fit_image
from calibre.ebooks import BOOK_EXTENSIONS from calibre.ebooks import BOOK_EXTENSIONS
from calibre.ebooks.metadata.meta import metadata_from_filename
from calibre.utils.config import prefs, XMLConfig, tweaks from calibre.utils.config import prefs, XMLConfig, tweaks
from calibre.gui2.progress_indicator import ProgressIndicator as _ProgressIndicator from calibre.gui2.progress_indicator import ProgressIndicator as _ProgressIndicator
from calibre.gui2.dnd import dnd_has_image, dnd_get_image, dnd_get_files, \ from calibre.gui2.dnd import dnd_has_image, dnd_get_image, dnd_get_files, \
@ -95,6 +94,7 @@ class FilenamePattern(QWidget, Ui_Form):
self.re.setCurrentIndex(0) self.re.setCurrentIndex(0)
def do_test(self): def do_test(self):
from calibre.ebooks.metadata.meta import metadata_from_filename
try: try:
pat = self.pattern() pat = self.pattern()
except Exception as err: except Exception as err:

View File

@ -15,7 +15,8 @@ from math import ceil
from PyQt4.QtGui import QImage from PyQt4.QtGui import QImage
from calibre import prints from calibre import prints
from calibre.ebooks.metadata import title_sort, author_to_author_sort from calibre.ebooks.metadata import (title_sort, author_to_author_sort,
string_to_authors, authors_to_string)
from calibre.ebooks.metadata.opf2 import metadata_to_opf from calibre.ebooks.metadata.opf2 import metadata_to_opf
from calibre.library.database import LibraryDatabase from calibre.library.database import LibraryDatabase
from calibre.library.field_metadata import FieldMetadata, TagsIcons from calibre.library.field_metadata import FieldMetadata, TagsIcons
@ -24,9 +25,7 @@ from calibre.library.caches import ResultCache
from calibre.library.custom_columns import CustomColumns from calibre.library.custom_columns import CustomColumns
from calibre.library.sqlite import connect, IntegrityError from calibre.library.sqlite import connect, IntegrityError
from calibre.library.prefs import DBPrefs from calibre.library.prefs import DBPrefs
from calibre.ebooks.metadata import string_to_authors, authors_to_string
from calibre.ebooks.metadata.book.base import Metadata from calibre.ebooks.metadata.book.base import Metadata
from calibre.ebooks.metadata.meta import get_metadata, metadata_from_formats
from calibre.constants import preferred_encoding, iswindows, isosx, filesystem_encoding from calibre.constants import preferred_encoding, iswindows, isosx, filesystem_encoding
from calibre.ptempfile import PersistentTemporaryFile from calibre.ptempfile import PersistentTemporaryFile
from calibre.customize.ui import run_plugins_on_import from calibre.customize.ui import run_plugins_on_import
@ -2729,6 +2728,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
self.set_identifier(id_, 'isbn', isbn, notify=notify, commit=commit) self.set_identifier(id_, 'isbn', isbn, notify=notify, commit=commit)
def add_catalog(self, path, title): def add_catalog(self, path, title):
from calibre.ebooks.metadata.meta import get_metadata
format = os.path.splitext(path)[1][1:].lower() format = os.path.splitext(path)[1][1:].lower()
with lopen(path, 'rb') as stream: with lopen(path, 'rb') as stream:
matches = self.data.get_matches('title', '='+title) matches = self.data.get_matches('title', '='+title)
@ -2764,6 +2765,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
def add_news(self, path, arg): def add_news(self, path, arg):
from calibre.ebooks.metadata.meta import get_metadata
format = os.path.splitext(path)[1][1:].lower() format = os.path.splitext(path)[1][1:].lower()
stream = path if hasattr(path, 'read') else lopen(path, 'rb') stream = path if hasattr(path, 'read') else lopen(path, 'rb')
stream.seek(0) stream.seek(0)
@ -3157,6 +3160,8 @@ books_series_link feeds
yield formats yield formats
def import_book_directory_multiple(self, dirpath, callback=None): def import_book_directory_multiple(self, dirpath, callback=None):
from calibre.ebooks.metadata.meta import metadata_from_formats
duplicates = [] duplicates = []
for formats in self.find_books_in_directory(dirpath, False): for formats in self.find_books_in_directory(dirpath, False):
mi = metadata_from_formats(formats) mi = metadata_from_formats(formats)
@ -3172,6 +3177,7 @@ books_series_link feeds
return duplicates return duplicates
def import_book_directory(self, dirpath, callback=None): def import_book_directory(self, dirpath, callback=None):
from calibre.ebooks.metadata.meta import metadata_from_formats
dirpath = os.path.abspath(dirpath) dirpath = os.path.abspath(dirpath)
formats = self.find_books_in_directory(dirpath, True) formats = self.find_books_in_directory(dirpath, True)
formats = list(formats)[0] formats = list(formats)[0]

View File

@ -14,7 +14,6 @@ from calibre.utils.formatter import TemplateFormatter
from calibre.utils.filenames import shorten_components_to, supports_long_names, \ from calibre.utils.filenames import shorten_components_to, supports_long_names, \
ascii_filename ascii_filename
from calibre.ebooks.metadata.opf2 import metadata_to_opf from calibre.ebooks.metadata.opf2 import metadata_to_opf
from calibre.ebooks.metadata.meta import set_metadata
from calibre.constants import preferred_encoding from calibre.constants import preferred_encoding
from calibre.ebooks.metadata import fmt_sidx from calibre.ebooks.metadata import fmt_sidx
from calibre.ebooks.metadata import title_sort from calibre.ebooks.metadata import title_sort
@ -251,6 +250,7 @@ def save_book_to_disk(id_, db, root, opts, length):
def do_save_book_to_disk(id_, mi, cover, plugboards, def do_save_book_to_disk(id_, mi, cover, plugboards,
format_map, root, opts, length): format_map, root, opts, length):
from calibre.ebooks.metadata.meta import set_metadata
available_formats = [x.lower().strip() for x in format_map.keys()] available_formats = [x.lower().strip() for x in format_map.keys()]
if opts.formats == 'all': if opts.formats == 'all':
asked_formats = available_formats asked_formats = available_formats