o
    i+)                     @   s  d Z ddlZddlmZ ddlmZ ddlZddl	Z	ddl
Z
ddlm  mZ ddlmZ z
ddlmZmZ W n eyH   ddlmZmZ Y nw d,dd	Zd
d Zdd Zd-ddZdd Zdd Zdd Zdd Zd.ddZdd Zdd  Z d!d" Z!d#d$ Z"d%d& Z#d'd( Z$d/d*d+Z%dS )0uu   
获取股票分类数据接口 
Created on 2015/02/01
@author: Jimmy Liu
@group : waditu
@contact: jimmysoa@sina.cn
    N)cons)ref_vars)Client)urlopenRequestsinac                 C   sd   | dkrt jtjtjd tjd df dtid}|S t jtjtjd tjd df dtid}|S )u   
        获取行业分类数据
    Parameters
    ----------
    standard
    sina:新浪行业 sw：申万 行业
    
    Returns
    -------
    DataFrame
        code :股票代码
        name :股票名称
        c_name :行业名称
    swhttpossindustry_swcodedtypeindustrypdread_csvctTSDATA_CLASSP_TYPEDOMAINSobject)standarddf r   L/opt/alphahud/venv/lib/python3.10/site-packages/tushare/stock/classifying.pyget_industry_classified   s   	r   c                  C   s.   t jtjtjd tjd df dtid} | S )u   
        获取概念分类数据
    Return
    --------
    DataFrame
        code :股票代码
        name :股票名称
        c_name :概念名称
    r	   r
   conceptr   r   r   r   r   r   r   get_concept_classified=   s   
r   c                  C   s   t   tt jt jd t jd t jd f } g }| jD ]}t|d }|d ur3|d |d< |	| qt
|dkrAtj|dd}|jd	d
d d S )Nr	   sfcptr      c_nameT)ignore_indexz
d:\cpt.csvF)index)r   _write_head_get_type_dataSINA_CONCEPTS_INDEX_URLr   r   PAGESvalues_get_detailappendlenr   concatto_csv)r   datarowrowDfr   r   r   concetpsL   s   

r3   dfcfc           
      C   s   t tjtjd tjd tdf dd}| }tjr |dn|}t	
|}g }|D ]'}|d}|d d	}|d
 |d |d |d
 |d |d g}|| q+tj|g dd}	|	S )u   
        获取概念板块行情数据
    Return
    --------
    DataFrame
        code :股票代码
        name :股票名称
        c_name :概念名称
    r	   r4       )refutf-8,   |      r      	   )r   changeupdowntop_codetop_namecolumns)r   r   ET_CONCEPTS_INDEX_URLr   r   _randomgvaluePY3decodejsonloadssplitr,   r   	DataFrame)
srccltcontentjsr0   r1   colscsarrr   r   r   r   get_concepts\   s    


(rW   c                  C   s6   t  } | ddg } | jdd | djdd} | S )u   
        获取地域分类数据
    Return
    --------
    DataFrame
        code :股票代码
        name :股票名称
        area :地域名称
    nameareaTinplacedrop)fdget_stock_basicsreset_indexsort_valuesr   r   r   r   get_area_classifiedu   s
   
rb   c                  C   sJ   t  } | jdd | tj } | j| jjd dk } | djdd} | S )u   
        获取创业板股票
    Return
    --------
    DataFrame
        code :股票代码
        name :股票名称
    TrZ   r   3r   r\   	r^   r_   r`   r   FOR_CLASSIFY_COLSlocr   strra   r   r   r   r   get_gem_classified   s   	
rh   c                  C   sN   t  } | jdd | tj } | j| jjdd dk } | djdd} | S )u   
        获取中小板股票
    Return
    --------
    DataFrame
        code :股票代码
        name :股票名称
    TrZ   r   r=   002r   r\   rd   r   r   r   r   get_sme_classified   s   	
rj   c                  C   sH   t  } | jdd | tj } | j| jjd } | 	djdd} | S )u   
        获取风险警示板股票
    Return
    --------
    DataFrame
        code :股票代码
        name :股票名称
    TrZ   STr   r\   )
r^   r_   r`   r   re   rf   rX   rg   containsra   r   r   r   r   get_st_classified   s   	
rm   r=   MbP?c                 C   s  t  }d}d}	 |d }t|D ]5}t| z(t  ttjtj	d tj
d tjd || f }t|dd	 }|d
}W n   Y q td}	|	d|}|dd}|dd}t|}
t|
}t jt j|dtidtjd}|ddg }t ||g}|jd |k r|S q	)Nr   d   Tr"   r	   vsfjv
   timeoutgbkz	\,(.*?)\:z,"\1":z"{symbolz{"symbolz{symbolz	{"symbol"r   r   rE   rX   )r   rO   rangetimesleepr   _write_consoler   SINA_DATA_DETAIL_URLr   r   r)   r   readrK   recompilesubreplacerL   dumpsrM   	read_jsonr   
THE_FIELDSr.   shape)tagretry_countpausedfcp	num_limit_requesttextregjstrrS   r   r   r   r   r+      s<   



r+   c              
   C   s   z0t | }t|dd }|d}|dd }t|}tjdd |	 D dd	gd
}|W S  t
yI } ztt| W Y d }~d S d }~ww )Nrr   rs   GBK=r"   c                 S   s(   g | ]}| d d | d d gqS )r9   r   r"   )rN   ).0r1   r   r   r   
<listcomp>   s   ( z"_get_type_data.<locals>.<listcomp>r   rX   rE   )r   r   r{   rK   rN   rL   rM   r   rO   r*   	Exceptionprintrg   )urlr   data_str	data_jsonr   err   r   r   r'      s   

r'   c               
   C      z*t jtjtjd tjd tjd f g dd} tj| _| d 	dd | d< | W S  t
yC } ztt| W Y d	}~d	S d	}~ww )
u   
    获取沪深300当前成份股及所占权重
    Return
    --------
    DataFrame
        code :股票代码
        name :股票名称
        date :日期
        weight:权重
    r	   idxhs300wr            usecolsr   c                 S      t | dS Nr:   rg   zfillxr   r   r   <lambda>       zget_hs300s.<locals>.<lambda>Nr   
read_excelr   HS300_CLASSIFY_URL_FTPr   r   r)   FOR_CLASSIFY_W_COLSrF   mapr   r   rg   wtr   r   r   r   
get_hs300s      r   c               
   C   r   )
u   
    获取上证50成份股
    Return
    --------
    DataFrame
        date :日期
        code :股票代码
        name :股票名称
    r	   r   sz50b)r   r   r   )
parse_colsr   c                 S   r   r   r   r   r   r   r   r     r   zget_sz50s.<locals>.<lambda>N)r   r   r   SZ_CLASSIFY_URL_FTPr   r   r)   FOR_CLASSIFY_B_COLSrF   r   r   r   rg   )r   r   r   r   r   	get_sz50s   s   
r   c               
   C   r   )
u   
    获取中证500成份股
    Return
    --------
    DataFrame
        date :日期
        code :股票代码
        name :股票名称
        weight : 权重
    r	   r   zz500wtr   r   r   c                 S   r   r   r   r   r   r   r   r      r   zget_zz500s.<locals>.<lambda>Nr   r   r   r   r   
get_zz500s  r   r   c               
   C      zSt jt jd t jd f } ttjt jd t jd t jd tdt f | tj	d}|
 }t jr6|dn|}|dd	 }t|}tj|d
 tjd}tj|_|W S  tyl } ztt| W Y d}~dS d}~ww )u   
    获取终止上市股票列表
    Return
    --------
    DataFrame
        code :股票代码
        name :股票名称
        oDate:上市日期
        tDate:终止上市日期 
    r	   ssesseqssecqr   r7   cookier8      resultrE   N)r   SSEQ_CQ_REF_URLr   r   r   rvTERMINATED_URLr)   rH   MAR_SH_COOKIESTRrI   rJ   rK   rL   rM   r   rO   TERMINATED_T_COLSTERMINATED_COLSrF   r   r   rg   r7   rQ   linesr   r   r   r   r   get_terminated&  &   
r   c               
   C   r   )u   
    获取暂停上市股票列表
    Return
    --------
    DataFrame
        code :股票代码
        name :股票名称
        oDate:上市日期
        tDate:终止上市日期 
    r	   r   r   r   r   r   r8   r   r   r   rE   N)r   r   r   r   r   r   SUSPENDED_URLr)   rH   r   rI   rJ   rK   rL   rM   r   rO   r   r   rF   r   r   rg   r   r   r   r   get_suspendedB  r   r      c                 C   s2   ddl m} d| d  }d|  d }t|||S )Nr   )randintrr   r"   )randomr   rg   )nr   startendr   r   r   rH   _  s   rH   )r   )r4   )r=   rn   )r   )&__doc__pandasr   tushare.stockr   r   r   r   rL   r|   rw   tushare.stock.fundamentalstockfundamentalr^   tushare.util.netbaser   urllib.requestr   r   ImportErrorurllib2r   r   r3   rW   rb   rh   rj   rm   r+   r'   r   r   r   r   r   rH   r   r   r   r   <module>   s<   
#

"