B
    'Ècÿ3  ã               @   sN   d Z ddlZddlZddlZddlZddlZddl	Z	ddl
Z
G dd„ dƒZdS )zonedata.k(stockcode, period)é    Nc               @   s€   e Zd Z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„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd S )#ÚOnedatar   c             C   s   || _ ddddddg| _d S )NÚ1Ú5Ú30ÚdailyÚweeklyÚmonthly)ÚkdatasourceZ
periodlist)Úselfr	   © r   ú&/Users/apple/one/k/oneclass/onedata.pyÚ__init__   s    zOnedata.__init__c               C   s   d S )Nr   r   r   r   r   Ústatus   s    zOnedata.statusc             C   s"   | j dkr|  ¡ }|ddg }|S )Nr   Ú	stockcodeÚ	stockname)r	   Úhq)r
   Údfr   r   r   Ú	stocklist   s    
zOnedata.stocklistú	300027.SZr   c             C   sF  dddg}dddg}| j dkr |d d… }||kr>|  ||¡S ||krR|  ||¡S |d	kr |  |d¡\}}}|  |d¡}|  |d¡}	|  |d¡}
||	|
|||fS | j d
kr6||krÀ|  ||¡S ||krÔ|  ||¡S |d	kr6|  |d¡}|  |d¡}|  |d¡}|  |d¡}|  |d¡}	|  |d¡}
||	|
|||fS | jdkrBd S )Nr   r   r   r   r   r   r   é   Úallé   é   )r	   Ú_Onedata__K_DWMÚ_Onedata__K_OFTÚ_Onedata__web_K_DWMÚ_Onedata__web_K_OFTÚsource)r
   r   ÚperiodZ	periodDWMZ	periodOFTZdfdZdfwZdfmZdfoZdffÚdftr   r   r   Úk9   s:    



z	Onedata.kc                sZ   t  ¡ }|dddddg }dddd	d
g|_|jddddd}|d  ‡ fdd„¡|d< |S )Nu   ä»£ç u   åç§°u	   æœ€æ–°ä»·u	   æ¶¨è·Œé¢u	   æ¶¨è·Œå¹…r   r   ÚcÚvalÚpctr   T)ÚaxisÚbyÚ	ascendingÚignore_indexc                s
   ˆ   | ¡S )N)Ú_Onedata__format_code)Úx)r
   r   r   Ú<lambda>d   ó    zOnedata.hq.<locals>.<lambda>)ÚakÚstock_zh_a_spot_emÚcolumnsÚsort_valuesÚmap)r
   r   r   )r
   r   r   \   s    z
Onedata.hqc             C   s   t  ¡ S )N)r,   r-   )r
   r   r   r   Úbsinfog   s    zOnedata.bsinfoc             C   sÐ  t j||dddd}|ddddd	d
g }ddddddg|_t |d ¡|d< |jdgdd |d  dd„ ¡ d¡|d< |dkrÈ|d  d¡ 	¡  d¡}|d  d¡ 
¡  d¡}|d  d¡ ¡  d¡}|d  d¡ ¡  d¡}|d  d¡ ¡  d¡}tj|||||gdd}	|	jddd}	|d  d¡ 	¡  d¡}
|d  d¡ 
¡  d¡}|d  d¡ ¡  d¡}|d  d¡ ¡  d¡}|d  d¡ ¡  d¡}tj|||||
gdd}|jddd}|||	fS |S d S )NZ20060101Z20230118Úqfq)Úsymbolr   Ú
start_dateÚend_dateÚadjustu   æ—¥æœŸu   å¼€ç›˜u   æ”¶ç›˜u   æœ€é«˜u   æœ€ä½Žu	   æˆäº¤é‡ÚdateÚopenÚcloseÚhighÚlowÚvolT)Úinplacec             S   s   | d S )Niè  r   )r)   r   r   r   r*   s   r+   z!Onedata.__K_DWM.<locals>.<lambda>é   r   ÚMr   r   )r$   r   Úany)r$   ÚhowzW-FRI)r,   Zstock_zh_a_histr.   ÚpdÚto_datetimeÚ	set_indexr0   ÚroundÚresampleÚsumÚfirstÚlastÚmaxÚminÚconcatÚdropna)r
   r   r   r   ÚmvolÚmopenÚmcloseÚmhighÚmlowZdf_mÚwvolÚwopenÚwcloseÚwhighÚwlowZdf_wr   r   r   Z__K_DWMk   s.    

zOnedata.__K_DWMc             C   s`  d}|dd …   ¡ |d d…  }|dkr,d}|dkr8d}|dkrDd	}d
|› d|› d}|  |¡}t dd|¡}t |¡}	|dks¦|dks¦|dks¦|	d | d|  }n|	d | | }t |¡}
tj	|
ddddddgd}|ddddg  
tj¡ d¡|ddddg< |d  
tj¡ t¡|d< t |d ¡|d< |jdgdd |d  dd„ ¡ d ¡|d< |S )!Nr   éþÿÿÿr   r   Údayr   Úweekr   Úmonthz8http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?param=ú,z,1990-12-01,,2000,qfqz	,{(.+?)}]ú]Úsz399001Úsz399006Úsh000001Údatar2   r7   r8   r9   r:   r;   r<   )r.   r   T)r=   c             S   s   | d S )Niè  r   )r)   r   r   r   r*   ¤   r+   z%Onedata.__web_K_DWM.<locals>.<lambda>r>   )ÚlowerÚ_Onedata__gethtmlÚreÚsubÚjsonÚloadsÚnpÚarrayrB   Ú	DataFrameÚapplyÚ
to_numericrE   ÚastypeÚintrC   rD   r0   )r
   r   r   Úmy_kÚurlstockcodeÚ	tmpperiodÚurlÚoriginaltxtÚgoodtxtÚmy_jsonÚarraykr   r   r   r   Z__web_K_DWMŒ   s.       


*zOnedata.__web_K_DWMc             C   sF  |dd …   ¡ |d d…  }|dkr(d}|dkr4d}|dkr@d}d	|› d
|› d}|  |¡}t dd|¡}|dd … }t |¡}|d | | }	t |	¡}
tj	|
ddddddgd}|ddddg  
tj¡ d¡|ddddg< |d  
tj¡ t¡|d< t |d ¡|d< |jdgdd |d  dd„ ¡ d¡|d< |  ||¡ |S )NrX   r   r   Úm1r   Úm5r   Úm30z5http://ifzq.gtimg.cn/appstock/app/kline/mkline?param=r\   z$,,320&_var=m1_today&r=0.260880015116z	,{}(.+?)]r]   é	   ra   r7   r8   r9   r:   r;   r<   )r.   r   T)r=   c             S   s   | d S )Niè  r   )r)   r   r   r   r*   ¾   r+   z%Onedata.__web_K_OFT.<locals>.<lambda>r>   )rb   rc   rd   re   rf   rg   rh   ri   rB   rj   rk   rl   rE   rm   rn   rC   rD   r0   Ú_Onedata__wash_K_div)r
   r   r   rp   rq   rr   rs   rt   ru   ro   rv   r   r   r   r   Z__web_K_OFT©   s.       


zOnedata.__web_K_OFTc             C   sÚ   |   |¡}xÊ| ¡ D ]¾\}}|tjdd }||jd k r<P x”|jjD ]ˆ}|dkrF|dkrF|jd |…|f  |jd 8  < |jd |…|f  |j	|j
d  7  < |jd |…|f  d|jd  |j
d    < qFW qW |S )Nr   )Úminutesr   ÚvolumeÚamounté
   )Ú_Onedata__get_divÚiterrowsÚdatetimeÚ	timedeltaÚindexr.   ÚvaluesÚlocÚbonusÚpriceÚrationedÚpresent)r
   Úkdatar   ÚdivpdÚkeyr"   r7   Úfieldr   r   r   Z__wash_K_divÅ   s    
  &6zOnedata.__wash_K_divc             C   sF   t  d¡}||d |k }t  |d ¡|d< | d¡}|jdd}|S )Nz./csv/divdata.csvÚcoder7   F)r&   )rB   Úread_csvrC   rD   Ú
sort_index)r
   r   rŒ   r   r   r   Z	__get_divÖ   s    

zOnedata.__get_divc             C   sŽ   d}xB|dk rFyt j|ddj}|S  t jjk
rB   |d7 }Y qX qW |dkrftd|› d|› dƒ |dkrŠ|dkrŠt|› d	|› d
ƒ dS )uà    
        æœ€å¤šè¯»å–10æ¬¡ï¼Œæ¯æ¬¡ç­‰å¾…3ç§’é’Ÿ
        å¦‚æžœè¶…è¿‡3æ¬¡æ²¡æœ‰æŠ“åˆ°Kçº¿æ•°æ®ï¼Œå°±æŠŠ i+url è¾“å‡ºåˆ°htmlerror.txtæ–‡ä»¶ä¸­
        æ¯æ¬¡ç¨‹åºå¼€å§‹è¿è¡Œçš„æ—¶å€™ï¼Œæ¸…ç©º htmlerror.txt æ–‡ä»¶
        r   r   r>   )Útimeoutr   u	   å°è¯•è¿‡u   æ¬¡åŽï¼Œä¾ç„¶æ²¡æœ‰é€šè¿‡u   å¾—åˆ°æ•°æ®u
    æ¬¡é€šè¿‡u    æ²¡æœ‰å¾—åˆ°æ•°æ®N)ÚrequestsÚgetÚtextÚ
exceptionsÚRequestExceptionÚprint)r
   rr   ÚiÚhtmlr   r   r   Z	__gethtmlß   s    
zOnedata.__gethtmlc             C   s   d}d}t j|dd|dd}|dd … }|dddd	d
dg }ddddddg|_|d  dd„ ¡ d¡|d< t |d ¡|d< |jdgdd |S )NÚ z2023-01-01 09:30:00z2024-01-16 15:00:00)r3   r4   r5   r   r6   iÀþÿÿu   æ—¶é—´u   å¼€ç›˜u   æ”¶ç›˜u   æœ€é«˜u   æœ€ä½Žu	   æˆäº¤é‡r7   r8   r9   r:   r;   r<   c             S   s   | d S )Niè  r   )r)   r   r   r   r*   û   r+   z!Onedata.__K_OFT.<locals>.<lambda>r>   T)r=   )r,   Zstock_zh_a_hist_min_emr.   r0   rE   rB   rC   rD   )r
   r   r   Ú
start_timeÚend_timer   r   r   r   Z__K_OFTò   s    zOnedata.__K_OFTc             C   s|   t |ƒdkr|S |dd… dkr(|d S |dd… dksH|dd… dkrP|d S |dd… d	ksp|dd… d
krx|d S d S )Nrz   r   r   Ú6z.SHÚ8Ú4z.BJÚ0Ú3z.SZ)Úlen)r
   Úscoder   r   r   Z__format_code  s      zOnedata.__format_codeN)r   )r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r   r1   r   r   r   r{   r€   rc   r   r(   r   r   r   r   r      s   

#!	r   )Ú__doc__Zaksharer,   ÚpandasrB   Únumpyrh   r“   rd   rf   r‚   r   r   r   r   r   Ú<module>   s      