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)