mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Port calibredb add_format
This commit is contained in:
parent
0e757634a0
commit
6782fde633
57
src/calibre/db/cli/cmd_add_format.py
Normal file
57
src/calibre/db/cli/cmd_add_format.py
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#!/usr/bin/env python2
|
||||||
|
# vim:fileencoding=utf-8
|
||||||
|
# License: GPLv3 Copyright: 2017, Kovid Goyal <kovid at kovidgoyal.net>
|
||||||
|
|
||||||
|
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||||
|
|
||||||
|
import os
|
||||||
|
from io import BytesIO
|
||||||
|
|
||||||
|
from calibre.srv.changes import formats_removed
|
||||||
|
|
||||||
|
readonly = False
|
||||||
|
|
||||||
|
|
||||||
|
def implementation(db, notify_changes, book_id, data, fmt, replace):
|
||||||
|
is_remote = notify_changes is not None
|
||||||
|
if is_remote:
|
||||||
|
data = BytesIO(data[1])
|
||||||
|
added = db.add_format(book_id, fmt, data, replace=replace)
|
||||||
|
if is_remote and added:
|
||||||
|
notify_changes(formats_removed({book_id: fmt}))
|
||||||
|
return added
|
||||||
|
|
||||||
|
|
||||||
|
def option_parser(get_parser):
|
||||||
|
parser = get_parser(
|
||||||
|
_(
|
||||||
|
'''\
|
||||||
|
%prog add_format [options] id ebook_file
|
||||||
|
|
||||||
|
Add the e-book in ebook_file to the available formats for the logical book identified \
|
||||||
|
by id. You can get id by using the search command. If the format already exists, \
|
||||||
|
it is replaced, unless the do not replace option is specified.\
|
||||||
|
'''
|
||||||
|
)
|
||||||
|
)
|
||||||
|
parser.add_option(
|
||||||
|
'--dont-replace',
|
||||||
|
dest='replace',
|
||||||
|
default=True,
|
||||||
|
action='store_false',
|
||||||
|
help=_('Do not replace the format if it already exists')
|
||||||
|
)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
|
||||||
|
def main(opts, args, dbctx):
|
||||||
|
if len(args) < 2:
|
||||||
|
raise SystemExit(_('You must specify an id and an e-book file'))
|
||||||
|
|
||||||
|
id, path, fmt = int(args[0]), args[1], os.path.splitext(args[1])[-1]
|
||||||
|
if not fmt:
|
||||||
|
raise SystemExit(_('e-book file must have an extension'))
|
||||||
|
fmt = fmt[1:].upper()
|
||||||
|
if not dbctx.run('add_format', id, dbctx.path(path), fmt, opts.replace):
|
||||||
|
raise SystemExit(_('A %(fmt)s file already exists for book: %(id)d, not replacing')%dict(fmt=fmt, id=id))
|
||||||
|
return 0
|
@ -13,5 +13,9 @@ def formats_added(formats_map):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def formats_removed(formats_map):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def books_deleted(book_ids):
|
def books_deleted(book_ids):
|
||||||
pass
|
pass
|
||||||
|
Loading…
x
Reference in New Issue
Block a user