Advertisement
Bluefissure

update_instances

May 28th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.24 KB | None | 0 0
  1. import json
  2. import argparse
  3. import codecs, csv
  4. def get_config():
  5.     parser = argparse.ArgumentParser(description='Instances Auto-updater Script')
  6.  
  7.     parser.add_argument('-i', '--input', type=str, required=True,
  8.                         help='Input json file to be updated.')
  9.     parser.add_argument('-l', '--language', type=str, required=True, choices=['en', 'ja', 'fr', 'ko', 'zh'],
  10.                         help='The language to be updated.')
  11.     parser.add_argument('-c', '--csv', type=str, required=True,
  12.                         help='Exported csv file used for updating.')
  13.  
  14.     # Parse args.
  15.     args = parser.parse_args()
  16.  
  17.     # Namespace => Dictionary.
  18.     kwargs = vars(args)
  19.  
  20.     return kwargs
  21.  
  22. if __name__=="__main__":
  23.     config = get_config()
  24.     input_file = config.get("input")
  25.     with codecs.open(input_file, "r", "utf8") as f:
  26.         input_json = json.load(f)
  27.     instances = input_json.get("instances")
  28.     lang = config.get("language")
  29.     lang_list = ['en', 'ja', 'fr', 'ko', 'zh']
  30.     name_idx = {
  31.         'en':35,
  32.         'ja':35,
  33.         'fr':35,
  34.         'ko':35,
  35.         'zh':35
  36.     }
  37.     with codecs.open(config.get("csv"), "r", "utf8") as f:
  38.         spamreader = csv.reader(f)
  39.         start = False
  40.         for row in spamreader:
  41.             if row[0] == "0":
  42.                 start = True
  43.             if not start:
  44.                 continue
  45.             (key, name) = (row[0], row[name_idx[lang]])
  46.             if name:
  47.                 if key in instances:
  48.                     instances[key]["name"].update({
  49.                         lang: name
  50.                     })
  51.                 else:
  52.                     instances[key] = {
  53.                         "name": {},
  54.                         "t": "0",
  55.                         "h": "0",
  56.                         "d": "0",
  57.                     }
  58.                     for tmp_lang in lang_list:
  59.                         instances[key]["name"].update({
  60.                             tmp_lang: name
  61.                         })
  62.    
  63.     output_file = "instances"
  64.     if f"_{lang}" not in config.get("input"):
  65.         output_file += f"_{lang}"
  66.     output_file += ".json"
  67.     with codecs.open(output_file, "w", "utf8") as f:
  68.         json.dump({"instances":instances}, f)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement