mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-07 10:14:46 -04:00
DRYer
This commit is contained in:
parent
679877607d
commit
dba94e1b5b
@ -60,6 +60,7 @@ COVER_FILE_NAME = 'cover.jpg'
|
||||
METADATA_FILE_NAME = 'metadata.opf'
|
||||
DEFAULT_TRASH_EXPIRY_TIME_SECONDS = 14 * 86400
|
||||
TRASH_DIR_NAME = '.caltrash'
|
||||
DATA_DIR_NAME = 'data'
|
||||
BOOK_ID_PATH_TEMPLATE = ' ({})'
|
||||
CUSTOM_DATA_TYPES = frozenset(('rating', 'text', 'comments', 'datetime',
|
||||
'int', 'float', 'bool', 'series', 'composite', 'enumeration'))
|
||||
|
@ -5,18 +5,21 @@ __license__ = 'GPL v3'
|
||||
__copyright__ = '2014, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||
|
||||
import os
|
||||
from functools import partial
|
||||
from contextlib import suppress
|
||||
from functools import partial
|
||||
|
||||
from calibre import prepare_string_for_xml, force_unicode
|
||||
from calibre.ebooks.metadata import fmt_sidx, rating_to_stars
|
||||
from calibre.ebooks.metadata.search_internet import name_for, url_for_author_search, url_for_book_search, qquote, DEFAULT_AUTHOR_SOURCE
|
||||
from calibre.ebooks.metadata.sources.identify import urls_from_identifiers
|
||||
from calibre import force_unicode, prepare_string_for_xml
|
||||
from calibre.constants import filesystem_encoding
|
||||
from calibre.db.backend import DATA_DIR_NAME
|
||||
from calibre.ebooks.metadata import fmt_sidx, rating_to_stars
|
||||
from calibre.ebooks.metadata.search_internet import (
|
||||
DEFAULT_AUTHOR_SOURCE, name_for, qquote, url_for_author_search, url_for_book_search,
|
||||
)
|
||||
from calibre.ebooks.metadata.sources.identify import urls_from_identifiers
|
||||
from calibre.library.comments import comments_to_html, markdown
|
||||
from calibre.utils.icu import sort_key
|
||||
from calibre.utils.date import format_date, is_date_undefined
|
||||
from calibre.utils.formatter import EvalFormatter
|
||||
from calibre.utils.date import is_date_undefined, format_date
|
||||
from calibre.utils.icu import sort_key
|
||||
from calibre.utils.localization import calibre_langcode_to_name
|
||||
from calibre.utils.serialize import json_dumps
|
||||
from polyglot.binary import as_hex_unicode
|
||||
@ -213,7 +216,7 @@ def mi_to_html(
|
||||
link = '<a href="{}" title="{}">{}</a>{}'.format(action(scheme, book_id=book_id, loc=loc),
|
||||
prepare_string_for_xml(path, True), _('Click to open'), extra)
|
||||
if not isdevice:
|
||||
data_path = os.path.join(path, 'data')
|
||||
data_path = os.path.join(path, DATA_DIR_NAME)
|
||||
with suppress(OSError):
|
||||
if os.listdir(data_path):
|
||||
link += ' \xa0 <a href="{}" title="{}">{}</a>'.format(
|
||||
|
@ -9,12 +9,13 @@ import json
|
||||
import os
|
||||
import time
|
||||
from functools import partial
|
||||
from qt.core import QAction, QIcon, pyqtSignal, QDialog
|
||||
from qt.core import QAction, QDialog, QIcon, pyqtSignal
|
||||
|
||||
from calibre.constants import ismacos, iswindows
|
||||
from calibre.db.backend import DATA_DIR_NAME
|
||||
from calibre.gui2 import (
|
||||
Dispatcher, config, elided_text, error_dialog, info_dialog, open_local_file,
|
||||
question_dialog
|
||||
question_dialog,
|
||||
)
|
||||
from calibre.gui2.actions import InterfaceAction
|
||||
from calibre.gui2.dialogs.choose_format import ChooseFormatDialog
|
||||
@ -283,7 +284,7 @@ class ViewAction(InterfaceAction):
|
||||
|
||||
def view_data_folder_for_id(self, id_):
|
||||
path = self.gui.library_view.model().db.abspath(id_, index_is_id=True)
|
||||
open_local_file(os.path.join(path, 'data'))
|
||||
open_local_file(os.path.join(path, DATA_DIR_NAME))
|
||||
|
||||
def view_book(self, triggered):
|
||||
rows = self.gui.current_view().selectionModel().selectedRows()
|
||||
|
@ -15,6 +15,7 @@ from qt.core import (
|
||||
|
||||
from calibre import fit_image, sanitize_file_name
|
||||
from calibre.constants import config_dir, iswindows
|
||||
from calibre.db.backend import DATA_DIR_NAME
|
||||
from calibre.ebooks import BOOK_EXTENSIONS
|
||||
from calibre.ebooks.metadata.book.base import Metadata, field_metadata
|
||||
from calibre.ebooks.metadata.book.render import mi_to_html
|
||||
@ -476,7 +477,7 @@ def create_copy_links(menu, data=None):
|
||||
link(_('Link to show book in calibre'), f'calibre://show-book/{library_id}/{book_id}')
|
||||
link(_('Link to show book details in a popup window'), f'calibre://book-details/{library_id}/{book_id}')
|
||||
mi = db.new_api.get_proxy_metadata(book_id)
|
||||
data_path = os.path.join(db.backend.library_path, mi.path, 'data')
|
||||
data_path = os.path.join(db.backend.library_path, mi.path, DATA_DIR_NAME)
|
||||
with suppress(OSError):
|
||||
if os.listdir(data_path):
|
||||
if iswindows:
|
||||
|
@ -19,6 +19,7 @@ from qt.core import (
|
||||
)
|
||||
|
||||
from calibre import xml_replace_entities
|
||||
from calibre.db.backend import DATA_DIR_NAME
|
||||
from calibre.ebooks.chardet import xml_to_unicode
|
||||
from calibre.gui2 import (
|
||||
NO_URL_FORMATTING, choose_dir, choose_files, error_dialog, gprefs, is_dark_theme,
|
||||
@ -707,7 +708,7 @@ class EditorWidget(QTextEdit, LineEditECM): # {{{
|
||||
d.bb = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok|QDialogButtonBox.StandardButton.Cancel)
|
||||
d.br = b = QPushButton(_('&File'))
|
||||
base = os.path.dirname(self.base_url.toLocalFile()) if self.base_url else os.getcwd()
|
||||
data_path = os.path.join(base, 'data')
|
||||
data_path = os.path.join(base, DATA_DIR_NAME)
|
||||
if self.base_url:
|
||||
os.makedirs(data_path, exist_ok=True)
|
||||
|
||||
|
@ -12,13 +12,15 @@ import traceback
|
||||
|
||||
from calibre import isbytestring
|
||||
from calibre.constants import filesystem_encoding
|
||||
from calibre.db.backend import COVER_FILE_NAME, METADATA_FILE_NAME, TRASH_DIR_NAME
|
||||
from calibre.db.backend import (
|
||||
COVER_FILE_NAME, DATA_DIR_NAME, METADATA_FILE_NAME, TRASH_DIR_NAME,
|
||||
)
|
||||
from calibre.ebooks import BOOK_EXTENSIONS
|
||||
from calibre.utils.localization import _
|
||||
from polyglot.builtins import iteritems
|
||||
|
||||
EBOOK_EXTENSIONS = frozenset(BOOK_EXTENSIONS)
|
||||
NORMALS = frozenset({METADATA_FILE_NAME, COVER_FILE_NAME, 'data'})
|
||||
NORMALS = frozenset({METADATA_FILE_NAME, COVER_FILE_NAME, DATA_DIR_NAME})
|
||||
IGNORE_AT_TOP_LEVEL = frozenset({'metadata.db', 'metadata_db_prefs_backup.json', 'metadata_pre_restore.db', 'full-text-search.db', TRASH_DIR_NAME})
|
||||
|
||||
'''
|
||||
|
Loading…
x
Reference in New Issue
Block a user