U
    ðóqi^&  ã                   @   sº   d dl 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mZ e j	 
d¡ zd dlmZ W nH ek
r¤   zd dlmZ W n" ek
rž   G dd„ dƒZY nX Y nX G d	d
„ d
eƒZdS )é    N)ÚAES)Úunpadz..)ÚSpider)Ú
BaseSpiderc                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r	   r	   õ.   /storage/emulated/0/lz/py/sy/åŽ»è¯»ä¹¦[ä¹¦].pyr      s   r   c                	   @   s¬   e Zd Zdd„ Zd+dd„Zdd„ Zdd	„ Zd
ZdZdZ	dddde	dd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$d%„Zd&d'„ Zd(d)„ Zd*S ).r   c                 C   s   dS )Nõ   é˜…è¯»åŠ©æ‰‹r	   ©Úselfr	   r	   r
   ÚgetName   s    zSpider.getNameÚ c                 C   s   d S ©Nr	   )r   Úextendr	   r	   r
   Úinit   s    zSpider.initc                 C   s   dS )NFr	   )r   Úurlr	   r	   r
   ÚisVideoFormat!   s    zSpider.isVideoFormatc                 C   s   d S r   r	   r   r	   r	   r
   ÚmanualVideoCheck$   s    zSpider.manualVideoChecks   242ccb8230d709e1Zd3dGiJc651gSQ8w1zcom.kmxs.readerZ51110ÚandroidÚ0Ú1Úunknown)zapp-versionÚplatformÚregZAUTHORIZATIONzapplication-idznet-envÚchannelz	qm-paramsc                 C   sV   t | ¡ ƒ}d}|D ]"}t|| ƒ}||› d|› 7 }q|| j7 }t | d¡¡ ¡ S )Nr   ú=úutf-8)ÚsortedÚkeysÚstrÚSIGN_KEYÚhashlibÚmd5ÚencodeÚ	hexdigest)r   ÚparamsZsorted_keysZsign_strÚkÚvalr	   r	   r
   Úget_sign9   s    
zSpider.get_signc                 C   s$   | j  ¡ }|  |¡|d< d|d< |S )NÚsignzokhttp/3.12.1z
User-Agent)ÚBASE_HEADERSÚcopyr*   )r   Úheadersr	   r	   r
   Úget_headersB   s    
zSpider.get_headersc              
   C   sÌ   z’t  |¡}t|ƒdk rdW S |d d… }|dd … }t | jtj|¡}| |¡}zt|tj	ƒ 
d¡W W S  tk
rŽ   | 
dd¡ ¡  Y W S X W n4 tk
rÆ } zdt|ƒ›  W Y ¢S d }~X Y nX d S )Né   u   æ•°æ®é•¿åº¦ä¸è¶³r   Úignoreu   è§£å¯†é”™è¯¯: )Úbase64Ú	b64decodeÚlenr   ÚnewÚAES_KEYZMODE_CBCZdecryptr   Ú
block_sizeÚdecodeÚ	ExceptionÚstripr!   )r   Zbase64_contentZencrypted_bytesZivZ
ciphertextÚcipherZ	decryptedÚer	   r	   r
   Údecrypt_contentI   s    

zSpider.decrypt_contentÚbcc                 C   s:   |   |¡|d< |dkrdnd}d|kr*d}|› |› |fS )Nr+   r>   zhttps://api-bc.wtzw.comzhttps://api-ks.wtzw.comÚsearch)r*   )r   Úpathr'   Zdomain_typeÚbase_urlr	   r	   r
   Úget_api_url[   s
    zSpider.get_api_urlc                 C   s2   ddddddddd	d
dg}dd„ |D ƒ}|i dœS )N)u   çŽ„å¹»å¥‡å¹»z1|202)u   éƒ½å¸‚äººç”Ÿz1|203)u   æ­¦ä¾ ä»™ä¾ z1|205)u   åŽ†å²å†›äº‹z1|56)u   ç§‘å¹»æœ«ä¸–z1|64)u   æ¸¸æˆç«žæŠ€z1|75)u   çŽ°ä»£è¨€æƒ…z2|1)u   å¤ä»£è¨€æƒ…z2|2)u   å¹»æƒ³è¨€æƒ…z2|4)u   å©šæ‹æƒ…æ„Ÿz2|6)u   æ‚¬ç–‘æŽ¨ç†z3|262c                 S   s   g | ]\}}||d œ‘qS ))Ú	type_nameÚtype_idr	   )Ú.0ÚnÚir	   r	   r
   Ú
<listcomp>k   s     z&Spider.homeContent.<locals>.<listcomp>)ÚclassÚfiltersr	   )r   ÚfilterZcatsÚclassesr	   r	   r
   ÚhomeContentd   s           üzSpider.homeContentc                 C   s   dg iS )NÚlistr	   r   r	   r	   r
   ÚhomeVideoContentn   s    zSpider.homeVideoContentc              	   C   s  z|  d¡\}}W n   d\}}Y nX d}||d|ddœ}|  ¡ }	|  ||d¡\}
}zžtj|
||	d}| ¡ }g }g }d|kršd	|d krš|d d	 }nd	|krª|d	 }|D ]4}| t| d
¡ƒ| d¡| d¡| d¡dœ¡ q®||ddddœW S    dg i Y S X d S )Nú|)r   Z202z/api/v4/category/get-listr   )ÚgenderÚcategory_idZneed_filtersÚpageZneed_categoryr>   ©r'   r.   ÚdataÚbooksÚidÚtitleÚ
image_linkÚauthor©Úvod_idÚvod_nameÚvod_picÚvod_remarksiç  é   i'  )rN   rS   Ú	pagecountÚlimitÚtotalrN   )Úsplitr/   rB   ÚrequestsÚgetÚjsonÚappendr!   )r   ÚtidÚpgrK   r   rQ   Zcat_idr@   r'   r.   r   Úsigned_paramsÚrÚjÚvideosZ	book_listÚbookr	   r	   r
   ÚcategoryContentq   s6    ü
zSpider.categoryContentc              
   C   sê  |d }|   ¡ }|dddœ}|  d|d¡\}}|ddd	œ}zhtj|||d
}| ¡ }	d|	krÒd|	d krÒ|	d d }
|
 d¡|d< |
 d¡|d< |
 d¡|d< |
 dd¡› d|d< |
 d¡|d< |
 d¡|d< d|i}|  d|d¡\}}tj|||d
}| ¡ }g }g }d|kr0d|d kr0|d d }|D ]V}t|d ƒ}t|d ƒ dd ¡ d!d¡}|› d|› d|› }| |› d!|› ¡ q4d" |¡|d#< d$|giW S  t	k
rä } z d%|› |d< d$|gi W Y ¢S d }~X Y nX d S )&Nr   Ú
2937357107r   )rW   Úimei_ipZ
teeny_modez/api/v4/book/detailr>   u   èŽ·å–ä¸­...r   )r\   r]   Úvod_play_fromrT   rU   ro   rX   r]   rY   r^   Zcategory_namerC   Z	words_numr   u   å­—r_   rZ   Ú	vod_actorÚintroÚvod_contentrW   z/api/v1/chapter/chapter-listÚksZchapter_listsú@@ú-ú$ú#Úvod_play_urlrN   zError: )
r/   rB   re   rf   rg   r!   Úreplacerh   Újoinr9   )r   ÚidsÚbidr.   Zdetail_paramsÚ
detail_urlZdetail_signed_paramsÚvodrl   rm   Z	book_infoZchapter_paramsÚchapter_urlZchapter_signed_paramsZr_cZj_cZchapter_listÚlistsÚitemÚcidZcnameZurl_coder<   r	   r	   r
   ÚdetailContent‘   sD    zSpider.detailContentc              	   C   sÆ   d}dd||dœ}|   ¡ }|  ||d¡\}}z~tj|||d}	|	 ¡ }
g }d|
kr d|
d kr |
d d D ]4}| t| d	¡ƒ| d
¡| d¡| d¡dœ¡ qj||dœW S    g |dœ Y S X d S )Nz/api/v5/search/wordsÚ3rq   )rQ   rr   rS   Úwdr>   rT   rU   rV   rW   Zoriginal_titlerY   Zoriginal_authorr[   )rN   rS   )r/   rB   re   rf   rg   rh   r!   )r   ÚkeyÚquickrj   r@   r'   r.   r   rk   rl   rm   rn   ro   r	   r	   r
   ÚsearchContent¿   s&    ü
zSpider.searchContentc              
   C   sd  z|  d¡}|d }|d }t|ƒdkr2|d nd}||dœ}|  ¡ }	|  d|d¡\}
}tj|
||	d	}| ¡ }d}d
|krºd|d
 krº|s¦d|d
 kr¦|d
 d }|  |d
 d ¡}nd| dd¡› }|sÔd}||dœ}tj|dd}d|› }dd|ddœW S  t	k
r^ } z:ddt
|ƒ› dœ}dddtj|dd› ddœ W Y ¢S d}~X Y nX dS )uf   
        ä¿®æ­£ç‚¹ï¼šè¿”å›žæ ¼å¼æ”¹å›ž JSON å­—ç¬¦ä¸²ï¼Œä»¥é€‚é…åŽŸç‰ˆå£³å­çš„è§£æžé€»è¾‘
        rx   r   é   é   r   )rW   Ú	chapterIdz/api/v1/chapter/contentrw   rT   rU   ÚcontentrX   u   åŠ è½½å¤±è´¥: Úmsgu   æœªçŸ¥é”™è¯¯u   ç« èŠ‚æ­£æ–‡)rX   r   F)Úensure_asciiznovel://)ÚparseÚplayUrlr   Úheaderu   é”™è¯¯u   å‘ç”Ÿå¼‚å¸¸: N)rd   r4   r/   rB   re   rf   rg   r=   Údumpsr9   r!   )r   ÚflagrW   ÚvipFlagsÚpartsr€   r†   rX   r'   r.   r   rk   rl   rm   r   Zresult_dataÚretZ	final_urlr<   Zerr_datar	   r	   r
   ÚplayerContentÔ   sJ    

þ
üþüzSpider.playerContentc                 C   s   d S r   r	   )r   r'   r	   r	   r
   Ú
localProxy  s    zSpider.localProxyN)r   )r>   )r   )r   r   r   r   r   r   r   r6   r"   ZAPP_IDr,   r*   r/   r=   rB   rM   rO   rp   r‡   rŒ   r›   rœ   r	   r	   r	   r
   r      s6   
ø	
	
 .
:r   )Úsysr#   r2   rg   re   ZCrypto.Cipherr   ZCrypto.Util.Paddingr   r@   rh   Úbase.spiderr   r   ÚImportErrorr	   r	   r	   r
   Ú<module>   s   