#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
Date: 2024/10/6 17:00
Desc: 集思录-T+0 QDII
集思录：https://www.jisilu.cn/data/qdii/#qdiie
"""

import pandas as pd

from akshare.request import make_request_with_retry_json


def qdii_e_index_jsl(cookie: str = "") -> pd.DataFrame:
    """
    集思录-T+0 QDII-欧美市场-欧美指数
    https://www.jisilu.cn/data/qdii/#qdiia
    :return: T+0 QDII-亚洲市场
    :rtype: pandas.DataFrame
    """
    url = "https://www.jisilu.cn/data/qdii/qdii_list/E"
    params = {
        "___jsl": "LST___t=1728207798534",
        "rp": "22",
    }
    headers = {
        "cookie": cookie,
    }
    data_json = make_request_with_retry_json(url, params, headers=headers)
    temp_df = pd.DataFrame([item["cell"] for item in data_json["rows"]])
    temp_df.rename(
        columns={
            "fund_id": "代码",
            "fund_nm": "名称",
            "price": "现价",
            "increase_rt": "涨幅",
            "volume": "成交",
            "amount": "场内份额",
            "amount_incr": "场内新增",
            "fund_nav": "T-2净值",
            "nav_dt": "净值日期",
            "estimate_value": "T-1估值",
            "last_est_dt": "估值日期",
            "discount_rt": "T-1溢价率",
            "index_nm": "相关标的",
            "ref_increase_rt": "T-1指数涨幅",
            "apply_fee": "申购费",
            "redeem_fee": "赎回费",
            "mt_fee": "托管费",
            "issuer_nm": "基金公司",
        },
        inplace=True,
    )
    temp_df = temp_df[
        [
            "代码",
            "名称",
            "现价",
            "涨幅",
            "成交",
            "场内份额",
            "场内新增",
            "T-2净值",
            "净值日期",
            "T-1估值",
            "估值日期",
            "T-1溢价率",
            "相关标的",
            "T-1指数涨幅",
            "申购费",
            "赎回费",
            "托管费",
            "基金公司",
        ]
    ]
    temp_df["净值日期"] = pd.to_datetime(temp_df["净值日期"], errors="coerce").dt.date
    temp_df["估值日期"] = pd.to_datetime(temp_df["估值日期"], errors="coerce").dt.date
    temp_df["现价"] = pd.to_numeric(temp_df["现价"], errors="coerce")
    temp_df["成交"] = pd.to_numeric(temp_df["成交"], errors="coerce")
    temp_df["场内份额"] = pd.to_numeric(temp_df["场内份额"], errors="coerce")
    temp_df["场内新增"] = pd.to_numeric(temp_df["场内新增"], errors="coerce")
    temp_df["T-2净值"] = pd.to_numeric(temp_df["T-2净值"], errors="coerce")
    temp_df["T-1估值"] = pd.to_numeric(temp_df["T-1估值"], errors="coerce")
    temp_df["托管费"] = pd.to_numeric(temp_df["托管费"], errors="coerce")
    return temp_df


def qdii_e_comm_jsl(cookie: str = "") -> pd.DataFrame:
    """
    集思录-T+0 QDII-欧美市场-商品
    https://www.jisilu.cn/data/qdii/#qdiia
    :return: T+0 QDII-欧美市场-商品
    :rtype: pandas.DataFrame
    """
    url = "https://www.jisilu.cn/data/qdii/qdii_list/E"
    params = {
        "___jsl": "LST___t=1728207798534",
        "rp": "22",
    }
    headers = {
        "cookie": cookie
    }
    data_json = make_request_with_retry_json(url, params=params, headers=headers)
    temp_df = pd.DataFrame([item["cell"] for item in data_json["rows"]])
    temp_df.rename(
        columns={
            "fund_id": "代码",
            "fund_nm": "名称",
            "price": "现价",
            "increase_rt": "涨幅",
            "volume": "成交",
            "amount": "场内份额",
            "amount_incr": "场内新增",
            "fund_nav": "T-2净值",
            "nav_dt": "净值日期",
            "estimate_value": "T-1估值",
            "last_est_dt": "估值日期",
            "discount_rt": "T-1溢价率",
            "index_nm": "相关标的",
            "ref_increase_rt": "T-1指数涨幅",
            "apply_fee": "申购费",
            "redeem_fee": "赎回费",
            "mt_fee": "托管费",
            "issuer_nm": "基金公司",
        },
        inplace=True,
    )
    temp_df = temp_df[
        [
            "代码",
            "名称",
            "现价",
            "涨幅",
            "成交",
            "场内份额",
            "场内新增",
            "T-2净值",
            "净值日期",
            "T-1估值",
            "估值日期",
            "T-1溢价率",
            "相关标的",
            "T-1指数涨幅",
            "申购费",
            "赎回费",
            "托管费",
            "基金公司",
        ]
    ]
    temp_df["净值日期"] = pd.to_datetime(temp_df["净值日期"], errors="coerce").dt.date
    temp_df["估值日期"] = pd.to_datetime(temp_df["估值日期"], errors="coerce").dt.date
    temp_df["现价"] = pd.to_numeric(temp_df["现价"], errors="coerce")
    temp_df["成交"] = pd.to_numeric(temp_df["成交"], errors="coerce")
    temp_df["场内份额"] = pd.to_numeric(temp_df["场内份额"], errors="coerce")
    temp_df["场内新增"] = pd.to_numeric(temp_df["场内新增"], errors="coerce")
    temp_df["T-2净值"] = pd.to_numeric(temp_df["T-2净值"], errors="coerce")
    temp_df["T-1估值"] = pd.to_numeric(temp_df["T-1估值"], errors="coerce")
    temp_df["托管费"] = pd.to_numeric(temp_df["托管费"], errors="coerce")
    return temp_df


def qdii_a_index_jsl(cookie: str = "") -> pd.DataFrame:
    """
    集思录-T+0 QDII-亚洲市场-亚洲指数
    https://www.jisilu.cn/data/qdii/#qdiia
    :return: T+0 QDII-亚洲市场-亚洲指数
    :rtype: pandas.DataFrame
    """
    url = "https://www.jisilu.cn/data/qdii/qdii_list/A"
    params = {
        "___jsl": "LST___t=1728206439242",
        "rp": "22",
    }
    headers = {
        "cookie": cookie
    }
    data_json = make_request_with_retry_json(url, params=params, headers=headers)
    temp_df = pd.DataFrame([item["cell"] for item in data_json["rows"]])
    temp_df.rename(
        columns={
            "fund_id": "代码",
            "fund_nm": "名称",
            "price": "现价",
            "increase_rt": "涨幅",
            "volume": "成交",
            "amount": "场内份额",
            "amount_incr": "场内新增",
            "fund_nav": "净值",
            "nav_dt": "净值日期",
            "estimate_value": "估值",
            "discount_rt": "溢价率",
            "index_nm": "相关标的",
            "ref_increase_rt": "指数涨幅",
            "apply_fee": "申购费",
            "redeem_fee": "赎回费",
            "mt_fee": "托管费",
            "issuer_nm": "基金公司",
        },
        inplace=True,
    )

    temp_df = temp_df[
        [
            "代码",
            "名称",
            "现价",
            "涨幅",
            "成交",
            "场内份额",
            "场内新增",
            "净值",
            "净值日期",
            "估值",
            "溢价率",
            "相关标的",
            "指数涨幅",
            "申购费",
            "赎回费",
            "托管费",
            "基金公司",
        ]
    ]
    temp_df["净值日期"] = pd.to_datetime(temp_df["净值日期"], errors="coerce").dt.date
    temp_df["现价"] = pd.to_numeric(temp_df["现价"], errors="coerce")
    temp_df["成交"] = pd.to_numeric(temp_df["成交"], errors="coerce")
    temp_df["场内份额"] = pd.to_numeric(temp_df["场内份额"], errors="coerce")
    temp_df["场内新增"] = pd.to_numeric(temp_df["场内新增"], errors="coerce")
    temp_df["净值"] = pd.to_numeric(temp_df["净值"], errors="coerce")
    temp_df["估值"] = pd.to_numeric(temp_df["估值"], errors="coerce")
    temp_df["托管费"] = pd.to_numeric(temp_df["托管费"], errors="coerce")
    return temp_df


if __name__ == "__main__":
    qdii_e_index_jsl_df = qdii_e_index_jsl()
    print(qdii_e_index_jsl_df)

    qdii_e_comm_jsl_df = qdii_e_comm_jsl()
    print(qdii_e_comm_jsl_df)

    qdii_a_index_jsl_df = qdii_a_index_jsl()
    print(qdii_a_index_jsl_df)
