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mZm	Z	 ddl
mZmZmZ dd	lmZ d
dlmZmZ d
dlmZ edZG dd dejZdd ZdS )u9   
# 作 者：84028
# 时 间：2024/2/28 20:51
# tsdpsdk
    N)ThreadPoolExecutor)Union   )TsTick	TsTickIdx   )convert_tick_indexconvert_tick_stockget_tgw_type_and_code)login   )	get_token	set_token)verify_token   c                       sH   e Zd Zdd fddZdd Zdd	 Zd
d Zdd Zdd Z  Z	S )TgwSubscribe!  returnNc                    s,   t    i | _|| _|| _|| _|| _d S N)super__init__callback_mapusernamepasswordhostport)selfr   r   r   r   	__class__ R/opt/alphahud/venv/lib/python3.10/site-packages/tushare/subs/tgw_subs/subscribe.pyr      s   

zTgwSubscribe.__init__c                 C   sn   | d}d }|tjjkrt|}n
|tjjkrt|}|r1| j |j}|r3t	|r5|| d S d S d S d S )Nvariety_category)
gettgwVarietyCategorykIndexr   kStockr	   r   ts_codecallable)r   data_typeitemfuncr   r   r    process_data   s   

zTgwSubscribe.process_datac                 C   &   |rt | j|d  d S t| d S Nr   
threadpoolsubmitr-   printr   r)   errr   r   r    OnMDSnapshot)   s   zTgwSubscribe.OnMDSnapshotc                 C   r.   r/   r0   r4   r   r   r    OnMDIndexSnapshot0   s   zTgwSubscribe.OnMDIndexSnapshotc                    s    fdd}|S )Nc                    s   D ]}|  j |< q| S r   )r   )r,   r'   r   ts_codesr   r    	decorator7   s   z(TgwSubscribe.register.<locals>.decoratorr   )r   r9   r:   r   r8   r    register6   s   zTgwSubscribe.registerc           
      C   s,  t  }t|d| j}|jdkr+| }|ddkr+td|j  td|d  t	| j| j
| j| jd g }| jD ]:}t|\}}t }tjj|_tjj|_||_||_|| t }tjj|_tjj|_||_||_|| q<| d	 t|| }	|	tjjkrtt |	 	 t!"d q)Ntgw_subscribe   messagesuccessu   验证token出错，u   请先设置Tushare的token，msgr   r   r   r   FT
   )#r   r   r   status_codejsonr"   r3   textPermissionErrorr   r   r   r   r   r
   r#   SubscribeItemSubscribeDataType	kSnapshotflagr$   r&   category_typesecurity_codemarketappendkIndexSnapshotr%   SetDfFormat	Subscribe	ErrorCodekSuccessGetErrorMsgtimesleep)
r   tokenr	resp_dataitemsr'   tcr+   r?   r   r   r    run=   s<   








zTgwSubscribe.run)r   )r   N)
__name__
__module____qualname__r   r-   r6   r7   r;   r]   __classcell__r   r   r   r    r      s    r   c                  C   sJ   t d tddddd} | jddgd	d
tttf fdd}|   d S )Nxxxxxxr   r   r   r   rA   z	600000.SHz	000300.SH)r9   r)   c                 S   s   t |  d S r   )r3   )r)   r   r   r    just_print_indexc   s   zdemo.<locals>.just_print_index)r   r   r;   r   r   r   r]   )subrc   r   r   r    demo_   s
   re   )__doc__rU   concurrent.futuresr   typingr   r#   
model.tickr   r   convertr   r	   r
   r    r   r   util.verify_tokenr   r1   IPushSpir   re   r   r   r   r    <module>   s    K