U
    l7Yfÿ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   ú/home/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 r   )Ú_Onedata__format_code©Úx©r
   r   r   Ú<lambda>d   ó    zOnedata.hq.<locals>.<lambda>)ÚakÚstock_zh_a_spot_emÚcolumnsÚsort_valuesÚmapr   r   r-   r   r   \   s    z
Onedata.hqc                 C   s   t  ¡ S r   )r0   r1   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   æ—¥æœŸõ   å¼€ç›˜õ   æ”¶ç›˜õ   æœ€é«˜õ   æœ€ä½Žõ	   æˆäº¤é‡Ú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)r0   Zstock_zh_a_histr2   ÚpdÚto_datetimeÚ	set_indexr4   ÚroundÚresampleÚsumÚfirstÚlastÚmaxÚminÚconcatÚdropna)r
   r   r    r   ZmvolZmopenZmcloseZmhighZmlowZdf_mZwvolZwopenZwcloseZwhighZ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	,{(.+?)}]ú]Zsz399001Zsz399006Zsh000001Údatar6   r@   rA   rB   rC   rD   rE   ©r2   r   TrF   c                 S   s   | d S rH   r   r+   r   r   r   r.   ¤   r/   z%Onedata.__web_K_DWM.<locals>.<lambda>rI   )ÚlowerÚ_Onedata__gethtmlÚreÚsubÚjsonÚloadsÚnpÚarrayrM   Ú	DataFrameÚapplyÚ
to_numericrP   ÚastypeÚintrN   rO   r4   )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 )NrY   r   r   Úm1r   Úm5r   Úm30z5http://ifzq.gtimg.cn/appstock/app/kline/mkline?param=r]   z$,,320&_var=m1_today&r=0.260880015116z	,{}(.+?)]r^   é	   r_   r@   rA   rB   rC   rD   rE   r`   r   TrF   c                 S   s   | d S rH   r   r+   r   r   r   r.   ¾   r/   z%Onedata.__web_K_OFT.<locals>.<lambda>rI   )ra   rb   rc   rd   re   rf   rg   rh   rM   ri   rj   rk   rP   rl   rm   rN   rO   r4   Ú_Onedata__wash_K_div)r
   r   r    ro   rp   rq   rr   rs   rt   rn   ru   r   r   r   r   Z__web_K_OFT©   s4       


ÿÿzOnedata.__web_K_OFTc                 C   sÔ   |   |¡}| ¡ D ]¼\}}|tjdd }||jd k r< qÐ|jjD ]ˆ}|dkrD|dkrD|jd |…|f  |jd 8  < |jd |…|f  |j	|j
d  7  < |jd |…|f  d|jd  |j
d    < qDq|S )Nr   )Úminutesr   ÚvolumeÚamounté
   )Ú_Onedata__get_divÚiterrowsÚdatetimeÚ	timedeltaÚindexr2   ÚvaluesÚlocZbonusÚpriceZrationedÚpresent)r
   Úkdatar   ÚdivpdÚkeyr$   r@   Úfieldr   r   r   Z__wash_K_divÅ   s    
  &2zOnedata.__wash_K_divc                 C   sF   t  d¡}||d |k }t  |d ¡|d< | d¡}|jdd}|S )Nz./csv/divdata.csvÚcoder@   F)r(   )rM   Úread_csvrN   rO   Ú
sort_index)r
   r   r‰   r   r   r   Z	__get_divÖ   s    

zOnedata.__get_divc                 C   sŒ   d}|dk rFzt j|ddj}|W S  t jjk
rB   |d7 }Y qX q|dkrdt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~   rI   )Útimeoutr   u	   å°è¯•è¿‡u   æ¬¡åŽï¼Œä¾ç„¶æ²¡æœ‰é€šè¿‡u   å¾—åˆ°æ•°æ®u
    æ¬¡é€šè¿‡u    æ²¡æœ‰å¾—åˆ°æ•°æ®N)ÚrequestsÚgetÚtextÚ
exceptionsZRequestExceptionÚprint)r
   rq   Ú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)r7   r8   r9   r    r:   iÀþÿÿu   æ—¶é—´r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   c                 S   s   | d S rH   r   r+   r   r   r   r.   û   r/   z!Onedata.__K_OFT.<locals>.<lambda>rI   TrF   )r0   Zstock_zh_a_hist_min_emr2   r4   rP   rM   rN   rO   )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 )Nry   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   r5   r   r   r   rz   r   rb   r   r*   r   r   r   r   r      s   

#!	r   )Ú__doc__Zaksharer0   ÚpandasrM   Únumpyrg   r   rc   re   r   r   r   r   r   r   Ú<module>   s     z