Esempio n. 1
0
def main():
    args = parse_args(sys.argv[1:]) or exit()

    if args.verbose:
        root_logger = getLogger()
        root_logger.setLevel(logging.DEBUG)

    if args.quiet:
        root_logger = getLogger()
        root_logger.setLevel(logging.CRITICAL)

    grabber_manager = GrabberManager()
    grabber_manager.load_from_dir(config['grabbers_dir'])
    if args.grabbers:
        for grabber in grabber_manager.all_grabbers():
            logging.info("%s '%s'", grabber.name, grabber.info)
        exit()

    if args.grabber:
        grabber = grabber_manager.get(args.grabber)
        if grabber is None:
            fatal("Grabber '%s' does not exists", args.grabber)
        logging.debug("Grab by '%s' grabber", grabber.name)
    else:
        grabber = None

    title = args.title
    epub_name = None
    logging.debug('Getting pages...')
    if len(args.sources) == 1:
        url = args.sources[0]
        grabber = grabber or grabber_manager.get_suitable(url)
        info, stream, images = grabber.grab(url)
        title = title or info['title'] or args.out
        if not title:
            url = url.rstrip('/')
            title = os.path.split(url)[1]

        if args.out:
            try:
                epub_name = args.out.format(**info)
            except KeyError as exc:
                fatal("Error in output format key: %s", exc)
        else:
            fmt = '{date} {title}'.format(**info)
            if fmt.strip():
                epub_name = fmt
        lang = args.lang or info.get('lang')
        builder = EpubBuilder(title, lang=lang,
            creator=info.get('creator'), date=info.get('create_date'))
        add2builder(builder, 'ch1.html', stream, info, images)
    else:
        # TODO pass arg 'lang' to EpubBuilder(..., lang=language)
        builder = EpubBuilder(title)
        for i, url in enumerate(args.sources, 1):
            grabber = grabber or grabber_manager.get_suitable(url)
            info, stream, images = grabber.grab(url)
            add2builder(builder, 'ch{}.html'.format(i), stream, info, images)

    dest = epub_name or title[:config['autoname_len']]
    if os.path.splitext(dest)[1] != '.epub':
        dest = '{}.epub'.format(dest)
    if args.no_spaces:
        dest = dest.replace(' ', '_')

    logging.debug('Building book...')
    builder.build(dest=dest)
    logging.info('Complete. Saved to "%s"', dest)
Esempio n. 2
0
#!/usr/bin/env python

from grabber_manager import GrabberManager
from grabber_worker import GrabberWorker
from calc_manager import CalcManager
from calc_worker import CalcWorker

from core.msgh import MsghMgr

msgh = MsghMgr()

if __name__ == "__main__":
    gmgr = GrabberManager(msgh)
    gmgr.set_worker('grabberworker', GrabberWorker,
                    {'start':0, 'end': 1})
    gmgr.start()

    cmgr = CalcManager(msgh)
    cmgr.set_worker('calcworker', CalcWorker,
                    {'start':0, 'end': 1})
    cmgr.start()