mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-03 19:17:02 -05:00 
			
		
		
		
	Fix #1593520 [metadata refactoring in HEAD broke polish book](https://bugs.launchpad.net/calibre/+bug/1593520)
This commit is contained in:
		
							parent
							
								
									390884076a
								
							
						
					
					
						commit
						1c7012507c
					
				@ -276,7 +276,7 @@ def set_metadata(stream, mi, apply_null=False, update_timestamp=False, force_ide
 | 
				
			|||||||
            pass
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    opfbytes, ver, raster_cover = set_metadata_opf(
 | 
					    opfbytes, ver, raster_cover = set_metadata_opf(
 | 
				
			||||||
        reader.read_bytes(reader.opf_path), posixpath.dirname(reader.opf_path), mi,
 | 
					        reader.read_bytes(reader.opf_path), mi, cover_prefix=posixpath.dirname(reader.opf_path),
 | 
				
			||||||
        cover_data=new_cdata, apply_null=apply_null, update_timestamp=update_timestamp, force_identifiers=force_identifiers)
 | 
					        cover_data=new_cdata, apply_null=apply_null, update_timestamp=update_timestamp, force_identifiers=force_identifiers)
 | 
				
			||||||
    cpath = None
 | 
					    cpath = None
 | 
				
			||||||
    replacements = {}
 | 
					    replacements = {}
 | 
				
			||||||
 | 
				
			|||||||
@ -64,7 +64,7 @@ def set_metadata_opf2(root, cover_prefix, mi, opf_version, cover_data=None, appl
 | 
				
			|||||||
    with pretty_print:
 | 
					    with pretty_print:
 | 
				
			||||||
        return opf.render(), raster_cover
 | 
					        return opf.render(), raster_cover
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def set_metadata(stream, cover_prefix, mi, cover_data=None, apply_null=False, update_timestamp=False, force_identifiers=False):
 | 
					def set_metadata(stream, mi, cover_prefix='', cover_data=None, apply_null=False, update_timestamp=False, force_identifiers=False):
 | 
				
			||||||
    if isinstance(stream, bytes):
 | 
					    if isinstance(stream, bytes):
 | 
				
			||||||
        stream = DummyFile(stream)
 | 
					        stream = DummyFile(stream)
 | 
				
			||||||
    root = parse_opf(stream)
 | 
					    root = parse_opf(stream)
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@ __license__   = 'GPL v3'
 | 
				
			|||||||
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
 | 
					__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
 | 
				
			||||||
__docformat__ = 'restructuredtext en'
 | 
					__docformat__ = 'restructuredtext en'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import re, sys, os, time
 | 
					import re, sys, time
 | 
				
			||||||
from collections import namedtuple
 | 
					from collections import namedtuple
 | 
				
			||||||
from functools import partial
 | 
					from functools import partial
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -126,20 +126,14 @@ CLI_HELP = {x:hfix(x, re.sub('<.*?>', '', y)) for x, y in HELP.iteritems()}
 | 
				
			|||||||
# }}}
 | 
					# }}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def update_metadata(ebook, new_opf):
 | 
					def update_metadata(ebook, new_opf):
 | 
				
			||||||
    from calibre.ebooks.metadata.opf2 import OPF
 | 
					    from calibre.ebooks.metadata.opf import get_metadata, set_metadata
 | 
				
			||||||
    from calibre.ebooks.metadata.epub import update_metadata
 | 
					 | 
				
			||||||
    opfpath = ebook.name_to_abspath(ebook.opf_name)
 | 
					 | 
				
			||||||
    with ebook.open(ebook.opf_name, 'r+b') as stream, open(new_opf, 'rb') as ns:
 | 
					    with ebook.open(ebook.opf_name, 'r+b') as stream, open(new_opf, 'rb') as ns:
 | 
				
			||||||
        opf = OPF(stream, basedir=os.path.dirname(opfpath), populate_spine=False,
 | 
					        mi = get_metadata(ns)[0]
 | 
				
			||||||
                  unquote_urls=False)
 | 
					 | 
				
			||||||
        mi = OPF(ns, unquote_urls=False,
 | 
					 | 
				
			||||||
                      populate_spine=False).to_book_metadata()
 | 
					 | 
				
			||||||
        mi.cover, mi.cover_data = None, (None, None)
 | 
					        mi.cover, mi.cover_data = None, (None, None)
 | 
				
			||||||
 | 
					        opfbytes = set_metadata(stream, mi, apply_null=True, update_timestamp=True)[0]
 | 
				
			||||||
        update_metadata(opf, mi, apply_null=True, update_timestamp=True)
 | 
					 | 
				
			||||||
        stream.seek(0)
 | 
					        stream.seek(0)
 | 
				
			||||||
        stream.truncate()
 | 
					        stream.truncate()
 | 
				
			||||||
        stream.write(opf.render())
 | 
					        stream.write(opfbytes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def polish_one(ebook, opts, report, customization=None):
 | 
					def polish_one(ebook, opts, report, customization=None):
 | 
				
			||||||
    rt = lambda x: report('\n### ' + x)
 | 
					    rt = lambda x: report('\n### ' + x)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user