mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Try to import metadata from metadata.opf if it exists in the same directory as the book being added to the library.
This commit is contained in:
parent
d7c0d543fe
commit
d1053b7bb5
@ -21,16 +21,20 @@ from libprs500.ebooks.metadata.pdf import get_metadata as pdf_metadata
|
|||||||
from libprs500.ebooks.metadata.lit import get_metadata as lit_metadata
|
from libprs500.ebooks.metadata.lit import get_metadata as lit_metadata
|
||||||
from libprs500.ebooks.metadata.epub import get_metadata as epub_metadata
|
from libprs500.ebooks.metadata.epub import get_metadata as epub_metadata
|
||||||
from libprs500.ebooks.metadata.html import get_metadata as html_metadata
|
from libprs500.ebooks.metadata.html import get_metadata as html_metadata
|
||||||
|
from libprs500.ebooks.metadata.opf import OPFReader
|
||||||
from libprs500.ebooks.metadata.rtf import set_metadata as set_rtf_metadata
|
from libprs500.ebooks.metadata.rtf import set_metadata as set_rtf_metadata
|
||||||
from libprs500.ebooks.lrf.meta import set_metadata as set_lrf_metadata
|
from libprs500.ebooks.lrf.meta import set_metadata as set_lrf_metadata
|
||||||
|
|
||||||
from libprs500.ebooks.metadata import MetaInformation
|
from libprs500.ebooks.metadata import MetaInformation
|
||||||
|
|
||||||
def get_metadata(stream, stream_type='lrf'):
|
def get_metadata(stream, stream_type='lrf', use_libprs_metadata=False):
|
||||||
if stream_type: stream_type = stream_type.lower()
|
if stream_type: stream_type = stream_type.lower()
|
||||||
if stream_type in ('html', 'html', 'xhtml', 'xhtm'):
|
if stream_type in ('html', 'html', 'xhtml', 'xhtm'):
|
||||||
stream_type = 'html'
|
stream_type = 'html'
|
||||||
|
if use_libprs_metadata and hasattr(stream, 'name'):
|
||||||
|
mi = libprs_metadata(stream.name)
|
||||||
|
if mi is not None:
|
||||||
|
return mi
|
||||||
try:
|
try:
|
||||||
func = eval(stream_type + '_metadata')
|
func = eval(stream_type + '_metadata')
|
||||||
mi = func(stream)
|
mi = func(stream)
|
||||||
@ -78,4 +82,11 @@ def metadata_from_filename(name):
|
|||||||
if not mi.title:
|
if not mi.title:
|
||||||
mi.title = name
|
mi.title = name
|
||||||
return mi
|
return mi
|
||||||
|
|
||||||
|
def libprs_metadata(name):
|
||||||
|
if os.access(name, os.R_OK):
|
||||||
|
name = os.path.abspath(name)
|
||||||
|
f = open(name, 'rb')
|
||||||
|
opf = OPFReader(f, os.path.dirname(name))
|
||||||
|
if opf.libprs_id is not None:
|
||||||
|
return MetaInformation(opf, None)
|
@ -459,7 +459,7 @@ class OPF(MetaInformation):
|
|||||||
|
|
||||||
class OPFReader(OPF):
|
class OPFReader(OPF):
|
||||||
|
|
||||||
def __init__(self, stream, dir=os.getcwd()):
|
def __init__(self, stream, dir=os.getcwdu()):
|
||||||
manage = False
|
manage = False
|
||||||
if not hasattr(stream, 'read'):
|
if not hasattr(stream, 'read'):
|
||||||
manage = True
|
manage = True
|
||||||
|
@ -298,7 +298,7 @@ class Main(MainWindow, Ui_MainWindow):
|
|||||||
format = os.path.splitext(book)[1]
|
format = os.path.splitext(book)[1]
|
||||||
format = format[1:] if format else None
|
format = format[1:] if format else None
|
||||||
stream = open(book, 'rb')
|
stream = open(book, 'rb')
|
||||||
mi = get_metadata(stream, stream_type=format)
|
mi = get_metadata(stream, stream_type=format, use_libprs_metadata=True)
|
||||||
if not mi.title:
|
if not mi.title:
|
||||||
mi.title = os.path.splitext(os.path.basename(book))[0]
|
mi.title = os.path.splitext(os.path.basename(book))[0]
|
||||||
formats.append(format)
|
formats.append(format)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user