import eikon as ek

import hug
from bottle import route, run
import json
import pandas as pd
import urllib.parse

hug.API(__name__).http.output_format = hug.output_format.json

# 填写路透的key
key = ""


@hug.get('/hz_server')
def hello():
    ek_port = ek.get_port_number()
    if ek_port is None:
        # 如果检测不到路透终端的端口,那么就返回检测失败(可能电脑重启了)
        return "ek false"
    return 'ek true'


@hug.get('/edbInfo/ek')
def GetEdbDataFromEk(EdbCode, StartDate, EndDate ,Frequency="daily"):
    EdbCode = urllib.parse.unquote(EdbCode)
    # print("EdbCode:", EdbCode, ";StartDate:", StartDate, ";EndDate:", EndDate, ";Frequency:", Frequency)
    # print("req start")
    if Frequency == "":
        Frequency = "daily"
    data = ek.get_timeseries(EdbCode, fields='*', start_date=StartDate, end_date=EndDate, interval=Frequency)
    # print("result start\n", data)
    if data is None:
        print("数据查询失败:", data)
        return False
    # print("是否唯一索引:", data.index.is_unique)
    if data.index.is_unique is False:
        # print("开始去重")
        data = data.groupby(data.index).first()
        # print("结束去重")
        # print(data)
    
    # print("result end")
    data_json = data.to_json()
    result = json.loads(data_json)
    return result


if __name__ == "__main__":
    ek.set_app_key(key)
    ek.set_timeout(120)
    app = __hug__.http.server()
    run(app=app, reloader=True, host='0.0.0.0', port=7002)