o
    iS                     @   sj  d Z ddlm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ZddlmZ ddlZddlZe	jZeedd d	ksKeedd dkrRdd
lmZ ndd
lmZ ddlmZ ddlmZ z
ddlmZm Z  W n e!y   ddl"mZm Z  Y nw 			dUddZ#dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)dd  Z*		dVd!d"Z+	dWd#d$Z,d%d& Z-dWd'd(Z.d)d* Z/dXd+d,Z0d-d. Z1dVd/d0Z2		1	1	dYd2d3Z3	1	1	dZd4d5Z4	1	1	1	1	d[d6d7Z5dVd8d9Z6d\d:d;Z7d\d<d=Z8	>	d]d?d@Z9dAdB Z:d^dCdDZ;d^dEdFZ<dGdH Z=dIdJ Z>dKdL Z?d_dMdNZ@d_dOdPZAd`dRdSZBeCdTkr3e. ZDeEeD dS dS )auo   
投资参考数据接口 
Created on 2015/03/21
@author: Jimmy Liu
@group : waditu
@contact: jimmysoa@sina.cn
    )division)cons)ref_varsN)etree.      )StringIO)dateu)Client)urlopenRequest     MbP?c                 C   s  |dkr)t   t| d||\}}tdt|D ]}|jt| |||dd}q|S |dkr;t| d||\}}||S t|trt   |d dkrP|d d n|d }t| d||\}}t|t|k rg|}tdt|D ]}|jt| |||dd}qn||S tt j	 dS )uH  
    获取分配预案数据
    Parameters
    --------
    year:年份
    top:取最新n条数据，默认取最近公布的25条
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
      pause : int, 默认 0
                重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
    
    returns
    -------
    DataFrame
    code:股票代码
    name:股票名称
    year:分配年份
    report_date:公布日期
    divi:分红金额（每10股）
    shares:转增和送股数（每10股）
    allr   r   Tignore_indexr   N)
ct_write_head_dist_cotentrangeintappendhead
isinstanceprintTOP_PARAS_MSG)yeartopretry_countpausedfpagesidxallPages r&   J/opt/alphahud/venv/lib/python3.10/site-packages/tushare/stock/reference.pyprofit_data    s6   

 
r(   c                 C   s   t jrtdtj}|| }t|dk rdS t|d S t| t	rJt	dd}t	dd}td||f tj}|| }t|dk rDdS t|d S dS )Nu   分红(.*?)元r   r   u   分红utf-8u   元	%s(.*?)%s
r   PY3recompileUNICODEfindalllenfloatr   unicode)xregress1s2r&   r&   r'   	_fun_diviQ   s   




r9   c                 C   s"  t jr;tdtj}tdtj}|| }|| }t|dk r#dnt|d }t|dk r1dnt|d }|| S t| t	rt	dd}t	dd}t	dd}td	||f tj}td	||f tj}|| }|| }t|dk rwdnt|d }t|dk rdnt|d }|| S dS )
Nu   转增(.*?)股u   送股(.*?)股r   r   u   转增r)   u   送股u   股r*   r+   )r4   reg1reg2res1res2r7   r8   s3r&   r&   r'   	_fun_intoa   s(   







r?   c                 C   s  t |D ]}t| z|dkrt  tjtj	tj
d tjd tjd | |f }|d}tjr;dd |D }ndd |D }d	|}tj|dgd
d }|j|jd dd}tj|_|d t|d< |d t|d< |jddd}|d t|d< |d dd |d< g }	|dkr|d}
t|
dkr|
t|
d  }|d}	W n ty } z
t| W Y d }~qd }~ww |dkr|t|	dkr|	d f  S df  S |  S ttj)Nr   http163163dpz //div[@class="fn_rp_list"]/tablec                 S      g | ]
}t |d qS r)   r   tostringdecode.0noder&   r&   r'   
<listcomp>       z _dist_cotent.<locals>.<listcomp>c                 S      g | ]}t |qS r&   r   rF   rH   r&   r&   r'   rK           skiprowsr   axisplandivisharescodec                 S      t | dS N   strzfillr4   r&   r&   r'   <lambda>       z_dist_cotent.<locals>.<lambda>z//div[@class="mod_pages"]/a   ztext())r   timesleepr   _write_consolelxmlhtmlparserv
DP_163_URLP_TYPEDOMAINSPAGESxpathr,   joinpd	read_htmldropcolumnsDP_163_COLSmapr9   r?   astypeobjectr1   	Exceptionr   IOErrorNETWORK_URL_ERROR_MSG)r   pageNor    r!   _rg   r6   sarrr"   r#   pageasrer&   r&   r'   r   z   sH   




&
r   c                  C   sN   t   d} tdt | }|jdgdd}t j|_|d dd |d< |S )uN  
                        获取分送送股数据
            -------
            Return:DataFrame
                code:代码    
                name:证券简称    
                year:分配年度    
                bshares:送股  
                incshares:转增股
                totals:送转总数 
                cash:派现   
                plandate:预案公布日    
                regdate:股权登记日    
                exdate:除权除息日    
                eventproc:事件进程 ,预案或实施
                anndate:公告日期
                
    zacfidata.aspx?sortfd=&sortway=&curpage=1&fr=content&ndk=A0A1934A1939A1957A1966A1983&xztj=&mystock=r   r   rS   rX   c                 S   rY   rZ   r\   r_   r&   r&   r'   r`      ra   zprofit_divis.<locals>.<lambda>)	r   r   _profit_divisrp   	DataFramerr   PROFIT_DIVISrs   ru   )pr"   r&   r&   r'   profit_divis   s   r   c                 C   s   t   tjdt jd |f }|d}t jr!dd |D }ndd |D }d|}|	dd	}d
| }t
j|dgdd }|j|dd}|dd }|dd dd }| t|k ritt|||S |S )Nz%sdata.cfi.cn/%sr@   z//table[@class="table_data"]/trc                 S   rC   rD   rE   rH   r&   r&   r'   rK      rL   z!_profit_divis.<locals>.<listcomp>c                 S   rM   r&   rN   rH   r&   r&   r'   rK      rO   rP   --0<table>%s</table>r   rQ   Tr   z+//div[@id="content"]/div[2]/a[last()]/@href&rb   =r   )r   re   rf   rg   rh   rk   rn   r,   ro   replacerp   rq   r   splitr   r   )r{   dataArrnextPagerg   r6   r}   r"   npr&   r&   r'   r      s    

r   c                 C   sX   t | |du r*t   t| |dt }tj|t jd}|d dd |d< |S dS )u  
        获取业绩预告数据
    Parameters
    --------
    year:int 年度 e.g:2014
    quarter:int 季度 :1、2、3、4，只能输入这4个季度
       说明：由于是从网站获取的数据，需要一页页抓取，速度取决于您当前网络速度
       
    Return
    --------
    DataFrame
        code,代码
        name,名称
        type,业绩变动类型【预增、预亏等】
        report_date,发布日期
        pre_eps,上年同期每股收益
        range,业绩变动范围
        
    Tr   rs   rX   c                 S   rY   rZ   r\   r_   r&   r&   r'   r`      ra   zforecast_data.<locals>.<lambda>N)r   _check_inputr   _get_forecast_datarp   r   FORECAST_COLSru   )r   quarterdatar"   r&   r&   r'   forecast_data   s   r   c              
   C   sB  t   ztjdd}tjjt jt jd t j	d t j
d | ||t jd f |d}|d}t jr9d	d
 |D }ndd
 |D }d|}|dd}d| }t|d }|jg ddd}t j|_|j|dd}|d}	t|	dkrtd|	d d }t| |||W S |W S  ty }
 zt|
 W Y d }
~
d S d }
~
ww )NGBK)encodingr@   vsffdr   )parserz//table[@class="list_table"]/trc                 S   rC   rD   rE   rH   r&   r&   r'   rK      rL   z&_get_forecast_data.<locals>.<listcomp>c                 S   rM   r&   rN   rH   r&   r&   r'   rK      rO   rP   r   r   r   r   )         rS   Tr   z(//div[@class="pages"]/a[last()]/@onclickz\d+)r   re   r   
HTMLParserrf   rg   rh   FORECAST_URLrk   rl   rm   PAGE_NUMrn   r,   ro   r   rp   rq   rr   r   rs   r   r1   r-   r0   r   rx   r   )r   r   r{   r   gparserrg   r6   r}   r"   r   r   r&   r&   r'   r      s:   


r   c                 C   s  | du rt  n| } |du rt  n|}t|D ]}t| z)ttjt	j
d t	jd t	jd | |f }t|dd }t	jrE|dn|}W n ty^ } z
t| W Y d}~qd}~ww |dt|d  }g }	|d	D ]}
|	d
d |
dD  qpt|	}|g d }dD ]}|| t||< q|d d |d< |d d |d< |d t	j|d< |d t	j|d< tj|_|  S tt	j)u  
    获取限售股解禁数据
    Parameters
    --------
    year:年份,默认为当前年
    month:解禁月份，默认为当前月
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    code:股票代码
    name:名称
    date:解禁日期
    count:解禁数量（万股）
    ratio:占总盘比率
    Nr@   ememxsg
   timeoutr)   r   z","c                 S   s   g | ]}|qS r&   r&   )rI   r   r&   r&   r'   rK   0  s    zxsg_data.<locals>.<listcomp>,)r   r   r   r   r[   )r   r[   r   '  r[   d   ) duget_year	get_monthr   rc   rd   r   ri   XSG_URLr   rk   rl   rm   r   readr,   rG   rx   r   r1   r   r   rp   r   rv   r2   ru   FORMATXSG_COLSrs   ry   rz   )r   monthr    r!   r|   requestlinesr   dalistrowr"   colr&   r&   r'   xsg_data  s:   


r   c           	      C   s   t jt| \}}|dkr|t| d  }||  }n	||  ||  }}t  t||d||\}}td|D ]}|jt|||||dd}q6|S )u  
    获取基金持股数据
    Parameters
    --------
    year:年份e.g 2014
    quarter:季度（只能输入1，2，3，4这个四个数字）
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    code:股票代码
    name:名称
    date:报告日期
    nums:基金家数
    nlast:与上期相比（增加或减少了）
    count:基金持股数（万股）
    clast:与上期相比
    amount:基金持股市值
    ratio:占流通盘比率
    r   r   Tr   )ri   
QUARTS_DICr]   r   r   _holding_cotentr   r   )	r   r   r    r!   startendr"   r#   r$   r&   r&   r'   fund_holdings>  s   
r   c                 C   s  t |D ]}t| |dkrt  zttjtjd tj	d tj
d tj
d || |tdf }t|dd }tjrA|dn|}|d	d
}t|}|d }t|}	|	jg ddd}	dD ]}
|	|
 t|	|
< qb|	d d |	d< |	d d |	d< |	d d |	d< |	d d |	d< |	d tj|	d< |	d tj|	d< |	d tj|	d< |	d tj|	d< tj|	_|	g d }	W n ty } z
t| W Y d }~qd }~ww |dkr|	t|d f  S |	  S ttj )Nr   r@   rA   163fhr   r   r   r)   r   r   r   )CODEESYMBOLEXCHANGENAMERNSHANGQIGUSHUSHANGQISHIZHISHANGQISHULIANGr   rS   )GUSHUGUSHUBIJIAOSHIZHISCSTC27r   r   r   r   r   r   )	rX   namedatenumsnlastcountclastamountratio	pagecount)!r   rc   rd   r   re   r   ri   FUND_HOLDS_URLrk   rl   rm   _randomr   r   r,   rG   r   jsonloadsrp   r   rr   rv   r2   ru   r   FUND_HOLDS_COLSrs   rx   r   r   ry   rz   )r   r   r{   r    r!   r|   r   r   r   r"   r   r   r&   r&   r'   r   f  sL   




r   c                 C   s"   t  }t  t|d| |}|S )u  
    获取新股上市数据
    Parameters
    --------
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    code:股票代码
    xcode:申购代码
    name:名称
    ipo_date:上网发行日期
    issue_date:上市日期
    amount:发行数量(万股)
    markets:上网发行数量(万股)
    price:发行价格(元)
    pe:发行市盈率
    limit:个人申购上限(万股)
    funds：募集资金(亿元)
    ballot:网上中签率(%)
    r   )rp   r   r   r   
_newstocks)r    r!   r   r"   r&   r&   r'   
new_stocks  s   r   c                    s  t |D ]}t| t  zttjtjd tj	d tj
d |f }t|dd }|d}tjt|}|d}t|dkrI| W   S tjrTd	d
 |D }	ndd
 |D }	d|	}	|	dd}	d|	 }	tjt|	ddgdd   j fdd
dD dd tj _ d dd  d<  d dd  d< |d}tjrdntdd}
|
|v rdnd}| j dd} |d7 }|rt| |||} W |   S W |   S  t y } z
t!| W Y d }~qd }~ww d S )Nr@   r   newstockr   r   r   z//table[@id="NewStockTable"]/trr   c                 S   rC   rD   rE   rH   r&   r&   r'   rK     rL   z_newstocks.<locals>.<listcomp>c                 S   rM   r&   rN   rH   r&   r&   r'   rK     rO   rP   z<font color="red">*</font>r   r   rQ   c                    s   g | ]} j | qS r&   r   )rI   r$   r"   r&   r'   rK     rO   )            rS   rX   c                 S   rY   rZ   r\   r_   r&   r&   r'   r`     ra   z_newstocks.<locals>.<lambda>xcodec                 S   rY   rZ   r\   r_   r&   r&   r'   r`     ra   z-//table[@class="table2"]/tr[1]/td[1]/a/text()u	   下一页r)   TFr   )"r   rc   rd   r   re   r   ri   NEW_STOCKS_URLrk   rl   rm   r   r   rG   rf   rg   rh   r	   rn   r1   r,   ro   r   rp   rq   rr   NEW_STOCKS_COLSrs   ru   r3   r   r   rx   r   )r   r{   r    r!   r|   r   textrg   r6   r}   taghasNextexr&   r   r'   r     sN   






r   c                 C   s\   t  }| dkrtd||}|S tddD ]}t|||}|dur)|j|dd}q |S |S )u  
    获取可转债申购列表
    Parameters
    --------
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    bcode:债券代码
    bname:债券名称
    scode:股票代码
    sname:股票名称
    xcode:申购代码
    amount:发行总数(亿元)
    marketprice:最新市场价格
    convprice:转股价格
    firstdayprice:首日收盘价
    ipo_date:上网发行日期
    issue_date:上市日期
    ballot:中签率(%)
    return：打新收益率(%)
    perreturn:每中一股收益（万元）
    
    r   2   NTr   )rp   r   
_newcbondsr   r   )defaultr    r!   r   r~   r"   r&   r&   r'   
new_cbonds  s   
r   c           	      C   s\  t |D ]}t| | dkrt  ztjtj	tj
d tjd | f }|d}t|dkr5W  d S tjr@dd |D }ndd |D }d	|}d
| }tjt|dgd}t|dk rdW  d S |d }|j|jd |jd gdd}tj|_|d dd |d< |d dd |d< W |  S  ty } z
t| W Y d }~qd }~ww d S )Nr   r@   sstarz
//table/trr   c                 S   rC   rD   rE   rH   r&   r&   r'   rK     rL   z_newcbonds.<locals>.<listcomp>c                 S   rM   r&   rN   rH   r&   r&   r'   rK     rO   rP   r   rQ   r   r   rS   scodec                 S   rY   rZ   r\   r_   r&   r&   r'   r`     ra   z_newcbonds.<locals>.<lambda>r   c                 S   rY   rZ   r\   r_   r&   r&   r'   r`     ra   )r   rc   rd   r   re   rf   rg   rh   ri   NEW_CBONDS_URLrk   rl   rn   r1   r,   ro   rp   rq   r	   rr   rs   NEW_CBONDS_COLSru   rx   r   )	r{   r    r!   r|   rg   r6   r}   r"   r   r&   r&   r'   r      s<   


r   c                 C   s|   | du rt  n| } |du rt  n|}t | |dk rdS | dd|dd} }t }t  t	|| |||d}|S )u  
    获取沪市融资融券数据列表
    Parameters
    --------
    start:string
                  开始日期 format：YYYY-MM-DD 为空时取去年今日
    end:string
                  结束日期 format：YYYY-MM-DD 为空时取当前日期
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    opDate:信用交易日期
    rzye:本日融资余额(元)
    rzmre: 本日融资买入额(元)
    rqyl: 本日融券余量
    rqylje: 本日融券余量金额(元)
    rqmcl: 本日融券卖出量
    rzrqjyzl:本日融资融券余额(元)
    Nr   -rP   )r   r   r    r!   )
r   today_last_yeartodaydiff_dayr   rp   r   r   r   _sh_hz)r   r   r    r!   r   r"   r&   r&   r'   
sh_margins   s   r   rP   c                 C   s  t |D ]}t| t  ztj|||f }	|dkr!d}d}	n|d7 }|}|d }tjtjd tj	d tj
d td|||	t f }
tjtjd tj	d f }t|
|tjd	}| }tjre|d
n|}|dd }t|}t|d d}t|d dkr|d d n|d }tj|d tjd}|d dd |d< | j|dd} ||d k rt| |||||||d} W |   S W |   S  ty } z
t| W Y d }~qd }~ww ttj)NrP   r[   r   r   r@   sseqqmdsserefcookier)      pageHelp	pageCountr   r   resultr   opDatec                 S   &   d| dd | dd | dd f S Nz%s-%s-%sr   r   r[   r   r&   r_   r&   r&   r'   r`   d     & z_sh_hz.<locals>.<lambda>Tr   r   r   r{   	beginPageendPager    r!   ) r   rc   rd   r   re   ri   MAR_SH_HZ_TAIL_URLMAR_SH_HZ_URLrk   rl   rm   r   MAR_SH_HZ_REF_URLr   MAR_SH_COOKIESTRgvaluer,   rG   r   r   r   getrp   r   MAR_SH_HZ_COLSru   r   r   rx   r   ry   rz   )r   r   r   r{   r  r  r    r!   r|   tailurlr   cltr   r   datapager"   r   r&   r&   r'   r   F  sT   

$

r   c              	   C   s   | dkr| n|  dd} |dkr|n| dd}|dkr|n| dd}|dk|dk@ r.d} t }t  t|| |||||d}|S )u  
    获取沪市融资融券明细列表
    Parameters
    --------
    date:string
                明细数据日期 format：YYYY-MM-DD 默认为空''
    symbol：string
                标的代码，6位数字e.g.600848，默认为空  
    start:string
                  开始日期 format：YYYY-MM-DD 默认为空''
    end:string
                  结束日期 format：YYYY-MM-DD 默认为空''
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    opDate:信用交易日期
    stockCode:标的证券代码
    securityAbbr:标的证券简称
    rzye:本日融资余额(元)
    rzmre: 本日融资买入额(元)
    rzche:本日融资偿还额(元)
    rqyl: 本日融券余量
    rqmcl: 本日融券卖出量
    rqchl: 本日融券偿还量
    rP   r   )r   r   r   symbolr    r!   )r   rp   r   r   r   _sh_mx)r   r  r   r   r    r!   r   r"   r&   r&   r'   sh_margin_detailsq  s   !r  c
                 C   s  t |D ]}
t|	 t  zd|||f }|dkr d}d}n|d7 }|}|d }t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rd|dn|}|dd }t|}t|d d}t|d dkr|d d n|d }|dkr| W   S |dkrt|d d tj|d tjd}|d dd |d< | j|dd} ||d k rt| |||||||	d} W |   S W |   S  ty } z
t| W Y d }~qd }~ww ttj)Nz=&pageHelp.pageNo=%s&pageHelp.beginPage=%s&pageHelp.endPage=%srP   r[   r   r   r@   r   r   r   r   r)   r   r   r   r   r   r   totalr  r   r  c                 S   r  r  r&   r_   r&   r&   r'   r`     r  z_sh_mx.<locals>.<lambda>Tr   r  ) r   rc   rd   r   re   ri   r  rk   rl   r   MAR_SH_MX_URLrm   r   r  r  r,   rG   r   r   r   r  _write_tipsrp   r   MAR_SH_MX_COLSru   r   r  rx   r   ry   rz   )r   r   r   r   r  r{   r  r  r    r!   r|   r  r   r  r   r   r  r"   r   r&   r&   r'   r    s^   

$


r  c                 C   s   t  }| du r|du rt }t } | du s|du r$ttj dS z0t j	| |dd}t
|dkr<ttj W |S t  |D ]}|tt| ||}qBW |S    ttj Y dS )u  
    获取深市融资融券数据列表
    Parameters
    --------
    start:string
                  开始日期 format：YYYY-MM-DD 默认为上一周的今天
    end:string
                  结束日期 format：YYYY-MM-DD 默认为今日
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    opDate:信用交易日期(index)
    rzmre: 融资买入额(元)
    rzye:融资余额(元)
    rqmcl: 融券卖出量
    rqyl: 融券余量
    rqye: 融券余量(元)
    rzrqye:融资融券余额(元)
    NB)r   r   freqi  )rp   r   r   r   day_last_weekr   
_write_msgri   MAR_SZ_HZ_MSG2
date_ranger1   MAR_SZ_HZ_MSGr   r   _sz_hzr]   r   DATA_INPUT_ERROR_MSG)r   r   r    r!   r   r   r   r&   r&   r'   
sz_margins  s&   r$  c                 C   s   t |D ]a}t| t  z@ttjtjd tj	d tj
d | f }t|dd }t|dkr9t W   S tj|dgdd }tj|_| |d	< W |  S  tye } z
t| W Y d }~qd }~ww ttj)
Nr@   szseszsefcr   r      r   rQ   r  )r   rc   rd   r   re   r   ri   MAR_SZ_HZ_URLrk   rl   rm   r   r   r1   rp   r   rq   MAR_SZ_HZ_COLSrs   rx   r   ry   rz   r   r    r!   r|   r   r   r"   r   r&   r&   r'   r"    s&   



r"  c                 C   s   t |D ]h}t| zKttjtjd tjd tj	d | f }t
|dd }t|dkr5t W   S tj|dgdd }tj|_|d	 d
d |d	< | |d< W |  S  tyl } z
t| W Y d}~qd}~ww ttj)u  
    获取深市融资融券明细列表
    Parameters
    --------
    date:string
                明细数据日期 format：YYYY-MM-DD 默认为空''
    retry_count : int, 默认 3
                 如遇网络等问题重复执行的次数 
    pause : int, 默认 0
                重复请求数据过程中暂停的秒数，防止请求间隔时间太短出现的问题
    
    Return
    ------
    DataFrame
    opDate:信用交易日期
    stockCode:标的证券代码
    securityAbbr:标的证券简称
    rzmre: 融资买入额(元)
    rzye:融资余额(元)
    rqmcl: 融券卖出量
    rqyl: 融券余量
    rqye: 融券余量(元)
    rzrqye:融资融券余额(元)
    r@   r%  r&  r   r   r'  r   rQ   	stockCodec                 S   rY   rZ   r\   r_   r&   r&   r'   r`   4  ra   z#sz_margin_details.<locals>.<lambda>r  N)r   rc   rd   r   ri   MAR_SZ_MX_URLr   rk   rl   rm   r   r   r1   rp   r   rq   MAR_SZ_MX_COLSrs   ru   rx   r   ry   rz   r*  r&   r&   r'   sz_margin_details  s&   



r.  r   c                 C   s\  | d u rd S t | } |dkrdnd}d}|d u|d u@ r#t||}t|D ] }t| zttj	t j
d t jd ||  f }t|dd }	t jrS|	dn|	}	td	}
|
|	d
 }	td|	 }g }t }|D ]~}d| v r||d nd }d| v r|d nd }d| v r|d nd }d| v r|d nd }||||g}|| d| v r|d nd }g }|D ]!}|d }|d }|d }|d }|d }|||||||g qtj|tjd}|j|dd}qptj|tjd}|dkr
||j|k }||j|k }W n ty" } z
t| W Y d }~q'd }~ww ||f  S tt j )N1LTrP   r@   gwr   r   utf8z= \'\[(.*?)\]\';r   z[%s]jzrqljcyljbhljzbsdgdListgbxzgdmccgszzgszjqkr   Tr   )!r   _code_to_symbolr   
get_q_dater   rc   rd   r   ri   TOP10_HOLDERS_URLrk   rl   upperr   r   r,   rG   r-   r.   r0   r   r   rp   r   keysr   TOP10_PER_COLSTOP10_SUMM_COLSr   rx   r   ry   rz   )rX   r   r   gdtyper    r!   qdater|   r   r   r5   jsssummr   r   qtholdchangepropsarowlsdlistinrow	sharetyper   h_prostatusddatar"   r   r&   r&   r'   top10_holders=  sb   





rT  c                  C   s   t tjtjd tjd f tjtjd tjd tjd f d} |  }tj	r,|
dn|}t|}t|}|d dd |d< |d	tj}|tj }tj|_|jd
dd}|S )u"  
    获取沪深港通资金流向
    return:
    DataFrame,单位: 百万元
    --------------
    date: 交易日期
    ggt_ss: 港股通(沪)
    ggt_sz: 港股通(深)
    hgt: 沪港通
    sgt: 深港通
    north_money: 北向资金流入
    south_money: 南向资金流入
    r@   r   index)r   r)   DateTimec                 S   s   | dd S )Nr   r   r&   r_   r&   r&   r'   r`     s    z moneyflow_hsgt.<locals>.<lambda>r   r   F)	ascending)r   ri   	HSGT_DATAr   rk   rl   HSGT_REFrm   r  r,   rG   r   r   rp   r   ru   r   r   NaN	HSGT_TEMP	HSGT_COLSrs   sort_values)r  contentjsr"   r&   r&   r'   moneyflow_hsgtp  s    


r`  c                 C   J   t | dd} tjtjtjd tjd | dd d| f dtid	}|S )
u  
         沪深融券融券明细
    Parameters
    ---------------
    date:string
            日期 format：YYYY-MM-DD 或者 YYYYMMDD
            
    return DataFrame
    --------------
    code: 证券代码
    name: 证券名称
    buy: 今日买入额
    buy_total:融资余额
    sell: 今日卖出量（股）
    sell_total: 融券余量（股）
    sell_amount: 融券余额
    total: 融资融券余额(元)
    buy_repay: 本日融资偿还额(元)
    sell_repay: 本日融券偿还量
    
    r   rP   r@   ossr   r[   mxrX   dtype	r]   r   rp   read_csvr   MG_URLrk   rl   rw   r   r"   r&   r&   r'   margin_detail  s   rj  c                 C   ra  )
u(  
         沪深融券融券标的
    Parameters
    ---------------
    date:string
            日期 format：YYYY-MM-DD 或者 YYYYMMDD
            
    return DataFrame
    --------------
    code: 证券代码
    name: 证券名称
    long: 融资标的
    short: 融券标的
    
    r   rP   r@   rb  r   r[   bdrX   rd  rf  ri  r&   r&   r'   margin_target  s   rl  c                 C   ra  )
u  
         融资融券可充抵保证金证券
    Parameters
    ---------------
    date:string
            日期 format：YYYY-MM-DD 或者 YYYYMMDD
            
    return DataFrame
    --------------
    code: 证券代码
    name: 证券名称
    
    r   rP   r@   rb  r   r[   cdrX   rd  rf  ri  r&   r&   r'   margin_offset  s   rn  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: 证券名称
    deals: 质押次数
    unrest_pledged: 无限售股质押数量(万)
    rest_pledged: 限售股质押数量(万)
    totals: 总股本
    p_ratio:质押比例（%）
    r@   rb  gpzyrX   rd  )rp   rg  r   GPZY_URLrk   rl   rw   r   r&   r&   r'   stock_pledged  s   
rq  c                  C   sh   t jtjtjd tjd df tttdd} | d dd | d< t	| d	 d
ktj
| d	 | d	< | S )u  
    股票质押数据
    
    return DataFrame
    --------------
    code: 证券代码
    name: 证券名称
    ann_date: 公告日期
    pledgor:出质人
    pledgee:质权人
    volume:质押数量
    from_date:质押日期
    end_date: 解除日期
    r@   rb  gpzy_detail)rX   ann_dateend_daterd  rX   c                 S   rY   rZ   r\   r_   r&   r&   r'   r`     ra   z pledged_detail.<locals>.<lambda>rt  r   )rp   rg  r   
GPZY_D_URLrk   rl   rw   ru   r   whererZ  r   r&   r&   r'   pledged_detail  s   

 rw  c                 C   sJ   t | dd} tjtjtjd tjd | dd || f dtid}|S )	u  
         融资融券充抵保证金折算率
    Parameters
    ---------------
    date:string
            日期 format：YYYY-MM-DD 或者 YYYYMMDD
    broker:
    gtja:国泰君安
    yhzq:银河证券
    gfzq：广发证券
    zszq：招商证券
    gxzq：国信证券
    swhy：申万宏源
    zxjt：中信建投
    zxzq：中信证券
    
    return DataFrame
    --------------
    code: 证券代码
    name: 证券名称
    ratio:比率
    broker:券商代码
    r   rP   r@   rb  r   r[   rX   rd  )	r]   r   rp   rg  r   
MG_ZSL_URLrk   rl   rw   )r   brokerr"   r&   r&   r'   
margin_zsl  s   rz  c                 C   s   t jtjtjd tjd df dtid}| dkr$| dur$||j| k }|dkr3|dur3||j| k }|d |d	  |d	  d
 |d< |d tj	|d< |d 
t|d< |S )u  
         股票增发
    Parameters
    ---------------
    start_date:string
    end_date:string
            日期 format：YYYY-MM-DD
            
    return DataFrame
    --------------
    code: 证券代码
    name: 证券名称
    type:类型，定向增发/公开增发
    count:数量
    price:增发价格
    close:最近收盘价
    issue_date:增发日期
    list_date:上市日期
    locked_year:锁定年数
    prem:截止当前溢价(%)
    r@   rb  zfrX   rd  rP   Nclosepricer   prem)rp   rg  r   ZFrk   rl   rw   
issue_dateru   r   rv   r2   )
start_datert  r"   r&   r&   r'   stock_issuance   s   
 r  r   c                 C   s2   ddl m} d| d  }d|  d }t|||S )Nr   )randintr   r   )randomr  r]   )nr  r   r   r&   r&   r'   r   C  s   r   __main__)r   r   r   r   )NNr   r   )r   r   )r   r   r   )NNrP   rP   rP   r   r   )rP   rP   rP   rP   r   r   )	rP   rP   rP   rP   rP   rP   rP   r   r   )rP   r   r   )NNNr   r   r   )rP   )rP   rP   )r   )F__doc__
__future__r   tushare.stockr   r   r   ri   pandasrp   numpyr   rc   	lxml.htmlrf   r   r-   r   __version__vr   r   ior	   pandas.compattushare.utilr
   r   tushare.util.netbaser   urllib.requestr   r   ImportErrorurllib2r(   r9   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r$  r"  r.  rT  r`  rj  rl  rn  rq  rw  rz  r  r   __name__r"   r   r&   r&   r&   r'   <module>   s   ,
1&
4
(
( 
&,
 &
+
/

/
.
,
3




#
