Spaces:
Sleeping
Sleeping
| import subprocess | |
| import time | |
| #import pdfkit | |
| import re | |
| def launch_app(): | |
| """启动Gradio应用并获取公共URL""" | |
| app_process = subprocess.Popen( | |
| ["python", "app.py"], | |
| stdout=subprocess.PIPE, | |
| stderr=subprocess.STDOUT, | |
| text=True | |
| ) | |
| # 等待并捕获公共URL | |
| public_url = None | |
| for line in iter(app_process.stdout.readline, ''): | |
| print(line.strip()) | |
| url_match = re.search(r'Running on public URL: (https?://\S+)', line) | |
| if url_match: | |
| public_url = url_match.group(1) | |
| break | |
| if not public_url: | |
| raise RuntimeError("未能获取Gradio公共URL") | |
| return app_process, public_url | |
| def run_api_test(public_url): | |
| """执行API测试并生成JSON结果""" | |
| subprocess.run( | |
| ["python", "api_test.py", public_url], | |
| check=True | |
| ) | |
| def generate_markdown(): | |
| """生成Markdown报告""" | |
| subprocess.run( | |
| ["python", "response_parser.py"], | |
| check=True | |
| ) | |
| stop = ''' | |
| def convert_to_pdf(): | |
| """将Markdown转换为PDF""" | |
| markdown_path = r"D:\007.Projects\008.deep_research\smolagents\examples\open_deep_research\analysis_report.md" | |
| pdf_path = r"D:\007.Projects\008.deep_research\smolagents\examples\open_deep_research\analysis_report.pdf" | |
| # 使用wkhtmltopdf进行转换 | |
| options = { | |
| 'encoding': 'UTF-8', | |
| 'custom-header': [ | |
| ('Content-Encoding', 'UTF-8') | |
| ] | |
| } | |
| with open(markdown_path, 'r', encoding='utf-8') as f: | |
| html_content = f.read() | |
| pdfkit.from_string(html_content, pdf_path, options=options) | |
| return pdf_path | |
| ''' | |
| if __name__ == "__main__": | |
| try: | |
| # 1. 启动Gradio应用 | |
| app_proc, url = launch_app() | |
| print(f"\n🚀 Gradio应用已启动: {url}") | |
| # 2. 执行API测试 | |
| print("\n🔧 正在执行API测试...") | |
| run_api_test(url) | |
| # 3. 生成Markdown报告 | |
| print("\n📝 正在生成分析报告...") | |
| generate_markdown() | |
| # 4. 转换为PDF | |
| #print("\n🔄 正在转换为PDF格式...") | |
| #pdf_path = convert_to_pdf() | |
| #print(f"\n✅ 流程完成!最终报告路径:{pdf_path}") | |
| except Exception as e: | |
| print(f"\n❌ 流程执行出错: {str(e)}") | |
| finally: | |
| # 关闭Gradio进程 | |
| if 'app_proc' in locals(): | |
| app_proc.terminate() |