
    fi3                     (   d Z ddlZddlZddlmZ ddlmZ ddedej	        fdZ
	 ddededej	        fdZddedej	        fdZedk    rH e
d          Z ee            edd          Z ee            ed          Z ee           dS dS )ut   
Date: 2022/1/23 10:21
Desc: 新浪财经-商品期权
https://stock.finance.sina.com.cn/futures/view/optionsDP.php
    N)BeautifulSoup)demjson   玉米期权symbolreturnc                    d}t          j        |          }t          |j        d          }d |                    dddi          D             }d |                    dddi          D             }d	 t          ||          D             }d
||          z   }t          j        |          }t          |j        d          }|                    ddi                              ddi          j        } d |                    ddi                              d          D             }t          j        | |i          }|	                    d           |j
        dz   |d<   ddg|_        |S )u.  
    当前可以查询的期权品种的合约日期
    https://stock.finance.sina.com.cn/futures/view/optionsDP.php
    :param symbol: choice of {"豆粕期权", "玉米期权", "铁矿石期权", "棉花期权", "白糖期权", "PTA期权", "甲醇期权", "橡胶期权", "沪铜期权", "黄金期权", "菜籽粕期权", "液化石油气期权", "动力煤期权", "菜籽油期权", "花生期权"}
    :type symbol: str
    :return: e.g., {'黄金期权': ['au2012', 'au2008', 'au2010', 'au2104', 'au2102', 'au2106', 'au2108']}
    :rtype: dict
    Ehttps://stock.finance.sina.com.cn/futures/view/optionsDP.php/pg_o/dcelxmlc                 n    g | ]2}|                     d           |                     d           d         3S aNhreffind.0items     O/usr/local/lib/python3.11/dist-packages/akshare/option/option_commodity_sina.py
<listcomp>z2option_commodity_contract_sina.<locals>.<listcomp>   A       99S>>% 			#v%%%    liclassactiveattrsc                 l    g | ]1}|                     d           |                     d           j        2S r   r   textr   s     r   r   z2option_commodity_contract_sina.<locals>.<listcomp>!   ?       99S>>% 			#%%%r   c                     i | ]\  }}||	S  r#   r   keyvalues      r   
<dictcomp>z2option_commodity_contract_sina.<locals>.<dictcomp>&       QQQZS%c5QQQr   z!https://stock.finance.sina.com.cnidoption_symbolselectedc                     g | ]	}|j         
S r#   )r    r   s     r   r   z2option_commodity_contract_sina.<locals>.<listcomp>-   s'       	  r   option_suffixT)inplace   indexu   序号u   合约)requestsgetr   r    find_allzipr   pd	DataFramereset_indexr0   columns)	r   urlrsoupurl_listcommodity_listcomm_list_dictcontracttemp_dfs	            r   option_commodity_contract_sinarA      s    RCSA((D MM$w.AMBB  H
 MM$w.AMBB  N
 RQ3~x3P3PQQQN
-v0F
FCSA((D		/	0055Wj<Q5RRW  "iit_.EiFFOOPTUU  H lFH-..G%%%}q(GG*GONr      黄金期权au2204r?   c                 z   d}t          j        |          }t          |j        d          }d |                    dddi          D             }d |                    dddi          D             }d	 t          ||          D             }d
}d||                              d          d         ||                              d          d         |d}t          j        ||          }|                                }	t          j	        |	d         d         d                   }
t          j	        |	d         d         d                   }t          j
        |
|gd          }g d|_        t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d         d          |d<   t          j        |d          d          |d <   t          j        |d!         d          |d!<   t          j        |d"         d          |d"<   t          j        |d#         d          |d#<   t          j        |d$         d          |d$<   t          j        |d%         d          |d%<   t          j        |d&         d          |d&<   t          j        |d'         d          |d'<   t          j        |d(         d          |d(<   |S ))uA  
    当前所有期权合约, 包括看涨期权合约和看跌期权合约
    https://stock.finance.sina.com.cn/futures/view/optionsDP.php
    :param symbol: choice of {"豆粕期权", "玉米期权", "铁矿石期权", "棉花期权", "白糖期权", "PTA期权", "甲醇期权", "橡胶期权", "沪铜期权", "黄金期权", "菜籽粕期权", "液化石油气期权", "动力煤期权", "菜籽油期权", "花生期权"}
    :type symbol: str
    :param contract: e.g., 'au2012'
    :type contract: str
    :return: 合约实时行情
    :rtype: pandas.DataFrame
    r	   r
   c                 n    g | ]2}|                     d           |                     d           d         3S r   r   r   s     r   r   z8option_commodity_contract_table_sina.<locals>.<listcomp>G   r   r   r   r   r   r   c                 l    g | ]1}|                     d           |                     d           j        2S r   r   r   s     r   r   z8option_commodity_contract_table_sina.<locals>.<listcomp>L   r!   r   c                     i | ]\  }}||	S r#   r#   r$   s      r   r'   z8option_commodity_contract_table_sina.<locals>.<dictcomp>Q   r(   r   zUhttps://stock.finance.sina.com.cn/futures/api/openapi.php/OptionService.getOptionDatafutures/)typeproductexchangepinzhongparamsresultdataupdownr/   )axis)   看涨合约-买量   看涨合约-买价   看涨合约-最新价   看涨合约-卖价   看涨合约-卖量   看涨合约-持仓量   看涨合约-涨跌	   行权价u   看涨合约-看涨期权合约   看跌合约-买量   看跌合约-买价   看跌合约-最新价   看跌合约-卖价   看跌合约-卖量   看跌合约-持仓量   看跌合约-涨跌u   看跌合约-看跌期权合约rW   coerce)errorsrX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   )r1   r2   r   r    r3   r4   splitjsonr5   r6   concatr8   
to_numeric)r   r?   r9   r:   r;   r<   r=   r>   rQ   	data_jsonup_dfdown_dfr@   s                r   $option_commodity_contract_table_sinaro   7   s    RCSA((D MM$w.AMBB  H
 MM$w.AMBB  N
 RQ3~x3P3PQQQN
aC!&)//44R8"6*0055b9	 F 	S(((AIL8,V4T:;;El9X.v6v>??Gi(q111G  GO& &(]7;P3QZb%c%c%cG!"%']7;P3QZb%c%c%cG!"(*()() ) )G$% &(]7;P3QZb%c%c%cG!"%']7;P3QZb%c%c%cG!"(*()() ) )G$% &(]7;P3QZb%c%c%cG!"=)=hOOOGK%']7;P3QZb%c%c%cG!"%']7;P3QZb%c%c%cG!"(*()() ) )G$% &(]7;P3QZb%c%c%cG!"%']7;P3QZb%c%c%cG!"(*()() ) )G$% &(]7;P3QZb%c%c%cG!"Nr   
au2012C392c                 h   d}d| i}t          j        ||          }|j        }t          j        ||                    d          d                   }t          j        |          }g d|_        |g d         }t          j	        |d                   j
        j        |d<   t          j        |d	                   |d	<   t          j        |d
                   |d
<   t          j        |d                   |d<   t          j        |d                   |d<   t          j        |d                   |d<   |S )uJ  
    合约历史行情-日频
    https://stock.finance.sina.com.cn/futures/view/optionsDP.php
    :param symbol: return of option_sina_option_commodity_contract_list(symbol="黄金期权", contract="au2012"), 看涨期权合约 filed
    :type symbol: str
    :return: 合约历史行情-日频
    :rtype: pandas.DataFrame
    z{https://stock.finance.sina.com.cn/futures/api/jsonp.php/var%20_m2009C30002020_7_17=/FutureOptionAllService.getOptionDayliner   rP   [rJ   )openhighlowclosevolumedate)rx   rs   rt   ru   rv   rw   rx   rs   rt   ru   rv   rw   )r1   r2   r    r   decoder   r5   r6   r8   to_datetimedtrx   rk   )r   r9   rQ   r:   	data_textrl   r@   s          r   option_commodity_hist_sinar}      s    HCFS(((AIy)<)<r)ABCCIl9%%GHHHGOHHHIGnWV_558=GFOmGFO44GFOmGFO44GFO]75>22GEN}WW%566GGgh&788GHNr   __main__u   棉花期权)r   cf2301)r   r?   cf2301P21600)r   )rB   rC   )rp   )__doc__pandasr5   r1   bs4r   akshare.utilsr   strr6   rA   ro   r}   __name__!option_commodity_contract_sina_dfprint'option_commodity_contract_table_sina_dfoption_commodity_hist_sina_dfr#   r   r   <module>r      s|               ! ! ! ! ! !$ $3 $BL $ $ $ $P 3;Q QQ,/Q\Q Q Q Qh s bl    4 z(F(F) ) )% 
E
+,,,.R.R/ / /+ 
E
1222$>$>n$U$U$U!	E
'((((( r   