Spaces:
Runtime error
Runtime error
File size: 2,465 Bytes
3d6a12e 2e4eb94 f397951 3d6a12e 2cbbc23 3d6a12e f397951 3d6a12e 2e4eb94 3d6a12e 2e4eb94 3d6a12e 2e4eb94 3d6a12e 5c028cc 3d6a12e 2e4eb94 3d6a12e 2e4eb94 3d6a12e 5c028cc 3d6a12e |
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
import httpx
import gradio as gr
client = httpx.Client()
# TODO: update the tags somehow; re-fetching inside of check_status doesn't work
try:
tag_counts = {
key.strip("#"): val
for key, val in client.get("http://localhost:8080/tag_counts/").json().items()
if key.strip("#")
}
except httpx.ConnectError:
tag_counts = {}
def submit(inputs):
if not inputs:
return
payload = {"content": inputs, "author": "anna nymous"}
httpx.post("http://localhost:8080/submit/", json=payload)
def check_status():
try:
response = httpx.get("http://localhost:8080/check_job_status/")
result = response.json()
except httpx.ConnectError:
result = "Server could not be reached"
return result
def get_results(inputs: list[str]):
if not inputs:
response = httpx.get("http://localhost:8080/recent/")
else:
tags = [tag.split(" ", 1)[0] for tag in inputs]
response = httpx.get("http://localhost:8080/recent/" + ",".join(tags))
entries = response.json()
texts: list[str] = []
for i, entry in enumerate(entries, start=1):
texts.append(
f"## {i}. author: {entry['author']}\n\n"
f"Date: _{entry['date']}_\n\n"
f"**Summary**: {entry['summary']}\n\n"
f"tags: _{' '.join(entry['tags'])}_"
)
return "\n\n---\n\n".join(texts)
INPUT_DESCRIPTION = """Input currently supports:
- plain text
- a URL to a webpage
- a URL to a youtube video (the video will be transcribed)
- a URL to an image (the image description will be used)
"""
def get_demo():
with gr.Blocks() as demo:
# submit new input
gr.Markdown(INPUT_DESCRIPTION)
inputs = gr.Textbox(lines=3, label="Input")
btn_submit = gr.Button("Submit")
# check job status
gr.HTML(value=check_status, label="Status", every=3)
# check box of tags to filter on
tag_choices = sorted(f"{key} ({val})" for key, val in tag_counts.items())
tags = gr.CheckboxGroup(
tag_choices, label="Filter on tags (no selection = all)"
)
# display output
btn_output = gr.Button("Show results")
output = gr.Markdown()
btn_submit.click(submit, inputs=inputs)
btn_output.click(get_results, inputs=[tags], outputs=[output])
return demo
if __name__ == "__main__":
demo = get_demo()
demo.queue()
demo.launch()
|