1
0
mirror of https://github.com/gryf/ebook-converter.git synced 2026-02-01 19:45:45 +01:00

Starting rewrite of the converting process.

This commit is contained in:
2021-06-28 22:03:30 +02:00
parent 3f57198f91
commit cf9fe0155b

View File

@@ -1,12 +1,94 @@
#!/usr/bin/env python
import argparse
import mimetypes
import os
import pkg_resources
import sys
from ebook_converter.ebooks.conversion.cli import main
from ebook_converter import logging
from ebook_converter.customize.conversion import OptionRecommendation
def run():
sys.exit(main())
LOG = logging.default_log
def abspath(x):
if x.startswith('http:') or x.startswith('https:'):
return x
return os.path.abspath(os.path.expanduser(x))
def progress_bar(frac, msg=''):
# TODO(gryf): get rid of this crap - this is used by plumber under
# ui_reporter and self.global_reporter
if msg:
percent = int(frac * 100)
LOG.info('%d%% %s' % (percent, msg))
def create_option_parser(args):
# parser = option_parser()
input_file, output_file = args.from_file, args.to_file
if os.path.abspath(input_file) == os.path.abspath(output_file):
raise ValueError('Input file is the same as the output file')
# TODO(gryf): Plumber has to be imported late, because first mimetypes
# needs to be updated.
from ebook_converter.ebooks.conversion.plumber import Plumber
plumber = Plumber(input_file, output_file, LOG, progress_bar)
# add_input_output_options(parser, plumber)
# add_pipeline_options(parser, plumber)
return plumber
def run(args):
mimetypes.init([pkg_resources.
resource_filename('ebook_converter', 'data/mime.types')])
plumber = create_option_parser(args)
# TODO(gryf): perhaps there is a need to recreate commandline options for
# certain formats - for sure it's needed to consider if they have some
# sense or not.
# opts, leftover_args = parser.parse_args(args)
# for x in ('read_metadata_from_opf', 'cover'):
# if getattr(opts, x, None) is not None:
# setattr(opts, x, abspath(getattr(opts, x)))
# recommendations = [(n.dest, getattr(opts, n.dest),
# OptionRecommendation.HIGH)
# for n in parser.options_iter() if n.dest]
# plumber.merge_ui_recommendations(recommendations)
plumber.run()
LOG.info('Output saved to %s', plumber.output)
return 0
def main():
parser = argparse.ArgumentParser()
parser.add_argument('from_file', help="Input file to be converted")
parser.add_argument('to_file', help="Output file to be written to")
parser.add_argument('-v', '--verbose', action='count', default=0,
help='be verbose. Adding more "v" will increase '
'verbosity')
parser.add_argument('-q', '--quiet', action='count', default=0,
help='suppress output. Adding more "q" will make '
'boxpy to shut up.')
args = parser.parse_args()
LOG.set_verbose(args.verbose, args.quiet)
print(args)
sys.exit(run(args))
if __name__ == '__main__':
run()
main()