File size: 4,109 Bytes
a235177
1748047
a235177
75642d2
c2542f3
419f14a
 
b1081f1
10ac278
 
 
 
 
341551d
10ac278
 
 
341551d
10ac278
 
 
ff0a552
10ac278
1ab460b
 
 
 
 
 
 
 
 
b46d61b
7b00e7b
 
 
 
 
 
 
 
310b87d
b862fa4
310b87d
10ac278
b089d6a
6bf8b90
b089d6a
c786d64
 
310b87d
e01ef92
4da7dd9
8e92529
 
 
 
 
9931594
9ca0fe5
9c0b4b8
98209df
dc18449
98209df
 
 
 
b089d6a
e35f0f6
c2542f3
867cecb
2fbd6b6
 
a235177
 
 
 
8e92529
 
 
 
 
 
9931594
8e92529
9c0b4b8
8e92529
8ecffb4
867cecb
 
688fae6
867cecb
 
 
688fae6
867cecb
 
688fae6
b3b21d5
 
 
688fae6
b3b21d5
b1081f1
 
 
 
 
867cecb
b089d6a
13a0ccd
 
 
 
 
9931594
13a0ccd
 
 
 
 
dfd8073
c2542f3
 
b28c7fb
8ecffb4
867cecb
8ecffb4
 
867cecb
8ecffb4
a235177
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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 = """
<script>
function run(inn) {
    console.log(inn);
    var frame_on = document.getElementById("frame" + String(inn));
    frame_on.style.display = 'block';
}
function closefn(inn) {
    console.log(inn);
    var frame_off = document.getElementById("frame" + String(inn));
    frame_off.style.display = 'none';
}
function readfn(inn,url) {
    console.log(inn);
    var readit = document.getElementById("aud" + String(inn));
    const iframe = document.createElement('iframe');
      iframe.src = 'https://broadfield-fast-voice.hf.space/?pdfurl=UUU'.replace('UUU',url);
      iframe.width = '100%'; 
      iframe.height = '200px';
      readit.appendChild(iframe);
}
</script>
""".replace('/abs/','/pdf/')

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"""<div class='card_div' id='id{i}' onclick="run({i})">
                   <div class='title_div'>{c['title']}</div>
                    <div style='color:white;'>{c['summary']}</div>
                    <div><a href='{pdflink}' target='_blank'>{pdflink}</a></div>
                   </div>
        <div id=frame{i} class='frame_class'>
        <div id=read{i} class='read_btn' onclick='readfn({i},{c['id'].replace('/abs/','/pdf/')})'>Read</div>
        <div id=close{i} class='x_btn' onclick='closefn({i})'>X</div>
        <div id=aud{i}></div>
        <iframe src="https://docs.google.com/viewer?url={c['id'].replace('/abs/','/pdf/')}&embedded=true" frameborder="0" height="1200px" width="100%"></iframe></div>"""
    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"<div><center>Showing {cur} through {new}</center></div>"
    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='sm')
    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()