File size: 2,665 Bytes
35bb374 67dd2b8 35bb374 92ef844 35bb374 92ef844 35bb374 b8fea6f bffee5c 92ef844 b8fea6f 35bb374 22c7097 63e67b9 5976c88 35bb374 5976c88 35bb374 92ef844 35bb374 92ef844 35bb374 92ef844 35bb374 92ef844 35bb374 92ef844 b8fea6f 35bb374 fc50377 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
import gradio as gr
import pandas as pd
# Load the DataFrame
url = "TExam_new0630.csv"
df = pd.read_csv(url, encoding='utf-8-sig')
# Function to search years based on the selected mode
def search_years(search_mode, query):
if search_mode == "Search by YEAR":
matches = df[df['YEAR'].str.startswith(query[:4])]
elif search_mode == "Search Years by Keywords":
keyword_list = [keyword.strip() for keyword in query.split(',')]
matches = df[df['KEYWORDS'].apply(lambda x: any(keyword in x for keyword in keyword_list))]
else:
return [], "Please select exactly one search mode."
if matches.empty:
return [], "No results found for your query."
return matches['YEAR'].tolist(), "Search completed successfully."
# Function to get image HTML
def get_image_html(year):
match = df[df['YEAR'] == year]
if not match.empty:
image_filename = match.iloc[0]['Filename']
image_url = f'https://huggingface.co/spaces/MK-316/TCE/raw/main/TExams/{image_filename}'
keywords = match.iloc[0]['KEYWORDS']
return f"<b>π· Keywords:</b> π {keywords}<br><img src='{image_url}' width='800'/>"
else:
return "No keywords found for this year.", "No image found for this year."
# Create Gradio Blocks interface
with gr.Blocks() as app:
gr.Markdown("# Teacher Certificate Exam Searching Engine")
gr.Markdown("## βοΈ [1] Search Data")
# Radio buttons to select search mode
search_mode = gr.Radio(choices=["Search by YEAR", "Search Years by Keywords"], label="Search Mode")
# Row for search query and button
search_input = gr.Textbox(label="Search Query: e.g., 2024 (by YEAR) or tapping (by Keywords)", placeholder="Enter year or keywords")
search_button = gr.Button("Click to Search")
search_output = gr.Dropdown(label="Results (file names)", choices=[], visible=False)
status_output = gr.Textbox(label="Status", visible=False)
# Connect actions
search_button.click(fn=search_years, inputs=[search_mode, search_input], outputs=[search_output, status_output])
gr.Markdown("## βοΈ [2] Display a Specific Exam Question Requested")
year_input = gr.Dropdown(label="Select a file name from the results", choices=[])
submit_button = gr.Button("Show me the exam question")
image_output = gr.HTML()
# Update dropdown and image display
search_output.change(fn=lambda results: gr.update(choices=results), inputs=search_output, outputs=year_input)
submit_button.click(fn=get_image_html, inputs=year_input, outputs=image_output)
# Launch the app with sharing options
app.launch(debug=True)
|