X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=scripts%2Fml-import.py;h=bc4b6b39ca7299cd2c17827742422b09812cb14c;hb=f5f7e40267b3e58f4999c4b00a7b8802e2021958;hp=5275d0b2bb34b54a37fb4435b275f6ff6b85c020;hpb=76520f33bced1f7f94a2052f24a6cb748f0693cd;p=m_librarian.git diff --git a/scripts/ml-import.py b/scripts/ml-import.py index 5275d0b..bc4b6b3 100755 --- a/scripts/ml-import.py +++ b/scripts/ml-import.py @@ -1,15 +1,58 @@ #! /usr/bin/env python +from __future__ import print_function +import argparse import sys -from m_librarian.db import init_db, update_counters -from m_librarian.glst import import_data + +from m_librarian.config import get_config +from m_librarian.db import open_db, init_db, update_counters +from m_librarian.glst import import_glst from m_librarian.inp import import_inpx +from m_librarian.pbar import ttyProgressBar +if ttyProgressBar: + from m_librarian.pbar import ml_ttyProgressBar if __name__ == '__main__': - if len(sys.argv) != 2: - sys.exit("Usage: %s file.inpx" % sys.argv[0]) + parser = argparse.ArgumentParser(description='Import') + parser.add_argument('-C', '--config', help='configuration file') + parser.add_argument('-D', '--database', help='database URI') + parser.add_argument('-P', '--no-pbar', action='store_true', + help='inhibit progress bar') + parser.add_argument('inpx', nargs='+', help='INPX files to import') + args = parser.parse_args() + + if args.config: + get_config(args.config) # Get and cache config file + + open_db(args.database) init_db() - import_data() - for inpx in sys.argv[1:]: - import_inpx(inpx) - update_counters() + + count_old, count_new = import_glst() + if count_old: + print("Imported %d genres (ignored %d existing)" % ( + count_new, count_old)) + else: + print("Imported %d genres" % count_new) + + use_pbar = ttyProgressBar and not args.no_pbar and sys.stdout.isatty() + for inpx in args.inpx: + if use_pbar: + if len(inpx) > 25: + pbar_fname = inpx[:22] + '...' + else: + pbar_fname = inpx + print(pbar_fname.ljust(20), end=': ') + sys.stdout.flush() + pbar = ml_ttyProgressBar() + import_inpx(inpx, pbar_cb=pbar) + print("Ok") + else: + import_inpx(inpx) + if use_pbar: + print("Updating counters", end=': ') + sys.stdout.flush() + pbar = ml_ttyProgressBar() + update_counters(pbar_cb=pbar) + print("Ok") + else: + update_counters()