import gradio as gr import pandas as pd import ppp as pp # 你的处理逻辑模块 import os def process_csv(file): try: df = pd.read_csv(file.name) if 'PMCID' in df.columns: pmcid_list = df['PMCID'].dropna().astype(str).tolist() pmcid_str = ','.join(pmcid_list) zip_path = pp.main(pmcid_str) # 调用主逻辑并返回 zip 路径 if os.path.exists(zip_path): return f"成功处理 {len(pmcid_list)} 个 PMCID。", zip_path else: return "处理完成,但未找到打包后的文件。", None else: return "CSV 文件中没有名为 'PMCID' 的列。", None except Exception as e: return f"处理文件时出错: {e}", None gr.Interface( fn=process_csv, inputs=gr.File(label="上传 CSV 文件"), outputs=[ gr.Textbox(label="处理结果"), gr.File(label="下载 PDF ZIP") ], title="PubMed PDF 下载器", description="上传包含 PMCID 列的 CSV 文件,自动下载对应的 PubMed PDF,并打包为 ZIP 文件。" ).launch()