
    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                  j                  d       d dlmZ  G d d	e      Zy)
    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y)r   c                 t    | j                         | _        | j                         \  | _        | _        | _        y N)getdiddidgettokentokenphosthost)selfextends     )   /storage/emulated/0/lz/py/sy/小红薯.pyinitzSpider.init   s*    ;;=*.--/'
4:di    c                      y r
    )r   urls     r   isVideoFormatzSpider.isVideoFormat       r   c                      y r
   r   r   s    r   manualVideoCheckzSpider.manualVideoCheck   r   r   c                      y r
   r   r   s    r   destroyzSpider.destroy   r   r   )
fhoumpjjih
dyfcbkggxn
rggwiyhqtg
bpbbmplfxcc                     | j                  | j                   d| j                               j                         d   }| j	                  |      }i }g }|d   D ]  }|j                  |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    zzTYYK'JKUYUaUaUczdiikluvvANN?);,XY !wr   c                      y r
   r   r   s    r   homeVideoContentzSpider.homeVideoContent,   r   r   c                    d| d| d}i }g }| j                  | j                   | | j                               j                         d   }| j	                  |      }	|	d   D ]c  }
|j                  |
d   |
j                  d      | j                         d	z   |
d
   z   | j                  |
j                  d            dddd       e ||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&   r/   r0   r1   getgetProxyUrldtim)r   tidpgr2   r   pathr4   videosr(   vdatar6   s              r   categoryContentzSpider.categoryContent/   s   :3%?QRTQUUabZZ499+dV,dllnZEJJLYWhhtnvAMMQy\quuW~Z^ZjZjZlovZvyz  |F  zG  [G*.))AEE*4E*FY_jnPoq r   vv"{w wr   c                 `   d|d    }| j                  | j                   | | j                               j                         d   }| j	                  |      }|d    d|d    d|d	    }|d   d
j                  |j                  dg             |j                  d      xs d|d}d|gi}|S )Nz /api/video/getVideoById?videoId=r   r%   r'   r<   z
$auth_key=authKeyz&path=videoUrl 	tagTitlesnickNameu   小红书官方)rC   r+   vod_play_fromvod_play_urlrG   )r.   r   r&   r/   r0   joinrM   )r   idsrR   r(   vdvodr4   s           r   detailContentzSpider.detailContent?   s    1#a&:zzTYYKv.zGLLNyYHHTNwZL
1Y<.q}o
FW:BGGAEE+b<Q4Rdedidijtdu  eK  zK  ]^  _3%r   c                      y r
   r   )r   keyquickrQ   s       r   searchContentzSpider.searchContentH   r   r   c                 ~    | j                         }|j                  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hr4   s         r   playerContentzSpider.playerContentK   sH    
,,.UU5\/jM		{2LRD%Q^_`r   c                 $    | j                  |      S r
   )action)r   params     r   
localProxyzSpider.localProxyR   s    {{5!!r   c                     t        j                         }|j                  |j                  d             |j	                         S )Nutf-8)r   newupdateencode	hexdigest)r   textrr   s      r   md5z
Spider.md5U   s.    GGI	W%&{{}r   c                    t        d      }|}t        j                  |t        j                  |      }t	        |j                  t        |            t        j                        }t        j                  |j                  d            S )NzSmhiR2NpT2lKSVV6STFOaQ==ry   )
r   r   rz   MODE_CBCr   decrypt
block_sizer/   loadsdecode)r   wordre   ivcipher	decrypteds         r   r0   z
Spider.aesZ   s_    23cllB/&..493>>J	zz)**7344r   c                    	 t        |      }|dz  }|dz  }|dz  }|dz  }t        |      j                  d      }t        |      j                  d      }|dkD  r$t        |      j                  d      }| d| d| S | d| S #  Y yxY w)Ni  <      r   :rY   )intstrzfill)r   secondshoursremaining_secondsminutesformatted_minutesformatted_secondsformatted_hourss           r   rO   zSpider.dtima   s    	'lGtOE '$'2-G 1B 6 #G 2 21 5 #$5 6 < <Q ?qy"%e*"2"21"5)*!,=+>a@Q?RSS+,A.?-@AA	s   A;B >B B	c                     | j                  d      }|sIt        t        t        j                                     }| j	                  |      }| j                  d|       |S )Nr   )getCacher   r   timer   setCache)r   r   ts      r   r   zSpider.getdidt   sH    mmE"C		$%A((1+CMM%%
r   c                     t        t        t        j                         dz              }| j                  |dd       |fS )Ni        )r   r   r   r   )r   r   s     r   getsignzSpider.getsign|   s6    
c$))+$%
&xx!A!!r   c           
      J   |t        | j                        k\  s||k\  ryddj                  t        j                  t
        j                  t
        j                  z   t        j                  dd                   d| j                  |    d}	 | j                         \  }}| d}d	| j                  ||d
}| j                  dddd}| j                  |||      }	|	j                          |	j                         d   }
|
d   |
d   |fS #  | j                  |dz   |      cY S xY w)NrY   zhttps://   
   )r6   .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-Agentrk   r   sUdafe13)deviceIdttcodechCode)r/   r&   r(   r   	imgDomain   )lenhsr^   randomchoicesstringascii_lowercasedigitsrandintr   r   postraise_for_statusr/   r   )r   imax_attemptscurrent_domainsignr   r   r&   r(   r3   data2s              r   r   zSpider.gettoken   sF   DGG\ 1#BGGFNN6;Q;QTZTaTa;aekesestuwyez,{$|#}}~  @D  @G  @G  HI  @J  K  KP  Q	4<<>FD#$$67C W HH14;G !%R8TDIIcgI>E""$JJL(E>5#5nDD	4==1l33s   A;D	 	D"c                 d    | j                         \  }}d| j                  ||| j                  d}|S )Nr   )r   rk   r   r   ri   )r   r   r   )r   r   r   hendas       r   r&   zSpider.headers   s7    ||~Q SqtDJJH r   c                     ddi}| j                  | j                   |d    |      }|j                  j                  d      j	                  d      d   }| j                  |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&   rM   splitimgcontent)r   rv   r&   r(   r@   base64_datas         r   ru   zSpider.action   sz    `bzzTZZLu7zI\\n-33C8;hht||S.AT;''r   r(   lengthre   c           	        
 d
dd
fd}fd}fd} ||      r|S  ||      r|S  ||      r|S |j                  d      }t        |      }t        |      D ]  }	||	xx   ||	t        |      z     z  cc<     t	        |      S )Ns   GIFs   s   PNG

c                 4    t        |       dkD  xr | 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        t9q=4T"1X_4r   c                 4    t        |       dkD  xr | 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                 :    t        |       dkD  xr | 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'    t9q=:T!AY#a(%::r   ry   )r|   	bytearrayranger   bytes)r   r(   r   re   r   r   r   	key_bytesr4   r   r   r   r   s             @@@r   r   z
Spider.img   s    1	5	5	; 't,K(.K(.K

7+It_F6]q	Yq3y>'9::	 #= r   N)rY   )1)r   r   )__name__
__module____qualname__r   r   r   r   r   r7   r9   rU   rc   rg   rs   rw   r   r0   rO   r   r   r   r&   ru   r   r   r   r   r   r   r   r   r      s    
 
BB "
5&"4$(! !s ! !r   r   )r/   r   r   sysr   base64r   Crypto.Cipherr   Crypto.Hashr   Crypto.Util.Paddingr   rR   r1   base.spiderr   r   r   r   <module>r      sC       
     %   j!V j!r   