from apis import GoogleDistanceMatrix import os import json from tqdm import tqdm import csv os.environ["http_proxy"] = "http://127.0.0.1:7890" os.environ["https_proxy"] = "http://127.0.0.1:7890" gdm = GoogleDistanceMatrix() # print(gdm.run_for_build_database("New York","Seattle")) def load_line_json_data(filename): data = [] with open(filename, 'r', encoding='utf-8') as f: for line in f.read().strip().split('\n'): unit = json.loads(line) data.append(unit) return data def get_city_list(days, deparure_city, destination): city_list = [] city_list.append(deparure_city) if days == 3: city_list.append(destination) else: city_set = open('/home/xj/toolAugEnv/code/toolConstraint/database/background/citySet_with_states.txt').read().split('\n') state_city_map = {} for unit in city_set: city, state = unit.split('\t') if state not in state_city_map: state_city_map[state] = [] state_city_map[state].append(city) for city in state_city_map[destination]: if city != deparure_city: city_list.append(city + f"({destination})") return city_list if __name__ == '__main__': org_dest_list = [] query_list =load_line_json_data('/home/xj/toolAugEnv/code/toolConstraint/data/query/all.jsonl') info_list = [] for query in tqdm(query_list): destination_city_list = get_city_list(query['days'],query['org'],query['dest']) # for city in destination_city_list: # if [query['org'],city] not in org_dest_list: # org_dest_list.append([query['org'],city]) # info_list.append(gdm.run_for_build_database(query['org'],city)) # if [city,query['org']] not in org_dest_list: # org_dest_list.append([city,query['org']]) # info_list.append(gdm.run_for_build_database(city,query['org'])) for city_1 in tqdm(destination_city_list): for city_2 in destination_city_list: if city_1 != city_2 and [city_1,city_2] not in org_dest_list: org_dest_list.append([city_1,city_2]) info_list.append(gdm.run_for_build_database(city_1,city_2)) # # write to csv file # # example:{'origin': 'New York', 'destination': 'Seattle', 'cost': None, 'duration': '1 day 18 hours', 'distance': '4,589 km'} with open('/home/xj/toolAugEnv/code/toolConstraint/database/background/distance.csv', 'w', newline='') as csvfile: fieldnames = ['origin', 'destination', 'cost', 'duration', 'distance'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for unit in info_list: writer.writerow(unit)