def main()

in ReferenceAppKotlin/scripts/atv-create-media-feed.py [0:0]


def main():
  # Parse the output file argument
  arg_parser = argparse.ArgumentParser()
  arg_parser.add_argument("input_file", help="CSV file to read from")
  arg_parser.add_argument("output_movie_file", help="File to output media actions feed for movies in json such as movies.json")
  arg_parser.add_argument("output_episodes_file", help="File to output media actions feed for TV episodes in json such as episodes.json")
  args = arg_parser.parse_args()

  # Avoid overwriting an existing movies file
  if Path(args.output_movie_file).exists():
    sys.exit(args.output_movie_file + " already exists; aborting")

  # Avoid overwriting an existing episodes file
  if Path(args.output_episodes_file).exists():
    sys.exit(args.output_episodes_file + " already exists; aborting")

  # Read in the csv and process it
  try:
    with open(args.input_file) as csv_file, open(args.output_movie_file, 'w') as movie_json_file, open(args.output_episodes_file,'w') as episodes_json_file:
      # Read each row and convert to JSON
      dict_reader = csv.DictReader(csv_file)
      csv_content_list = list(dict_reader)

      # Create content list for movies for the media actions feed
      json_movies_list = create_json_movies_list(csv_content_list)

      # Generate wrapper with content for movies
      movies_dict = {context_json_key: context_value, type_json_key: type_json_value,
                    dateModified_json_key: dateModified_json_value, dataFeed_json_key: json_movies_list}
      json.dump(obj=movies_dict, fp=movie_json_file, indent=4)

      # get list of unique TV series
      csv_tv_series_tuple_list = get_unique_tv_series(csv_content_list)
      # Create content list for TV Series for the media actions feed
      json_tv_series_list = create_tv_series_list(csv_tv_series_tuple_list)

      # Create content list for TV Episodes for the media actions feed
      json_episodes_list = create_json_episodes_list(csv_content_list)

      # Generate wrapper with content for TV episodes
      episodes_dict = {context_json_key: context_value, type_json_key: type_json_value,
                     dateModified_json_key: dateModified_json_value, dataFeed_json_key: json_tv_series_list + json_episodes_list}
      json.dump(obj=episodes_dict, fp=episodes_json_file, indent=4)

  except FileNotFoundError as err:
    sys.exit("File doesn't exist: {0}".format(err))
  except PermissionError as err:
    sys.exit("Permission error, failed to read file: (0)".format(err))
  except KeyError as err:
    # Remove the output files since they weren't written to successfully
    os.remove(args.output_movie_file)
    os.remove(args.output_episodes_file)
    sys.exit("Missing key in input CSV: {0}".format(err))

  print("Movies media action feed JSON written to " + args.output_movie_file)
  print("TV episodes media action feed JSON written to " + args.output_episodes_file)