#!/usr/bin/env python # -*- coding: utf-8 -*- import csv import argparse import uuid import json if __name__ == '__main__': parser = argparse.ArgumentParser(description='CSV to Galaxy') parser.add_argument("-c", "--csv", required=True, help="input csv") parser.add_argument("-v", "--value", type=int, required=True, help="number of the column with the value") parser.add_argument("-e", "--value_description", type=int, nargs='+', help="number of the column with description, if not defined, all other data wil be concataned") parser.add_argument("-w", "--version", type=int, help="version of the galaxy") parser.add_argument("-d", "--description", help="description of the galaxy") parser.add_argument("-a", "--authors", nargs='+', help="author of the galaxy") parser.add_argument("-s", "--source", help="source of the galaxy") parser.add_argument("-t", "--type", help="type of galaxy, also the name of the generated json") parser.add_argument("-n", "--name", help="name of the galaxy") parser.add_argument("-u", "--title", action='store_true', help="set it if the first line contains the name of the columns") args = parser.parse_args() values = [] if args.title is None: args.title = False with open(args.csv, newline='') as csvfile: csvreader = csv.reader(csvfile, delimiter=',', quotechar='"') for data in csvreader: if args.title: args.title = False continue temp = {} temp["value"] = data[args.value] temp["description"] = "" if args.value_description is not None: for i in args.value_description: if data[i] != "": temp["description"] = temp["description"] + data[i].replace('\n', ' ') + "; " else: for i in range(len(data)): if i != args.value and data[i] != "": temp["description"] = temp["description"] + data[i] + "; " values.append(temp) galaxy = {} galaxy["values"] = values if args.version is not None: galaxy["version"] = args.version else: galaxy["version"] = 1 galaxy["uuid"] = str(uuid.uuid4()) if args.description is not None: galaxy["description"] = args.description else: galaxy["description"] = "automagically generated galaxy" if args.authors is not None: galaxy["authors"] = [] for author in args.authors: galaxy["authors"].append(author) else: galaxy["authors"] = ["Various"] if args.source is not None: galaxy["source"] = args.source else: galaxy["source"] = "source" if args.type is not None: galaxy["type"] = args.type else: galaxy["type"] = "type" if args.name is not None: galaxy["name"] = args.name else: galaxy["name"] = "name" print (galaxy) with open(args.type+'.json', 'w') as outfile: json.dump(galaxy, outfile)