U
    bô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   242ccb8230d709e1Úd3dGiJc651gSQ8w1zcom.kmxs.readerÚ51110ÚandroidÚ0Ú1Úunknown)zapp-versionÚplatformÚregÚ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   ÚparamsÚsorted_keysÚ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_KEYÚMODE_CBCÚdecryptr   Ú
block_sizeÚdecodeÚ	ExceptionÚstripr$   )r   Úbase64_contentÚencrypted_bytesÚivÚ
ciphertextÚcipherÚ	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 )Nr0   rJ   zhttps://api-bc.wtzw.comzhttps://api-ks.wtzw.comÚsearch)r/   )r   Úpathr*   Ú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   ÚfilterÚ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   Ú202z/api/v4/category/get-listr   )ÚgenderÚcategory_idÚneed_filtersÚpageÚneed_categoryrJ   ©r*   r3   ÚdataÚbooksÚidÚtitleÚ
image_linkÚauthor©Úvod_idÚvod_nameÚvod_picÚvod_remarksiç  é   i'  )r\   rc   Ú	pagecountÚlimitÚtotalr\   )Úsplitr4   rO   ÚrequestsÚgetÚjsonÚappendr$   )r   ÚtidÚpgrX   r   r`   Úcat_idrL   r*   r3   r   Úsigned_paramsÚrÚjÚvideosÚ	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   )rh   Úimei_ipÚ
teeny_modez/api/v4/book/detailrJ   u   èŽ·å–ä¸­...r   )rm   rn   Úvod_play_fromre   rf   r‚   ri   rn   rj   ro   Úcategory_namerP   Ú	words_numr   u   å­—rp   rk   Ú	vod_actorÚintroÚvod_contentrh   z/api/v1/chapter/chapter-listÚksÚchapter_listsú@@ú-ú$ú#Úvod_play_urlr\   zError: )
r4   rO   rv   rw   rx   r$   Úreplacery   Újoinr@   )r   ÚidsÚbidr3   Údetail_paramsÚ
detail_urlÚdetail_signed_paramsÚvodr~   r   Ú	book_infoÚchapter_paramsÚchapter_urlÚchapter_signed_paramsÚr_cÚj_cÚchapter_listÚlistsÚitemÚcidÚcnameÚurl_coderH   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Ú3r„   )r`   r…   rc   ÚwdrJ   re   rf   rg   rh   Úoriginal_titlerj   Úoriginal_authorrl   )r\   rc   )r4   rO   rv   rw   rx   ry   r$   )r   ÚkeyÚquickr{   rL   r*   r3   r   r}   r~   r   r€   r‚   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 å­—ç¬¦ä¸²ï¼Œä»¥é€‚é…åŽŸç‰ˆå£³å­çš„è§£æžé€»è¾‘
        r   r   é   é   r   )rh   Ú	chapterIdz/api/v1/chapter/contentr   re   rf   Úcontentri   u   åŠ è½½å¤±è´¥: Úmsgu   æœªçŸ¥é”™è¯¯u   ç« èŠ‚æ­£æ–‡)ri   r³   F)Úensure_asciiznovel://)ÚparseÚplayUrlr   Úheaderu   é”™è¯¯u   å‘ç”Ÿå¼‚å¸¸: N)ru   r9   r4   rO   rv   rw   rx   rI   Údumpsr@   r$   )r   Úflagrh   ÚvipFlagsÚpartsr—   r¥   ri   r*   r3   r   r}   r~   r   r³   Úresult_dataÚretÚ	final_urlrH   Ú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   )rJ   )r   )r   r   r   r   r   r   r   r;   r%   ÚAPP_IDr1   r/   r4   rI   rO   r[   r]   rƒ   r¨   r¯   rÁ   rÂ   r	   r	   r	   r
   r      s6   
ø	
	
 .
:r   )Úsysr&   r7   rx   rv   ÚCrypto.Cipherr   ÚCrypto.Util.Paddingr   rL   ry   Úbase.spiderr   r   ÚImportErrorr	   r	   r	   r
   Ú<module>   s   