
    fi                     "   d Z ddlZddlZddlZddlZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZddiZddiZdZdZdZdZddiZ ej        d          Zd Zd Zd Zd Zd Zedk    r+ ej        dd d!d"d#d          Z  e! ee                      dS dS )$u0   
Date: 2019/9/30 13:58
Desc: 期权配置文件
    Nz$http://www.cffex.com.cn/quote_IO.txtzohttp://www.szse.cn/api/report/ShowReport?SHOWTYPE=xlsx&CATALOGID=ysplbrb&TABKEY=tab1&random=0.10432465776720479z5http://yunhq.sse.com.cn:32041/v1/sh1/list/self/510050z:http://yunhq.sse.com.cn:32041/v1/sho/list/tstyle/510050_{}z5http://yunhq.sse.com.cn:32041/v1/sh1/list/self/510300z:http://yunhq.sse.com.cn:32041/v1/sho/list/tstyle/510300_{}z5http://yunhq.sse.com.cn:32041/v1/sh1/list/self/510500z:http://yunhq.sse.com.cn:32041/v1/sho/list/tstyle/510500_{}z5http://yunhq.sse.com.cn:32041/v1/sh1/list/self/588000z:http://yunhq.sse.com.cn:32041/v1/sho/list/tstyle/588000_{}z5http://yunhq.sse.com.cn:32041/v1/sh1/list/self/588080z:http://yunhq.sse.com.cn:32041/v1/sho/list/tstyle/588080_{}selectzHselect: code,name,last,change,chg_rate,amp_rate,volume,amount,prev_closez'contractid,last,chg_rate,presetpx,exepxz>http://portal.dce.com.cn/publicweb/quotesdata/dayQuotesCh.htmlzHhttp://portal.dce.com.cn/publicweb/quotesdata/exportDayQuotesChData.htmlz;https://tsite.shfe.com.cn/data/dailydata/option/kx/kx{}.datzIhttp://www.czce.com.cn/cn/DFSStaticFiles/Option/{}/{}/OptionDataDaily.txtz
User-Agentz.Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)z)^([0-9]{4})[-/]?([0-9]{2})[-/]?([0-9]{2})c                    t          | t          j                  r| S t          | t                    rt                              |           }|rw|                                }t          |          dk    rPt          j        t          |d                   t          |d                   t          |d                             S dS )z
    transform a date string to datetime.date object
    :param date, string, e.g. 2016-01-01, 20160101 or 2016/01/01
    :return: object of datetime.date(such as 2016-01-01) or None
       r         )yearmonthdayN)	
isinstancedatetimedatestrDATE_PATTERNmatchgroupslenint)r   r   r   s      >/usr/local/lib/python3.11/dist-packages/akshare/option/cons.pyconvert_dater   A   s     $&& 		D#		 ""4(( 	\\^^F6{{a}VAYs6!9~~3vay>>    4    c                     t           j                            t           j                            t           j                            |                              }t           j                            |d|           }|S )u   
    获取 JSON 配置文件的路径(从模块所在目录查找)
    :param name: 文件名
    :param module_file: filename
    :return: str json_file_path
    	file_fold)ospathabspathdirnamejoin)namemodule_filemodule_foldermodule_json_paths       r   get_json_pathr"   T   sQ     GOOBGOOBGOOK4P4P$Q$QRRMw||M;EEr   c                  t    d} t          | t                    }t          j        t	          |d                    S )ui   
    获取交易日历至 2019 年结束, 这里的交易日历需要按年更新
    :return: json
    zcalendar.jsonr)r"   __file__jsonloadopen)setting_file_namesetting_file_paths     r   get_calendarr+   `   s6    
 (%&7BB9T+S11222r   c                    t                      }t          | t                    r:| |vrt          d| z              dS |                    |           }||dz
           }|S t          | t
          j                  r|                     d          }||vrt          d|z              dS |                    |          }||dz
           }t
          j                            |d                                          }|S dS )u   
    获取前一个交易日
    :param day: "%Y%m%d" or  datetime.date()
    :return last_day: "%Y%m%d" or  datetime.date()
    u   Today is not trading day：Fr   %Y%m%du   Today is not working day：N)	r+   r   r   printindexr   r   strftimestrptime)r
   calendarposlast_dayd_strs        r   last_trading_dayr6   j   s    ~~H#s h/#56665nnS!!C!G$	C	'	' X&&  /%78885nnU##C!G$$--hAAFFHH r   c                    t                      }|                     d          |v rc|                                 t          j        ddd          k    r|                     d          S t	          |                     d                    S |                     d          |vr/| t          j        d          z
  } |                     d          |v/|                     d          S )ul   
    获取最新的有数据的交易日
    :param day: datetime.datetime
    :return string YYYYMMDD
    r-      r   r   )days)r+   r0   timer   r6   	timedelta)r
   r2   s     r   get_latest_data_dater<      s     ~~H
||H))88::b!Q////<<)))#CLL$:$:;;;ll8$$H44*2222C ll8$$H44||H%%%r   __main__i  
      r8   r   )"__doc__r   r&   r   reCFFEX_OPTION_URL_300SZ_OPTION_URL_300SH_OPTION_URL_50SH_OPTION_URL_KING_50SH_OPTION_URL_300SH_OPTION_URL_KING_300SH_OPTION_URL_500SH_OPTION_URL_KING_500SH_OPTION_URL_KC_50SH_OPTION_URL_KC_KING_50SH_OPTION_URL_KC_50_YFDSH_OPTION_URL_KING_50_YFDSH_OPTION_PAYLOADSH_OPTION_PAYLOAD_OTHERDCE_OPTION_URLDCE_DAILY_OPTION_URLSHFE_OPTION_URLCZCE_DAILY_OPTION_URL_3SHFE_HEADERScompiler   r   r"   r+   r6   r<   __name__dr.    r   r   <module>rY      s   
   				 				 >  F  K T K U K U M W Q X  X  $%NO  RN 
 P P 
 NOrzFGG  &	 	 	3 3 3  6& & &$ z$Ar1a00A	E

q
!
!""""" r   