
    h+                         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 d dl	m
Z
 d dlmZ d dlmZ ej                            d           d dlmZ  G d	 d
e          ZdS )    N)	b64decode)quote)AES)MD5)unpadz..)Spiderc                       e Zd Zd dZd Zd Zd Zd Zg dZdZ	d	 Z
d
 Zd Zd Zd!dZd Zd Zd Zd Zd Zd Zd"dZd Zd Zd ZdededefdZdS )#r    c                     |                                  | _        |                                 \  | _        | _        | _        d S N)getdiddidgettokentokenphosthost)selfextends     .   /storage/emulated/0/纯福利/PY1/推特APP.pyinitzSpider.init   s0    ;;==*.--//'
4:di    c                     d S r    )r   urls     r   isVideoFormatzSpider.isVideoFormat       r   c                     d S r   r   r   s    r   manualVideoCheckzSpider.manualVideoCheck   r   r   c                     d S r   r   )r   actions     r   r!   zSpider.action   r   r   c                     d S r   r   r   s    r   destroyzSpider.destroy!   r   r   )
wcyfhknomg
pdcqllfomw
alxhzjvean
bqeaaxzplt
hfbtpixjsozMozilla/5.0 (Linux; Android 11; M2012K10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.141 Mobile Safari/537.36;SuiRui/twitter/ver=1.4.4c                 h   |                      | j         d|                                                                           d         }|                     |          }dddddd	d
dd	ddd	gdgddddd	d
dd	ddd	gdgddddd	d
dd	ddd	gdgddddd	d
dd	ddd	gdgddddd	d
dd	ddd	gdgddddd	d
dd	ddd	gdgddddd	d
dd	ddd	gdgddddd	ddd	ddd	ddd	gdgdi}dddg}|d         D ]&}|                    |d         |d         d           '||d<   |S )Nz/api/video/classifyListheadersencDatafiltersflu   分类u   最近更新1)nvu   最多播放2u	   好评榜3)keynamevaluetypeu   精选u   日榜u   周榜u   月榜u   总榜4)r/   r2   r3   r8   567jxr<   )	type_nametype_iddataclassifyTitle
classifyIdclass)fetchr   r+   jsonaesappend)r   filterr?   data1resultclassesks          r   homeContentzSpider.homeContent(   s   zzTY???zXX]]__`ijD(5C#/N/NVdknPoPo5@s/K/K/M%N %N $O^blt^lsvXwXw^lsvXwXw^ipsXtXt^vWw Ww Vx
 -1(5C#/N/NVdknPoPo5@s/K/K/M%N %N $O^blt^lsvXwXw^lsvXwXw^ipsXtXt^vWw Ww Vx
 -1(5C#/N/NVdknPoPo5@s/K/K/M%N %N $O^blt^lsvXwXw^lsvXwXw^ipsXtXt^vWw Ww Vx
 -1(5C#/N/NVdknPoPo5@s/K/K/M%N %N $O_eowemtw_x_xemtw_x_xemtw_x_xemeh`j `j_kXl Xl Wm/n n o: "*d;;<v 	Z 	ZANN?);,XXYYYY!wr   c                     d S r   r   r   s    r   homeVideoContentzSpider.homeVideoContentN   r   r   c                 ~   d| d| d|                     dd           }d|v rd| d|                    dd	           }|d
k    rd| d|                     dd           }|                     | j         | |                                                                           d         }|                     |          d         }i }g }	|D ]}
|
                     d           d|
                     d           d|
                     d           }d|v r|dz   }|	                    ||
                     d          |                                 d|
                     d          d          z   | 	                    |
                     d                    dddd           |	|d<   ||d<   d |d!<   d"|d#<   d$|d%<   |S )&Nz3/api/video/queryVideoByClassifyId?pageSize=20&page=z&classifyId=z
&sortType=r.   r/   clickz3/api/video/queryPersonVideoByType?pageSize=20&page=z&userId=r
   r<   z*/api/video/getRankVideos?pageSize=20&page=z&type=r7   r*   r,   r?   videoId?userIdnickNametitle&url=coverImgr   playTimerectHzG?r7   ratiovod_idvod_namevod_picvod_remarksstylelistpage'  	pagecountZ   limit?B total)
getreplacerC   r   r+   rD   rE   rF   getProxyUrldtim)r   tidpgrG   r   pathr?   rH   rI   videosrK   ids               r   categoryContentzSpider.categoryContentQ   s)   {R{{UX{{djdndnosuxdydy{{c>>oooUXU`U`ahjlUmUmooD$;;ccc&**U[]`JaJaccDzzTY...zGGLLNNyYv& 	r 	rAEE)$$LLquuXLLz9J9JLLB#~~'\MMRQUU7^^PTP`P`PbPb  fDmnmrmrs}m~m~  @A  nB  fD  fD  QD*.))AEE*4E4E*F*FY_jnPoPoq q r r r rvv"{w wr   c                    |d                              dd                              d          }d|d          }|                     | j         | |                                                                           d         }|                     |          d         }d	t          j        |d
         dz   |d         d          z   dz   |d         z   dz   }d|d         v r|d         }|d|d         dz   |z   d}d|gi}|S )Nr   rP   r
   rR   z/api/video/can/watch?videoId=r*   r,   playPathz[a=cr:      )rs   r5   z/]z[/a]u   推特$)vod_directorvod_play_fromvod_play_urlrc   )rl   splitrC   r   r+   rD   rE   dumps)	r   idsvidrq   r?   rH   cljvodrI   s	            r   detailContentzSpider.detailContenth   s   !fnnWb))//447s1v77zzTY...zGGLLNNyYz*3q6G+;SV$L$LMMMPTTWZ[\W]]`ffc!fa&C"XsSTvX[|^cOcdd3%r   r/   c                    d| dt          |           d}|                     | j         | |                                                                           d         }|                     |          d         }i }g }|D ]}	|	                    d           d|	                    d	           d|	                    d
           }
|                    |
|	                    d          |                                 d|	                    d          d          z   | 	                    |	                    d                    dddd           ||d<   ||d<   d|d<   d|d<   d|d<   |S )Nz%/api/search/keyWord?pageSize=20&page=z&searchWord=z&searchType=1r*   r,   	videoListrQ   rR   rS   rT   rU   rV   rW   r   rX   rY   rZ   r[   r]   rc   rd   re   rf   rg   rh   ri   rj   )
r   rC   r   r+   rD   rE   rk   rF   rm   rn   )r   r4   quickrp   rq   r?   rH   rI   rr   rK   rs   s              r   searchContentzSpider.searchContentt   s   `r``uSzz```zzTY...zGGLLNNyY{+ 	s 	sAEE)$$LLquuXLLz9J9JLLBMMRQUU7^^PTP`P`PbPb  fDmnmrmrs}m~m~  @A  nB  fD  fD  QD*.))AEE*4E4E*F*FZ`koQpQpr r s s s svv"{w wr   c                 2    d||                                  dS )Nr   )parser   headerr*   )r   flagrs   vipFlagss       r   playerContentzSpider.playerContent   s    2@@@r   c                 ,    |                      |          S r   )imgs)r   params     r   
localProxyzSpider.localProxy   s    yyr   c                     t          t          t          j                    dz                      }|                     |          }||fS )Ni  )strinttimemd5)r   tsigns      r   getsignzSpider.getsign   s:    DIKK$&''((xx{{Qwr   c                 ^    |                                  \  }}| j        | j        ||| j        dS )N)
User-Agentdeviceidr   saut)r   uar   r   )r   r   r   s      r   r+   zSpider.headers   s/    ,,..a"g$(VZV`aaar   c                 &   t          d          }|}t          j        |t          j        |          }t	          |                    t          |                    t          j                  }t          j        |	                    d                    S )NzSmhiR2NpT2lKSVV6STFOaQ==utf-8)
r   r   newMODE_CBCr   decrypt
block_sizerD   loadsdecode)r   wordr4   ivcipher	decrypteds         r   rE   z
Spider.aes   sk    233clB//&..4993>JJ	z)**733444r   c                 T   	 t          |          }|dz  }|dz  }|dz  }|dz  }t          |                              d          }t          |                              d          }|dk    r,t          |                              d          }| d| d| S | d| S #  Y dS xY w)Ni  <   rx   r   :666)r   r   zfill)r   secondshoursremaining_secondsminutesformatted_minutesformatted_secondsformatted_hourss           r   rn   zSpider.dtim   s    	'llGtOE '$'2-G 1B 6 #G 2 21 5 5 #$5 6 6 < <Q ? ?qyy"%e**"2"21"5"5)SS,=SS@QSSS+AA.?AAA	55s   BB" B" "B'r   
   c           
         |t          | j                  k    s||k    rdS dd                    t          j        t
          j        t
          j        z   t          j        dd                               d| j        |          d}	 | d}| 	                                \  }}| j
        d	| j        ||d
}| j        dddd}|                     |||          }	|	                                 |	                                d         }
|
d         |
d         |fS # t          $ r#}|                     |dz   |          cY d }~S d }~ww xY w)Nr
   zhttps://   r   )rK   .z.workz/api/user/travelerzapplication/json)r   Acceptr   r   r   Uz##X-4m6Goo4zzPi1hF##tt09)deviceIdttcodechCode)rD   r+   r?   r   	imgDomainrw   )lenhsjoinrandomchoicesstringascii_lowercasedigitsrandintr   r   r   postraise_for_statusrD   	Exceptionr   )r   imax_attemptscurrent_domainr   r   r   r+   r?   responserH   es               r   r   zSpider.gettoken   s   DG\ 1 12 QBGGFN6;QTZTa;aekestuwyezez,{,{,{$|$|  Q  Q  @D  @G  HI  @J  Q  Q  Q	6#777CllnnGD!"g, H G !H. 	 D yy4yAAH%%'''MMOOF+E>5#5~EE 	6 	6 	6==Q55555555	6s   BD 
E"E :E Ec                     |                      d          }|sXt          t          t          j                                        }|                     |          }|                     d|           |S )Nr   )getCacher   r   r   r   setCache)r   r   r   s      r   r   zSpider.getdid   s^    mmE"" 	&C	$$%%A((1++CMM%%%%
r   c                     t          j                    }|                    |                    d                     |                                S )Nr   )r   r   updateencode	hexdigest)r   texths      r   r   z
Spider.md5   s9    GII	W%%&&&{{}}r   c                     d| j         i}|d         }|                     | j         | |          }|                     |j        dd          }d|j                            d          |gS )Nr   r   r*   d   z2020-zq3-888   zContent-Type)r   rC   r   imgcontentr+   rk   )r   r   r+   r   r?   bdatas         r   r   zSpider.imgs   sm    )ElzzTZ...wz??sN;;T\%%n55u==r   r?   lengthr4   c           	      V  
 d
dd
fd}fd}fd} ||          r|S  ||          r|S  ||          r|S |                     d          }t          |          }t          |          D ](}	||	xx         ||	t          |          z           z  cc<   )t	          |          S )Ns   GIFs   s   PNG

c                 F    t          |           dk    o| d d         k    S )Nrx      r   )r?   GIFs    r   is_dont_need_decode_for_gifz/Spider.img.<locals>.is_dont_need_decode_for_gif   $    t99q=4T"1"X_4r   c                 F    t          |           dk    o| d d         k    S )N   r   r   )r?   JPGs    r   is_dont_need_decode_for_jpgz/Spider.img.<locals>.is_dont_need_decode_for_jpg   r   r   c                 V    t          |           dk    o| dd         dd         k    S )Nr   rw      r   )r?   PNGs    r   is_dont_need_decode_for_pngz/Spider.img.<locals>.is_dont_need_decode_for_png   s-    t99q=:T!A#Y#ac(%::r   r   )r   	bytearrayranger   bytes)r   r?   r   r4   r   r   r   	key_bytesrI   r   r   r   r   s             @@@r   r   z
Spider.img   s   1	5 	5 	5 	5 	5	5 	5 	5 	5 	5	; 	; 	; 	; 	; '&t,, 	!K((.. 		!K((.. 	!K

7++It__F6]] ; ;q			Yq3y>>'9::				== r   N)r
   )r/   )r   r   )__name__
__module____qualname__r   r   r   r!   r#   r   r   rL   rN   rt   r   r   r   r   r   r+   rE   rn   r   r   r   r   r   r   r   r   r   r   r   r   r      s          
         JIIB DB$ $ $L    .
 
 
   "A A A       
b b b5 5 5  &6 6 6 66    
> > >! !s ! ! ! ! ! ! !r   r   )rD   r   r   sysr   base64r   urllib.parser   Crypto.Cipherr   Crypto.Hashr   Crypto.Util.Paddingr   rq   rF   base.spiderr   r   r   r   <module>r     s       



                          % % % % % %          e! e! e! e! e!V e! e! e! e! e!r   