Spaces:
Runtime error
Runtime error
| """Module for questions data processing""" | |
| import os | |
| import json | |
| import requests | |
| QUESTIONS_DATA_FILE = "data/questions_data.json" | |
| def _get_task_files(files_url: str, questions_data: dict): | |
| for item in questions_data: | |
| task_id = item.get("task_id") | |
| file_name = item.get("file_name") | |
| local_file = "/".join(["data", file_name]) | |
| if task_id and file_name: | |
| file_url = "/".join([files_url, task_id]) | |
| response = requests.get(file_url, stream=True, timeout=120) | |
| response.raise_for_status() | |
| with open(local_file, "wb") as f: | |
| f.write(response.content) | |
| print(f"File '{file_name}' downloaded successfully.") | |
| def _is_exists_questions_data_file() -> bool: | |
| if os.path.exists(QUESTIONS_DATA_FILE): | |
| print(f"The file '{QUESTIONS_DATA_FILE}' exists.") | |
| return True | |
| print(f"The file '{QUESTIONS_DATA_FILE}' does not exist.") | |
| return False | |
| def _write_question_data_to_file(questions_data: dict): | |
| with open(QUESTIONS_DATA_FILE, "w", encoding="utf-8") as json_file: | |
| json.dump( | |
| questions_data, json_file, indent=4 | |
| ) # The 'indent=4' parameter pretty-prints the JSON with 4 spaces for indentation. | |
| print(f"Pretty-printed JSON data written to {QUESTIONS_DATA_FILE}") | |
| def _read_question_data_from_file() -> dict: | |
| with open(QUESTIONS_DATA_FILE, "r", encoding="utf-8") as json_file: | |
| questions_data = json.load(json_file) | |
| return questions_data | |
| def _request_question_data_res(questions_url: str) -> requests.Response: | |
| try: | |
| res = requests.get(questions_url, timeout=60) | |
| res.raise_for_status() | |
| return res | |
| except requests.exceptions.HTTPError as e: | |
| print("HTTP error occurred:", e) | |
| except requests.exceptions.RequestException as e: | |
| print("A request error occurred:", e) | |
| return None | |
| def _json_question_data_from_res(res: requests.Response) -> dict: | |
| try: | |
| questions_data = res.json() | |
| return questions_data | |
| except requests.exceptions.JSONDecodeError as e: | |
| questions_data = None | |
| print(f"Error decoding JSON response from questions endpoint: {e}") | |
| print(f"Response text: {res.text[:500]}") | |
| return None | |
| def get_questions_data(questions_url: str, files_url: str) -> dict: | |
| """Get Questions Data""" | |
| if _is_exists_questions_data_file(): | |
| questions_data = _read_question_data_from_file() | |
| return questions_data | |
| res = _request_question_data_res(questions_url=questions_url) | |
| if res: | |
| questions_data = _json_question_data_from_res(res) | |
| if questions_data: | |
| _write_question_data_to_file(questions_data=questions_data) | |
| _get_task_files(files_url=files_url, questions_data=questions_data) | |
| return questions_data | |
| return None | |