Exemplo n.º 1
0
def main(argv):
    global exporters
    opt_parser = argparse.ArgumentParser(description='Parse discogs release',
                                         epilog='''
You must specify either -d DATE or some files.
JSON output prints to stdout, any other output requires
that --params is used, e.g.:
--output pgsql
--params "host=localhost dbname=discogs user=pguser"

--output couchdb
--params "http://localhost:5353/"
''')
    opt_parser.add_argument('-n', type=int, help='Number of records to parse')
    opt_parser.add_argument('-d',
                            '--date',
                            help='Date of release. For example 20110301')
    opt_parser.add_argument('-o',
                            '--output',
                            choices=exporters.keys(),
                            default='json',
                            help='What to output to')
    opt_parser.add_argument(
        '-p', '--params', help='Parameters for output, e.g. connection string')
    opt_parser.add_argument(
        '-i',
        '--ignore-unknown-tags',
        action='store_true',
        dest='ignore_unknown_tags',
        help='Do not error out when encountering unknown tags')
    opt_parser.add_argument(
        '-q',
        '--quality',
        dest='data_quality',
        help='Comma-separated list of permissable data_quality values.')
    opt_parser.add_argument('-t',
                            type=int,
                            dest='number_of_workers',
                            default=1,
                            help='Number of exporter worker threads')
    opt_parser.add_argument('-v',
                            '--verbose',
                            action='store_true',
                            default=False,
                            help='If defined output is verbose')
    opt_parser.add_argument(
        'file',
        nargs='*',
        help=
        'Specific file(s) to import. Default is to parse artists, labels, releases matching -d'
    )
    global options
    options = opt_parser.parse_args(argv)
    print(options)

    if options.date is None and len(options.file) == 0:
        opt_parser.print_help()
        sys.exit(1)

    exporter = Exporter(options, jobs, exporters)
    parser = xml.sax.make_parser()
    timer = time.time()
    try:
        parse(parser, exporter, 'artists', artistHandler, options)
        parse(parser, exporter, 'labels', labelHandler, options)
        parse(parser, exporter, 'releases', releaseHandler, options)
        parse(parser, exporter, 'masters', masterHandler, options)
    finally:
        exporter.finish(completely_done=True)
        if options.verbose:
            print 'Running time was: %.2fs' % (time.time() - timer)