%PDF- %PDF-
| Direktori : /lib/calibre/calibre/db/cli/ |
| Current File : //lib/calibre/calibre/db/cli/cmd_backup_metadata.py |
#!/usr/bin/env python3
# License: GPLv3 Copyright: 2017, Kovid Goyal <kovid at kovidgoyal.net>
from calibre import prints
readonly = True
version = 0 # change this if you change signature of implementation()
no_remote = True
def implementation(db, notify_changes, *args):
raise NotImplementedError()
def option_parser(get_parser, args):
parser = get_parser(
_(
'''\
%prog backup_metadata [options]
Backup the metadata stored in the database into individual OPF files in each
books folder. This normally happens automatically, but you can run this
command to force re-generation of the OPF files, with the --all option.
Note that there is normally no need to do this, as the OPF files are backed up
automatically, every time metadata is changed.
'''
)
)
parser.add_option(
'--all',
default=False,
action='store_true',
help=_(
'Normally, this command only operates on books that have'
' out of date OPF files. This option makes it operate on all'
' books.'
)
)
return parser
class BackupProgress:
def __init__(self):
self.total = 0
self.count = 0
def __call__(self, book_id, mi, ok):
if mi is True:
self.total = book_id
else:
self.count += 1
prints(
'{:.1f}% {} - {}'.format((self.count * 100) / float(self.total), book_id,
getattr(mi, 'title', 'Unknown'))
)
def main(opts, args, dbctx):
db = dbctx.db
book_ids = None
if opts.all:
book_ids = db.all_ids()
db.dump_metadata(book_ids=book_ids, callback=BackupProgress())
return 0