# Path: kquant_data/wind_resume/wsd.py
# def resume_download_daily_many_to_one_file(
#         w,
#         wind_codes,
#         field,
#         dtype,
#         enddate,
#         root_path,
#         option='unit=1;rptType=1;Period=Q;Days=Alldays',
#         default_start_date='2000-01-01'):
#     """
#     增量下载，下载每个季度因子到一个文件，由于季度使用日历日
#     按日下数据也没有关系，一般是每天都不一样才使用，这时使用交易日
# 
#     # 对于有些因子，可能公司有问题，很久不公布，可能过了一年都不公布
#     # 这种一般是退市或停牌了，对于这些，找一个时间更新一下即可
#     # 补最近的两个报告
#     dr = pd.date_range(end=datetime.datetime.today().date(), periods=4, freq='Q')
#     new_end_str = dr[-1].strftime('%Y-%m-%d')
#     :param w:
#     :param wind_codes:
#     :param field:
#     :param enddate:
#     :param option:
#     :param root_path:
#     :return:
#     """
#     df_old = None
#     df_old_output = None
#     new_end_str = enddate
# 
#     path = os.path.join(root_path, '%s.csv' % field)
#     # 补数据时，将半年内的数据再重下一次
#     try:
#         df_old = pd.read_csv(path, index_col=0, parse_dates=True, encoding='utf-8-sig')
#         df_old_output = df_old.copy()
# 
#         # 如果最后日子不相等，表示是以前下的，需要多考虑一天
#         old_end_str = df_old.index[-1].strftime('%Y-%m-%d')
#         back = -2
#         if old_end_str != new_end_str:
#             back = -3
#         new_start_str = df_old.index[back].strftime('%Y-%m-%d')
#         df_old = df_old[:back]
#     except:
#         # 打开失败，使用老数据
#         new_start_str = default_start_date
# 
#     df_new = download_daily_between(w, wind_codes, field,
#                                     new_start_str, new_end_str, option)
# 
#     if df_old is None:
#         df = df_new
#     else:
#         # 合并，第一，需要两者列相同
#         df = pd.DataFrame(index=df_old.index, columns=df_new.columns)
#         # 这里有可能重复
#         df[df_old.columns] = df_old
#         df = pd.concat([df, df_new])
# 
#     # 数据内容实际是时间，需要强行转换，这样后面写csv时就不会出现后面一段了
#     # 排序会不会出问题呢？
#     if dtype == np.datetime64:
#         df = df.stack(dropna=False)
#         df = pd.to_datetime(df)
#         df = df.unstack()
# 
#     df = df[wind_codes]
#     write_data_dataframe(path, df)
#     print(path)
#     # 输出这前后两个DataFrame可以提供给外界判断是否有新数据要下载
#     return df_old_output, df
# 
# Path: kquant_data/future/symbol.py
# def get_all_products_wind():
#     _lst = get_all_products()
#     __lst = [get_wind_code(x).upper() for x in _lst]
#     return __lst
# 
# Path: kquant_data/config.py
# __CONFIG_H5_FUT_DATA_DIR__ = os.path.join(__CONFIG_H5_FUT_DIR__, 'data')


from WindPy import w
from datetime import datetime
from kquant_data.wind_resume.wsd import resume_download_daily_many_to_one_file
from kquant_data.future.symbol import get_all_products_wind
from kquant_data.config import __CONFIG_H5_FUT_DATA_DIR__
import os
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
增量下载期货仓单数据
"""

if __name__ == '__main__':
    w.start()

    date_str = datetime.today().strftime('%Y-%m-%d')

    windcodes = get_all_products_wind()


# Path: kquant_data/wind_resume/wsd.py
# def resume_download_daily_many_to_one_file(
#         w,
#         wind_codes,
#         field,
#         dtype,
#         enddate,
#         root_path,
#         option='unit=1;rptType=1;Period=Q;Days=Alldays',
#         default_start_date='2000-01-01'):
#     """
#     增量下载，下载每个季度因子到一个文件，由于季度使用日历日
#     按日下数据也没有关系，一般是每天都不一样才使用，这时使用交易日
# 
#     # 对于有些因子，可能公司有问题，很久不公布，可能过了一年都不公布
#     # 这种一般是退市或停牌了，对于这些，找一个时间更新一下即可
#     # 补最近的两个报告
#     dr = pd.date_range(end=datetime.datetime.today().date(), periods=4, freq='Q')
#     new_end_str = dr[-1].strftime('%Y-%m-%d')
#     :param w:
#     :param wind_codes:
#     :param field:
#     :param enddate:
#     :param option:
#     :param root_path:
#     :return:
#     """
#     df_old = None
#     df_old_output = None
#     new_end_str = enddate
# 
#     path = os.path.join(root_path, '%s.csv' % field)
#     # 补数据时，将半年内的数据再重下一次
#     try:
#         df_old = pd.read_csv(path, index_col=0, parse_dates=True, encoding='utf-8-sig')
#         df_old_output = df_old.copy()
# 
#         # 如果最后日子不相等，表示是以前下的，需要多考虑一天
#         old_end_str = df_old.index[-1].strftime('%Y-%m-%d')
#         back = -2
#         if old_end_str != new_end_str:
#             back = -3
#         new_start_str = df_old.index[back].strftime('%Y-%m-%d')
#         df_old = df_old[:back]
#     except:
#         # 打开失败，使用老数据
#         new_start_str = default_start_date
# 
#     df_new = download_daily_between(w, wind_codes, field,
#                                     new_start_str, new_end_str, option)
# 
#     if df_old is None:
#         df = df_new
#     else:
#         # 合并，第一，需要两者列相同
#         df = pd.DataFrame(index=df_old.index, columns=df_new.columns)
#         # 这里有可能重复
#         df[df_old.columns] = df_old
#         df = pd.concat([df, df_new])
# 
#     # 数据内容实际是时间，需要强行转换，这样后面写csv时就不会出现后面一段了
#     # 排序会不会出问题呢？
#     if dtype == np.datetime64:
#         df = df.stack(dropna=False)
#         df = pd.to_datetime(df)
#         df = df.unstack()
# 
#     df = df[wind_codes]
#     write_data_dataframe(path, df)
#     print(path)
#     # 输出这前后两个DataFrame可以提供给外界判断是否有新数据要下载
#     return df_old_output, df
# 
# Path: kquant_data/future/symbol.py
# def get_all_products_wind():
#     _lst = get_all_products()
#     __lst = [get_wind_code(x).upper() for x in _lst]
#     return __lst
# 
# Path: kquant_data/config.py
# __CONFIG_H5_FUT_DATA_DIR__ = os.path.join(__CONFIG_H5_FUT_DIR__, 'data')


# Path: demo_future/A01_download_st_stock.py
from WindPy import w
from datetime import datetime
from kquant_data.wind_resume.wsd import resume_download_daily_many_to_one_file
from kquant_data.future.symbol import get_all_products_wind
from kquant_data.config import __CONFIG_H5_FUT_DATA_DIR__
import os

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
增量下载期货仓单数据
"""

if __name__ == '__main__':
    w.start()

    date_str = datetime.today().strftime('%Y-%m-%d')

    windcodes = get_all_products_wind()


    root_path = os.path.join(__CONFIG_H5_FUT_DATA_DIR__, "st_stock")