oceansweep's picture
Upload 155 files
43cd37c verified
# 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]
)