Spaces:
Running
Running
# View_tab.py | |
# Description: Gradio functions for the view tab | |
# | |
# Imports | |
# | |
# External Imports | |
import gradio as gr | |
# | |
# Local Imports | |
from App_Function_Libraries.DB.DB_Manager import ( | |
search_media_database, mark_as_trash, get_specific_prompt, delete_specific_transcript, | |
delete_specific_summary, delete_specific_prompt, get_specific_transcript, get_specific_summary, | |
get_media_transcripts, get_media_summaries, get_media_prompts | |
) | |
# | |
############################################################################################################ | |
# | |
# Functions: | |
# FIXME - add mark_as_trash ability to the UI | |
# FIXME - Doesn't work. also need ot merge this tab wtih Edit Existing Items tab.... | |
def create_manage_items_tab(): | |
with gr.TabItem("Edit/Manage DB Items", visible=True): | |
search_input = gr.Textbox(label="Search for Media (title or ID)") | |
search_button = gr.Button("Search") | |
media_selector = gr.Dropdown(label="Select Media", choices=[], interactive=True) | |
with gr.Accordion("Transcripts"): | |
get_transcripts_button = gr.Button("Get Transcripts") | |
transcript_selector = gr.Dropdown(label="Select Transcript", choices=[], interactive=True) | |
transcripts_output = gr.Textbox(label="Transcript Content", lines=10) | |
delete_transcript_button = gr.Button("Delete Selected Transcript") | |
with gr.Accordion("Summaries"): | |
get_summaries_button = gr.Button("Get Summaries") | |
summary_selector = gr.Dropdown(label="Select Summary", choices=[], interactive=True) | |
summaries_output = gr.Textbox(label="Summary Content", lines=5) | |
delete_summary_button = gr.Button("Delete Selected Summary") | |
with gr.Accordion("Prompts"): | |
get_prompts_button = gr.Button("Get Prompts") | |
prompt_selector = gr.Dropdown(label="Select Prompt", choices=[], interactive=True) | |
prompts_output = gr.Textbox(label="Prompt Content", lines=5) | |
delete_prompt_button = gr.Button("Delete Selected Prompt") | |
status_output = gr.Textbox(label="Status") | |
def search_media(query): | |
results = search_media_database(query) | |
choices = [f"{result[0]}: {result[1]}" for result in results] | |
return {"choices": choices, "value": None} | |
search_button.click(search_media, inputs=[search_input], outputs=[media_selector]) | |
def get_transcripts(media_selection): | |
if not media_selection: | |
return {"choices": [], "value": None} | |
media_id = int(media_selection.split(":")[0]) | |
transcripts = get_media_transcripts(media_id) | |
choices = [f"{t[0]}: {t[3]}" for t in transcripts] | |
return {"choices": choices, "value": None} | |
def display_transcript(transcript_selection): | |
if not transcript_selection: | |
return "No transcript selected." | |
transcript_id = int(transcript_selection.split(":")[0]) | |
transcript = get_specific_transcript(transcript_id) | |
return transcript['content'] if 'content' in transcript else transcript.get('error', "Transcript not found.") | |
get_transcripts_button.click( | |
get_transcripts, | |
inputs=[media_selector], | |
outputs=[transcript_selector] | |
) | |
transcript_selector.change( | |
display_transcript, | |
inputs=[transcript_selector], | |
outputs=[transcripts_output] | |
) | |
def get_summaries(media_selection): | |
if not media_selection: | |
return {"choices": [], "value": None} | |
media_id = int(media_selection.split(":")[0]) | |
summaries = get_media_summaries(media_id) | |
choices = [f"{s[0]}: {s[3]}" for s in summaries] | |
return {"choices": choices, "value": None} | |
def display_summary(summary_selection): | |
if not summary_selection: | |
return "No summary selected." | |
summary_id = int(summary_selection.split(":")[0]) | |
summary = get_specific_summary(summary_id) | |
return summary['content'] if 'content' in summary else summary.get('error', "Summary not found.") | |
get_summaries_button.click( | |
get_summaries, | |
inputs=[media_selector], | |
outputs=[summary_selector] | |
) | |
summary_selector.change( | |
display_summary, | |
inputs=[summary_selector], | |
outputs=[summaries_output] | |
) | |
def get_prompts(media_selection): | |
if not media_selection: | |
return {"choices": [], "value": None} | |
media_id = int(media_selection.split(":")[0]) | |
prompts = get_media_prompts(media_id) | |
choices = [f"{p[0]}: {p[3]}" for p in prompts] | |
return {"choices": choices, "value": None} | |
def display_prompt(prompt_selection): | |
if not prompt_selection: | |
return "No prompt selected." | |
prompt_id = int(prompt_selection.split(":")[0]) | |
prompt = get_specific_prompt(prompt_id) | |
return prompt['content'] if 'content' in prompt else prompt.get('error', "Prompt not found.") | |
get_prompts_button.click( | |
get_prompts, | |
inputs=[media_selector], | |
outputs=[prompt_selector] | |
) | |
prompt_selector.change( | |
display_prompt, | |
inputs=[prompt_selector], | |
outputs=[prompts_output] | |
) | |
def delete_transcript(transcript_selection): | |
if not transcript_selection: | |
return "No transcript selected." | |
transcript_id = int(transcript_selection.split(":")[0]) | |
result = delete_specific_transcript(transcript_id) | |
return result | |
def delete_summary(summary_selection): | |
if not summary_selection: | |
return "No summary selected." | |
summary_id = int(summary_selection.split(":")[0]) | |
result = delete_specific_summary(summary_id) | |
return result | |
def delete_prompt(prompt_selection): | |
if not prompt_selection: | |
return "No prompt selected." | |
prompt_id = int(prompt_selection.split(":")[0]) | |
result = delete_specific_prompt(prompt_id) | |
return result | |
delete_transcript_button.click( | |
delete_transcript, | |
inputs=[transcript_selector], | |
outputs=[status_output] | |
) | |
delete_summary_button.click( | |
delete_summary, | |
inputs=[summary_selector], | |
outputs=[status_output] | |
) | |
delete_prompt_button.click( | |
delete_prompt, | |
inputs=[prompt_selector], | |
outputs=[status_output] | |
) |