Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| import requests | |
| import gradio as gr | |
| def get_bibtext_from_title(title, retry_times=100): | |
| # URL编码查询参数 | |
| encoded_query = requests.utils.quote(title) | |
| print(f'query: {encoded_query}') | |
| # 假设API的endpoint为'https://api.example.com/search' | |
| url = f"https://api.semanticscholar.org/graph/v1/paper/search?query={encoded_query}&offset=0&limit=3&fields=title,citationStyles" | |
| for i in range(retry_times): | |
| # 发送GET请求 | |
| response = requests.get(url) | |
| # 检查请求是否成功 | |
| if response.status_code == 200: | |
| # 如果请求成功,返回JSON格式的数据 | |
| try: | |
| data = response.json()['data'] | |
| bibtex = data[0]['citationStyles']['bibtex'] | |
| return bibtex | |
| except: | |
| msg = f"Failed to parse response: {response.json()}" | |
| return msg | |
| elif response.status_code == 429: | |
| print(f'retry {i} times') | |
| continue | |
| else: | |
| # 如果请求失败,打印错误信息 | |
| msg = "Failed to retrieve data: {response.json()}" | |
| return msg | |
| def process_text(input_text): | |
| titles = input_text.split('\n') | |
| # 在这个例子中,我们仅仅将输入的文本原样返回。 | |
| # 你可以在这个函数中加入任何你想要的文本处理逻辑。 | |
| output = [] | |
| for title in titles: | |
| if not title: | |
| continue | |
| bibtex = get_bibtext_from_title(title) | |
| print(bibtex) | |
| if bibtex is not None: | |
| output.append(bibtex) | |
| else: | |
| output.append("Failed to process: " + title + '\n') | |
| return '\n'.join(output) | |
| # 创建Gradio界面 | |
| iface = gr.Interface( | |
| fn=process_text, # 要调用的处理函数 | |
| inputs=gr.Textbox(lines=10, placeholder="请在此输入论文标题..."), # 输入组件:文本框,设置多行输入 | |
| outputs=gr.Textbox(lines=20, placeholder="输出BibTex信息将会在此显示..."), # 输出组件:文本框,设置多行输出 | |
| ) | |
| if __name__ == "__main__": | |
| # 启动界面 | |
| iface.launch() | |