Tradingdata / app.py
diginoron's picture
Update app.py
6df290f verified
raw
history blame
1.75 kB
import gradio as gr
import pandas as pd
import comtradeapicall
import os
from gradio.components import DatePicker
from datetime import datetime
subscription_key = os.getenv("COMTRADE_API_KEY", "")
proxy_url = None
def get_importers(hs_code: str, date_str):
# date_str comes in "YYYY-MM-DD" format; extract YYYYMM
period = date_str[:7].replace("-", "")
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 = DatePicker(label="تاریخ (انتخاب یک روز در ماه و سال مورد نظر)")
btn = gr.Button("نمایش اطلاعات")
out = gr.Dataframe(
headers=["کد کشور","نام کشور","ارزش CIF"],
datatype=["number","text","number"],
interactive=False
)
btn.click(get_importers, inputs=[inp_hs, inp_date], outputs=out)
if __name__ == "__main__":
demo.launch()