#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
Date: 2025/8/4 14:00
Desc: 中证指数网站-指数列表
网站：https://www.csindex.com.cn/#/indices/family/list?index_series=1
"""

import warnings
from io import BytesIO

import pandas as pd
import requests


def index_csindex_all() -> pd.DataFrame:
    """
    中证指数网站-指数列表
    https://www.csindex.com.cn/#/indices/family/list?index_series=1
    Note: 但是不知道数据更新时间
    :return: 最新指数的列表,
    :rtype: pandas.DataFrame
    """
    warnings.filterwarnings(
        "ignore", category=UserWarning, message="Workbook contains no default style"
    )
    url = "https://www.csindex.com.cn/csindex-home/exportExcel/indexAll/CH"

    headers = {
        "Content-Type": "application/json;charset=UTF-8",
    }
    playloads = {
        "sorter": {"sortField": "null", "sortOrder": None},
        "pager": {"pageNum": 1, "pageSize": 10},
        "indexFilter": {
            "ifCustomized": None,
            "ifTracked": None,
            "ifWeightCapped": None,
            "indexCompliance": None,
            "hotSpot": None,
            "indexClassify": None,
            "currency": None,
            "region": None,
            "indexSeries": ["1"],
            "undefined": None,
        },
    }
    r = requests.post(url, json=playloads, headers=headers)

    temp_df = pd.read_excel(BytesIO(r.content))
    temp_df["基日"] = pd.to_datetime(
        temp_df["基日"], format="%Y-%m-%d", errors="coerce"
    ).dt.date
    temp_df["发布时间"] = pd.to_datetime(
        temp_df["发布时间"], format="%Y-%m-%d", errors="coerce"
    ).dt.date
    temp_df["指数代码"] = temp_df["指数代码"].astype(str).str.zfill(6)
    return temp_df


if __name__ == "__main__":
    index_csindex_all_df = index_csindex_all()
    print(index_csindex_all_df)
