import gradio as gr import xmltodict import requests import json import uuid from pypipertts import PyPiper pp=PyPiper() style=""" .title_div{ font-size: x-large; font-weight: 700; margin-bottom: 10px; color: white; } .card_div{ background: #050523; color: white; margin: 10px; padding: 15px; border-radius: 5px; cursor: pointer; } .x_btn{ font-size: xx-large; font-weight: 900; background: chocolate; width: fit-content; padding: 0 10px; border-radius: 10px 10px 0 0; float: right; } .read_btn{ font-size: xx-large; font-weight: 900; background: chocolate; width: fit-content; padding: 0 10px; border-radius: 10px 10px 0 0; float: left; } .frame_class{ display:none; } """ head = """ """ def search(q,rn,st): api=f"http://export.arxiv.org/api/query?search_query={str(q)}&start={str(st)}&max_results={str(rn)}" r=requests.get(api) cont=xmltodict.parse(r.content)['feed']['entry'] html="" for i,c in enumerate(cont): pdflink=c['id'].replace('/abs/','/pdf/') html+=f"""
{c['title']}
{c['summary']}
{pdflink}
Read
X
""" return html def next_show(cur): new=int(cur)+10 return gr.update(interactive=True),new def prev_show(cur): if int(cur)-10 <=0: new=0 out_gr=gr.update(interactive=False) else: new=int(cur)-10 out_gr=gr.update(interactive=True) return out_gr,new def show_num(cur): new=int(cur)+10 html_out=f"
Showing {cur} through {new}
" return html_out def stream_aud(inp): txt=inp[0]['text'] pp=PyPiper() pp.load_mod() yield(pp.stream_tts(in_text=txt,model="en_US-joe-medium")) with gr.Blocks(css=style,head=head) as b: with gr.Group(): with gr.Row(): query=gr.Textbox(label="Query") num=gr.Number(label="Count",step=1,value=10,interactive=False) with gr.Row(): sub=gr.Button(size='lg') with gr.Group(): with gr.Row(): prev_btn=gr.Button("Previous",interactive=False) show_html=gr.HTML() next_btn=gr.Button("Next") html_out=gr.HTML() json_out=gr.JSON() hid_start1=gr.Textbox(elem_id='readit') hid_start=gr.Number(step=1,value=0,visible=False, interactive=False) next_btn.click(next_show,[hid_start],[prev_btn,hid_start]).then(show_num,hid_start,show_html).then(search,[query,num,hid_start],[html_out]) prev_btn.click(prev_show,[hid_start],[prev_btn,hid_start]).then(show_num,hid_start,show_html).then(search,[query,num,hid_start],[html_out]) sub.click(search,[query,num,hid_start],[html_out]).then(show_num,hid_start,show_html) b.launch()