1
from __future__ import with_statement
3
__copyright__ = '2009, Kovid Goyal kovid@kovidgoyal.net'
4
__docformat__ = 'restructuredtext en'
7
Convert feeds to MOBI ebook
11
from calibre.web.feeds.main import config as feeds2disk_config, USAGE, run_recipe
12
from calibre.ebooks.mobi.writer import config as oeb2mobi_config, oeb2mobi
13
from calibre.ptempfile import TemporaryDirectory
14
from calibre import strftime, sanitize_file_name
16
def config(defaults=None):
17
c = feeds2disk_config(defaults=defaults)
21
c.remove('output_dir')
22
c.update(oeb2mobi_config(defaults=defaults))
24
c.remove('source_profile')
25
c.add_opt('output', ['-o', '--output'], default=None,
26
help=_('Output file. Default is derived from input filename.'))
31
return c.option_parser(usage=USAGE)
33
def convert(opts, recipe_arg, notification=None):
39
parser = option_parser()
40
with TemporaryDirectory('_feeds2mobi') as tdir:
41
opts.output_dir = tdir
42
recipe = run_recipe(opts, recipe_arg, parser, notification=notification)
44
recipe_opts = c.parse_string(recipe.oeb2mobi_options)
45
c.smart_update(recipe_opts, opts)
47
opf = glob.glob(os.path.join(tdir, '*.opf'))
49
raise Exception('Downloading of recipe: %s failed'%recipe_arg)
52
if opts.output is None:
53
fname = recipe.title + strftime(recipe.timefmt) + '.mobi'
54
opts.output = os.path.join(os.getcwd(), sanitize_file_name(fname))
56
print 'Generating MOBI...'
57
opts.encoding = 'utf-8'
58
opts.source_profile = 'Browser'
62
def main(args=sys.argv, notification=None, handler=None):
63
parser = option_parser()
64
opts, args = parser.parse_args(args)
65
if len(args) != 2 and opts.feeds is None:
68
recipe_arg = args[1] if len(args) > 1 else None
69
convert(opts, recipe_arg, notification=notification)
73
if __name__ == '__main__':
b'\\ No newline at end of file'