Spaces:
Sleeping
Sleeping
| import requests | |
| import json | |
| import os | |
| def process_wod_document(file_path, wod_type): | |
| """ | |
| Process a WOD document using the remote API. | |
| Args: | |
| file_path: Path to the PDF file to analyze | |
| wod_type: Type of WOD (e.g., 'REPLACEMENT', 'THERMAL', etc.) | |
| Returns: | |
| dict: Parsed response from the API or error information | |
| """ | |
| url = "https://datasaur-ai--wod-document-analyzer-app.modal.run/process" | |
| payload = {'wod_type': wod_type} | |
| try: | |
| # Open the file for upload | |
| with open(file_path, 'rb') as file: | |
| files = [ | |
| ('file', (os.path.basename(file_path), file, 'application/pdf')) | |
| ] | |
| headers = { | |
| 'Authorization': f'Bearer {os.getenv("API_KEY")}' | |
| } | |
| response = requests.post(url, headers=headers, data=payload, files=files) | |
| # Parse the JSON response | |
| if response.status_code == 200: | |
| return json.loads(response.text) | |
| else: | |
| return { | |
| "status": "error", | |
| "message": f"API request failed with status code {response.status_code}", | |
| "error_details": response.text | |
| } | |
| except FileNotFoundError: | |
| return { | |
| "status": "error", | |
| "message": f"File not found: {file_path}" | |
| } | |
| except requests.RequestException as e: | |
| return { | |
| "status": "error", | |
| "message": f"Network error: {str(e)}" | |
| } | |
| except json.JSONDecodeError: | |
| return { | |
| "status": "error", | |
| "message": "Invalid JSON response from API", | |
| "response_text": response.text | |
| } | |
| except Exception as e: | |
| return { | |
| "status": "error", | |
| "message": f"Unexpected error: {str(e)}" | |
| } |