import csv import requests import sys def get_api_endpoint_map(): # Define a mapping of names to API endpoints and keys return { "member": { "url": "https://api.congress.gov/v3/member", "key": "NYjZ0jWEeOuLI5by1vfa7Z7orA717mvd2oIvalQe" }, # Add more endpoints as needed } def fetch_json_data(endpoint_name): api_endpoint_map = get_api_endpoint_map() if endpoint_name not in api_endpoint_map: print(f"Error: Endpoint '{endpoint_name}' is not defined.") sys.exit(1) endpoint_info = api_endpoint_map[endpoint_name] url = endpoint_info["url"] key = endpoint_info["key"] # Make the HTTP GET request to fetch JSON data headers = { "X-API-KEY": key } response = requests.get(url, headers=headers) if response.status_code != 200: print(f"Error: Failed to fetch data. Status code {response.status_code}") sys.exit(1) json_data = response.json() # Print the JSON response for debugging print("JSON Response:") print(json_data) return json_data def write_json_to_csv(json_data, filename="output.csv"): # Open the CSV file for writing with open(filename, mode='w', newline='', encoding='utf-8') as csvfile: writer = csv.writer(csvfile, delimiter='^') # Write the header row if json_data and isinstance(json_data, dict) and 'members' in json_data: data_list = json_data['members'] if data_list and len(data_list) > 0: headers = data_list[0].keys() writer.writerow(headers) # Write each item to a new row for item in data_list: print(f"Writing row: {list(item.values())}") # Print statement added here writer.writerow(item.values()) else: print("No data to write.") def main(): if len(sys.argv) != 2: print("Usage: python script.py ") sys.exit(1) endpoint_name = sys.argv[1] try: json_data = fetch_json_data(endpoint_name) write_json_to_csv(json_data) print(f"Data has been written to output.csv.") except Exception as e: print(f"An error occurred: {e}") sys.exit(1) if __name__ == "__main__": main()