import gradio as gr import pandas as pd import comtradeapicall import os subscription_key = os.getenv("COMTRADE_API_KEY", "") proxy_url = None def get_importers(hs_code: str, date): period = f"{date.year:04d}{date.month:02d}" df = comtradeapicall.previewFinalData( typeCode='C', freqCode='M', clCode='HS', period=period, reporterCode=None, cmdCode=hs_code, flowCode='M', partnerCode=None, partner2Code=None, customsCode=None, motCode=None, maxRecords=500, includeDesc=True, proxy_url=proxy_url ) if df is None or df.empty: return pd.DataFrame(columns=["کد کشور","نام کشور","ارزش CIF"]) df = df[df['cifvalue'] > 0] result = ( df.groupby(["reporterCode","reporterDesc"], as_index=False) .agg({"cifvalue":"sum"}) .sort_values("cifvalue", ascending=False) ) result.columns = ["کد کشور","نام کشور","ارزش CIF"] return result with gr.Blocks() as demo: gr.Markdown("## نمایش کشورهایی که یک کالا را وارد کرده‌اند") with gr.Row(): inp_hs = gr.Textbox(label="HS Code") inp_date = gr.DatePicker(label="تاریخ (انتخاب روزی در ماه/سال)") btn = gr.Button("نمایش اطلاعات") out = gr.Dataframe( headers=["کد کشور","نام کشور","ارزش CIF"], datatype=["number","text","number"], interactive=False ) btn.click(get_importers, [inp_hs, inp_date], out) if __name__ == "__main__": demo.launch()