Spaces:
Build error
Build error
| import json | |
| import gradio as gr | |
| def process_json_file(file): | |
| try: | |
| # Read and print the file content for debugging | |
| print("File received:", file.name) | |
| # Read the JSON file | |
| with open(file.name, 'r') as f: | |
| print("Reading file contents...") | |
| json_data = json.load(f) | |
| # Print the structure of the JSON data | |
| print("\nJSON Structure:") | |
| print("Available sections:", list(json_data.keys())) | |
| # Process each section | |
| output_text = "" | |
| # Process header if exists | |
| if 'header' in json_data: | |
| output_text += "=== EXAM DETAILS ===\n" | |
| for key, value in json_data['header'].items(): | |
| output_text += f"{key.replace('_', ' ').title()}: {value}\n" | |
| output_text += "\n" | |
| # Process multiple choice questions | |
| if 'multiple_choice_questions' in json_data: | |
| output_text += "=== MULTIPLE CHOICE QUESTIONS ===\n" | |
| for q_num, q_data in json_data['multiple_choice_questions'].items(): | |
| output_text += f"\nQuestion {q_num.replace('question', '')}:\n" | |
| output_text += f"{q_data['question']}\n" | |
| for opt_key, opt_val in q_data['options'].items(): | |
| output_text += f"{opt_key}) {opt_val}\n" | |
| output_text += f"Answer: {q_data['answer']}\n" | |
| # Process short answer questions | |
| if 'short_answer_questions' in json_data: | |
| output_text += "\n=== SHORT ANSWER QUESTIONS ===\n" | |
| for q_num, q_data in json_data['short_answer_questions'].items(): | |
| output_text += f"\nQuestion {q_num.replace('question', '')}:\n" | |
| output_text += f"{q_data['question']}\n" | |
| output_text += f"Answer: {q_data['answer']}\n" | |
| # Process long answer questions | |
| if 'long_answer_questions' in json_data: | |
| output_text += "\n=== LONG ANSWER QUESTIONS ===\n" | |
| for q_num, q_data in json_data['long_answer_questions'].items(): | |
| output_text += f"\nQuestion {q_num.replace('question', '')}:\n" | |
| output_text += f"{q_data['question']}\n" | |
| output_text += f"Answer: {q_data['answer']}\n" | |
| print("\nProcessing complete!") | |
| return output_text | |
| except json.JSONDecodeError as e: | |
| error_msg = f"Error decoding JSON: {str(e)}" | |
| print(error_msg) | |
| return error_msg | |
| except Exception as e: | |
| error_msg = f"Error processing file: {str(e)}" | |
| print(error_msg) | |
| return error_msg | |
| # Create Gradio interface | |
| with gr.Blocks() as iface: | |
| gr.Markdown("# Exam Question Viewer") | |
| with gr.Row(): | |
| file_input = gr.File( | |
| label="Upload JSON Exam File", | |
| file_types=[".json"] | |
| ) | |
| with gr.Row(): | |
| output_text = gr.Textbox( | |
| label="Processed Questions", | |
| lines=20, | |
| max_lines=30 | |
| ) | |
| file_input.upload( | |
| fn=process_json_file, | |
| inputs=[file_input], | |
| outputs=[output_text] | |
| ) | |
| # Launch the interface | |
| iface.launch() |