mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Allow ebook-metadata to work with read-only files when no options are specified to change metadata. Fixes #1504345 [ebook-meta does not work on read-only files](https://bugs.launchpad.net/calibre/+bug/1504345)
This commit is contained in:
parent
bc0c3d90a6
commit
ecd94450e9
@ -165,7 +165,6 @@ def main(args=sys.argv):
|
|||||||
prints(_('No file specified'), file=sys.stderr)
|
prints(_('No file specified'), file=sys.stderr)
|
||||||
return 1
|
return 1
|
||||||
path = args[1]
|
path = args[1]
|
||||||
stream = open(path, 'r+b')
|
|
||||||
stream_type = os.path.splitext(path)[1].replace('.', '').lower()
|
stream_type = os.path.splitext(path)[1].replace('.', '').lower()
|
||||||
|
|
||||||
trying_to_set = False
|
trying_to_set = False
|
||||||
@ -175,7 +174,8 @@ def main(args=sys.argv):
|
|||||||
if getattr(opts, pref.name) is not None:
|
if getattr(opts, pref.name) is not None:
|
||||||
trying_to_set = True
|
trying_to_set = True
|
||||||
break
|
break
|
||||||
mi = get_metadata(stream, stream_type, force_read_metadata=True)
|
with open(path, 'rb') as stream:
|
||||||
|
mi = get_metadata(stream, stream_type, force_read_metadata=True)
|
||||||
if trying_to_set:
|
if trying_to_set:
|
||||||
prints(_('Original metadata')+'::')
|
prints(_('Original metadata')+'::')
|
||||||
metadata = unicode(mi)
|
metadata = unicode(mi)
|
||||||
@ -184,16 +184,16 @@ def main(args=sys.argv):
|
|||||||
prints(metadata, safe_encode=True)
|
prints(metadata, safe_encode=True)
|
||||||
|
|
||||||
if trying_to_set:
|
if trying_to_set:
|
||||||
stream.seek(0)
|
with open(path, 'r+b') as stream:
|
||||||
do_set_metadata(opts, mi, stream, stream_type)
|
do_set_metadata(opts, mi, stream, stream_type)
|
||||||
stream.seek(0)
|
stream.seek(0)
|
||||||
stream.flush()
|
stream.flush()
|
||||||
lrf = None
|
lrf = None
|
||||||
if stream_type == 'lrf':
|
if stream_type == 'lrf':
|
||||||
if opts.lrf_bookid is not None:
|
if opts.lrf_bookid is not None:
|
||||||
lrf = LRFMetaFile(stream)
|
lrf = LRFMetaFile(stream)
|
||||||
lrf.book_id = opts.lrf_bookid
|
lrf.book_id = opts.lrf_bookid
|
||||||
mi = get_metadata(stream, stream_type, force_read_metadata=True)
|
mi = get_metadata(stream, stream_type, force_read_metadata=True)
|
||||||
prints('\n' + _('Changed metadata') + '::')
|
prints('\n' + _('Changed metadata') + '::')
|
||||||
metadata = unicode(mi)
|
metadata = unicode(mi)
|
||||||
metadata = '\t'+'\n\t'.join(metadata.split('\n'))
|
metadata = '\t'+'\n\t'.join(metadata.split('\n'))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user