From 0ddbfe119c6bb6c19f4b5d553858b234894155a4 Mon Sep 17 00:00:00 2001 From: "Maxence G. de Montauzan" Date: Fri, 21 Apr 2017 20:35:24 +0200 Subject: [PATCH] Improve opt to enable sending artist & album data --- send_data.py | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/send_data.py b/send_data.py index 1b9d183..cc09f1c 100644 --- a/send_data.py +++ b/send_data.py @@ -44,6 +44,7 @@ def delete_index(index_name, quiet=False): #### main block #### +# Settings var (can be overloaded) ELASTICSEARCH_URL = 'http://localhost:9200/' INDEX_NAME = "itunessongs" @@ -55,38 +56,44 @@ parser = argparse.ArgumentParser( Send song data is enable by default, send album & artist data is disabled default. ''' ) -parser.add_argument('-s', '--song', action='store_false', - help='Disable send song data') -parser.add_argument('-sf', '--song-file', default='es-music-data.json', type=argparse.FileType('r'), - help='Song file data to send (default: es-music-data.json). Need to enable send song data.') - # FIXME If song is disable and default file not exist ==> Fail -parser.add_argument('-al', '--album', action='store_true', - help='Enable send album data') -parser.add_argument('-alf', '--album-file', default='es-albums-data.json', type=argparse.FileType('r'), - help='Album file data to send (default: es-albums-data.json). Need to enable send album data.') -parser.add_argument('-ar', '--artist', action='store_true', - help='Enable send music data') -parser.add_argument('-arf', '--artist-file', default='es-artist-data.json', type=argparse.FileType('r'), - help='Album file data to send (default: es-artist-data.json). Need to enable send artist data.') +# Choose what to enable for send and files +song_group = parser.add_mutually_exclusive_group() +song_group.add_argument('-s', '--song', action='store_false', + help='Disable send song data') +song_group.add_argument('-sf', '--song-file', type=argparse.FileType('r'), + help='Song file data to send (default: es-music-data.json).') +parser.add_argument('-al', '--album_file', nargs='?', type=argparse.FileType('r'), const='es-albums-data.json', + help='Enable send album data. Optionally, precise the album file (default: \'es-albums-data.json\')') +parser.add_argument('-ar', '--artist-file', nargs='?', type=argparse.FileType('r'), const='es-artist-data.json', + help='Enable send artist data. Optionally, precise the artist file (default: \'es-artist-data.json\'') +# Mode parser.add_argument('-A', '--ALL', action='store_true', - help='Send all') + help='Send all possible data: song, artist and album') parser.add_argument('-D', '--DELETE', action='store_true', help='Delete old index') +# ELS Options parser.add_argument('-els', '--elasticsearch_url', default=ELASTICSEARCH_URL, nargs='?', help="Elasticsearch URL to send data (default: {})".format(ELASTICSEARCH_URL)) -parser.add_argument('-i', '--index_name', default=INDEX_NAME, +parser.add_argument('-idx', '--index_name', default=INDEX_NAME, help="Index name in Elasticsearch for data (default: {})".format(INDEX_NAME)) +# Bulk parser.add_argument('-q', '--quiet', action='store_true', help="Disable main output") +# TODO Use group + if __name__ == '__main__': args = parser.parse_args() + + # Overloaded setting value INDEX_NAME = args.index_name ELASTICSEARCH_URL = args.elasticsearch_url if not args.quiet: + print("Settings values:") print("Elasticsearch URL:\t" + ELASTICSEARCH_URL) print("Index name:\t\t" + INDEX_NAME) + print("") if args.DELETE: delete_index(INDEX_NAME, args.quiet) @@ -96,13 +103,13 @@ if __name__ == '__main__': if not args.quiet: print("Take file '{}' to send song data".format(song_file.name)) send_data(song_file, args.quiet) - if args.artist or args.ALL: + if args.artist_file or args.ALL: artist_file = args.artist_file if not args.quiet: print("Take file '{}' to send song data".format(artist_file.name)) send_data(artist_file, args.quiet) - if args.album or args.ALL: + if args.album_file or args.ALL: album_file = args.album_file if not args.quiet: print("Take file '{}' to send song data".format(album_file.name))