
    P&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 ej                            d           d dlmZ  G d d	e          ZdS )
    N)	b64decode)AES)MD5)unpadz..)Spiderc                       e Zd ZddZd Zd Zd Zg 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 Zd 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     1   /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   s    r   destroyzSpider.destroy   r   r   )
fhoumpjjih
dyfcbkggxn
rggwiyhqtg
bpbbmplfxcc                 2   |                      | j         d|                                                                           d         }|                     |          }i }g }|d         D ]&}|                    |d         |d         d           '||d<   |S )	Nz#/api/video/queryClassifyList?mark=4headersencDatadataclassifyTitle
classifyId)	type_nametype_idclass)fetchr   r'   jsonaesappend)r   filterr)   data1resultclassesks          r   homeContentzSpider.homeContent"   s    zzTYKKKUYUaUaUcUczddiikkluvv 	Z 	ZANN?);,XXYYYY!wr   c                     d S r   r   r   s    r   homeVideoContentzSpider.homeVideoContent,   r   r   c                    d| d| d}i }g }|                      | j         | |                                                                           d         }|                     |          }	|	d         D ]}}
|                    |
d         |
                    d          |                                 d	z   |
d
         z   |                     |
                    d                    dddd           ~||d<   ||d<   d|d<   d|d<   d|d<   |S )Nz+/api/short/video/getShortVideos?classifyId=z&videoMark=4&page=z&pageSize=20r&   r(   r)   videoIdtitlez&url=coverImgplayTimerectgHzG?)typeratio)vod_idvod_namevod_picvod_remarksstylelistpagei'  	pagecountZ   limiti?B total)	r/   r   r'   r0   r1   r2   getgetProxyUrldtim)r   tidpgr3   r   pathr5   videosr)   vdatar7   s              r   categoryContentzSpider.categoryContent/   sH   b3bbRTbbbZZ49,d,,dllnnZEEJJLLYWhhtnnv 	r 	rAMMQy\quuW~~Z^ZjZjZlZlovZvyz  |F  zG  [G*.))AEE*4E4E*F*FY_jnPoPoq q r r r rvv"{w wr   c                    d|d          }|                      | j         | |                                                                           d         }|                     |          }|d          d|d          d|d	          }|d         d
                    |                    dg                     |                    d          pd|d}d|gi}|S )Nz /api/video/getVideoById?videoId=r   r&   r(   r=   z
$auth_key=authKeyz&path=videoUrlr	   	tagTitlesnickNameu   小红书官方)rD   r,   vod_play_fromvod_play_urlrH   )r/   r   r'   r0   r1   joinrN   )r   idsrS   r)   vdvodr5   s           r   detailContentzSpider.detailContent?   s    :#a&::zzTY...zGGLLNNyYHHTNNwZ
F
F1Y<
F
Fq}
F
FW:BGGAEE+b<Q<Q4R4Rdedidijtdudu  eK  zK  ]^  _  _3%r   1c                     d S r   r   )r   keyquickrR   s       r   searchContentzSpider.searchContentH   r   r   c                     |                                  }|                    d          |d<   |d= d| j         d| |d}|S )NautAuthorizationdeviceidr   z/api/m3u8/decode/authPath?)parser   header)r'   popr   )r   flagidvipFlagshr5   s         r   playerContentzSpider.playerContentK   sO    
,,..UU5\\/jM	%Q%QR%Q%Q^_``r   c                 ,    |                      |          S r   )action)r   params     r   
localProxyzSpider.localProxyR   s    {{5!!!r   c                     t          j                    }|                    |                    d                     |                                S )Nutf-8)r   newupdateencode	hexdigest)r   textrs   s      r   md5z
Spider.md5U   s9    GII	W%%&&&{{}}r   c                 &   t          d          }|}t          j        |t          j        |          }t	          |                    t          |                    t          j                  }t          j        |	                    d                    S )NzSmhiR2NpT2lKSVV6STFOaQ==rz   )
r   r   r{   MODE_CBCr   decrypt
block_sizer0   loadsdecode)r   wordrf   ivcipher	decrypteds         r   r1   z
Spider.aesZ   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  <      r   :r	   )intstrzfill)r   secondshoursremaining_secondsminutesformatted_minutesformatted_secondsformatted_hourss           r   rP   zSpider.dtima   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	22s   BB" B" "B'c                     |                      d          }|sXt          t          t          j                                        }|                     |          }|                     d|           |S )Nr   )getCacher   r   timer   setCache)r   r   ts      r   r   zSpider.getdidt   s^    mmE"" 	&C	$$%%A((1++CMM%%%%
r   c                     t          t          t          j                    dz                      }|                     |dd                   |fS )Ni        )r   r   r   r   )r   r   s     r   getsignzSpider.getsign|   sA    
c$)++$%%
&
&xx!A#!!r   r   
   c           
      d   |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}d	| j
        ||d
}| j
        dddd}|                     |||          }	|	                                 |	                                d         }
|
d         |
d         |fS #  |                     |dz   |          cY S xY w)Nr	   zhttps://   r   )r7   .z.workz/api/user/travelerMozilla/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/xhs/ver=1.2.6)
User-Agentrl   r   sUdafe13)deviceIdttcodechCode)r0   r'   r)   r   	imgDomain   )lenhsr^   randomchoicesstringascii_lowercasedigitsrandintr   r   postraise_for_statusr0   r   )r   imax_attemptscurrent_domainsignr   r   r'   r)   r4   data2s              r   r   zSpider.gettoken   sk   DG\ 1 12 QBGGFN6;QTZTa;aekestuwyezez,{,{,{$|$|  Q  Q  @D  @G  HI  @J  Q  Q  Q	4<<>>FD#777C W H14; ;G !%R8TTDIIcgI>>E""$$$JJLL(E>5#5nDD	4==1l33333s   B
D D/c                 X    |                                  \  }}d| j        ||| j        d}|S )Nr   )r   rl   r   r   rj   )r   r   r   )r   r   r   hendas       r   r'   zSpider.headers   s;    ||~~Q SqtDJH H r   c                     ddi}|                      | j         |d          |          }|j                            d                              d          d         }|                     |j        dd	          }d
||gS )Nr   zDDalvik/2.1.0 (Linux; U; Android 11; M2012K10C Build/RP1A.200720.011)r   r&   zContent-Type;r   d   z2020-zq3-888   )r/   r   r'   rN   splitimgcontent)r   rw   r'   r)   rA   base64_datas         r   rv   zSpider.action   s    `bzzTZ7u77zII\n--33C88;hht|S.AAT;''r   r)   lengthrf   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 )Nr   r   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   r   r   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   rz   )r}   	bytearrayranger   bytes)r   r)   r   rf   r   r   r   	key_bytesr5   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	   )rd   )r   r   )__name__
__module____qualname__r   r   r   r    r   r8   r:   rV   rc   rh   rt   rx   r   r1   rP   r   r   r   r'   rv   r   r   r   r   r   r   r   r   r      sw          
       
B	A	AB              " " "  
5 5 5  &  " " "4 4 4 4$  ( ( (! !s ! ! ! ! ! ! !r   r   )r0   r   r   sysr   base64r   Crypto.Cipherr   Crypto.Hashr   Crypto.Util.Paddingr   rS   r2   base.spiderr   r   r   r   <module>r      s       



                    % % % % % %          j! j! j! j! j!V j! j! j! j! j!r   