
    ~hA                         d dl Z 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mZ d dl	m
Z
 d dl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	b64encode)urlparse)AES)unpad)PyQueryz..)Spiderc                       e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 ZddZd Zd ZddZd Zd Zd Zd Zd ZddZd Zd Zd Zd ZdS )r	    c                 ^   t          j        |          | _        n#  i | _        Y nxY wdddddd| _        |                                 | _        | j                            | j        | j         dd           |                     d	| j                    t          d	| j                    d S )
NzuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36ztext/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7zzh-CN,zh;q=0.9z
keep-alivezno-cache)z
User-AgentAcceptzAccept-Language
ConnectionzCache-Control/)OriginRefereru   使用站点: )	jsonloadsproxiesheadersget_working_hosthostupdatelogprint)selfextends     6   /storage/emulated/0/纯福利/PY1/51吸瓜动态版.pyinitzSpider.init   s    :f--DLL bt||| R `/&'
 
 ))++	ty	___MMNNN-$)--...*ty**+++s    	&c                     dS )Nu   🌈 51吸瓜 r   s    r   getNamezSpider.getName'   s        c                 :    t          fddD                       S )Nc              3   $   K   | ]
}|pd v V  dS )r   Nr    ).0exturls     r   	<genexpr>z'Spider.isVideoFormat.<locals>.<genexpr>,   s,      JJ#339"%JJJJJJr#   ).m3u8z.mp4z.ts)any)r   r(   s    `r   isVideoFormatzSpider.isVideoFormat*   s'    JJJJ1IJJJJJJr#   c                     dS )NFr    r!   s    r   manualVideoCheckzSpider.manualVideoCheck.   s    ur#   c                     d S )Nr    r!   s    r   destroyzSpider.destroy1   s    r#   c                    	 t          j        | j        | j        | j        d          }|j        dk    rg g dS |                     |j                  }i }g }g d}|D ]} ||                                          D ]} |d          }	|		                    d          pd
                                }
|	                                pd
                                }|
r|
d	k    s|si|                    ||
d
           |r n|sddd
ddd
ddd
g}||d<   |                      |d                    |d<   |S # t          $ r!}t          d|            g g dcY d }~S d }~ww xY w)N   r   r   timeout   )classlist)z.category-list ul liz.nav-menu liz.menu liz	nav ul liahrefr   #)	type_nametype_idu   首页r   u   最新z/latest/u   热门z/hot/r6   #index article ar7   zhomeContent error: )requestsgetr   r   r   status_codegetpqtextitemsattrstripappendgetlist	Exceptionr   )r   filterresponsedataresultclassescategory_selectorsselectorklinkr9   namees                r   homeContentzSpider.homeContent4   s   .	-|DIt|T\cefffH#s**!#R000::hm,,DFG" " " /  h--// 
 
A1S66D IIf--3::<<D IIKK-24466D !43;;d; NN%)#'$ $      E  "*s;;"*zBB"*w?? &F7O!\\$$/A*B*BCCF6NM 	- 	- 	-+++,,,,,,,,,,,	-s#   6D; DD; ;
E&E!E&!E&c                 >   	 t          j        | j        | j        | j        d          }|j        dk    rdg iS |                     |j                  }d|                      |d                    iS # t          $ r }t          d|            dg icY d }~S d }~ww xY w)Nr2   r3   r5   r7   z$#index article a, #archive article azhomeVideoContent error: )r>   r?   r   r   r   r@   rA   rB   rG   rH   r   )r   rJ   rK   rS   s       r   homeVideoContentzSpider.homeVideoContente   s    	 |DIt|T\cefffH#s**|#::hm,,DDLL.T)U)UVVWW 	  	  	 0Q00111B<	 s"   5A2 9A2 2
B<BBBc                 r   	 d|v r,|                     dd          }|                     |          }n|                    d          r$|r|dk    r| j         | d| d}n| j         | }n| j         d| }t	          j        || j        | j        d          }|j        dk    rg |d	d
ddS | 	                    |j
                  }	|                      |	d          |          }i }
||
d<   ||
d<   d|v rd	nd|
d<   d
|
d<   d|
d<   |
S # t          $ r$}t          d|            g |d	d
ddcY d }~S d }~ww xY w)N@folderr   r   1zpage/r2   r3   r5      Z   r   )r7   page	pagecountlimittotal$#archive article a, #index article ar7   r\   i r]   r^   i?B r_   zcategoryContent error: )replacegetfod
startswithr   r>   r?   r   r   r@   rA   rB   rG   rH   r   )r   tidpgrI   r   idvideosr(   rJ   rK   rL   rS   s               r   categoryContentzSpider.categoryContentp   s   	UC[[B//R >>#&& / 2bCii!%;C;;b;;;!%1C11!Y....C#<T\4<acddd'3..$&RZ[\\\zz(-00dd+Q&R&RTWXXF#F6NF6N'0C'7'7!!UF; F7O$F7OM 	U 	U 	U/A//000RRSTTTTTTTT	Us%   B)D ,AD 
D6D1+D61D6c           	         	 |d                              d          s| j         |d          n|d         }t          j        || j        | j        d          }|j        dk    rddd| d	giS |                     |j                  }d
di}	 g } |d          r |d          	                                D ]e}|                                }|
                    d          }	|r8|	r6|                    dt          j        |	|d          z   dz   |z   dz              f|rd                    |          n |d                                          |d<   n)#   |d                                          pd|d<   Y nxY w	 g }
t                      } |d          rt!           |d          	                                d          D ]\  }}|
                    d          }|r	 t          j        |          }|                    di                               dd          }d}	 |                                                    d          }t)          d          D ]}|s n~|                    d                              d                                          pd}|                                }|r|} n(|                                                    d          }n# t.          $ r d}Y nw xY w|r|nd| }|}d}||v r| d| }|dz  }||v |                    |           |rJ|                     d | d!|            t5          d | d!|            |
                    | d"|            #  Y xY w|
r_|                     d#t7          |
           d$           t5          d#t7          |
           d$           d%                    |
          |d&<   nd'| |d&<   n# t.          $ r}d(| |d&<   Y d }~nd }~ww xY wd|giS # t.          $ r1}t5          d)|            ddd*|r|d         nd d	gicY d }~S d }~ww xY w)+Nr   httpr2   r3   r5   r7   u   51吸瓜u   页面加载失败$)vod_play_fromvod_play_urlrk   z.tags .keywords ar9   z[a=cr:)rf   rR   z/]z[/a] z.post-titlevod_contentu   51吸瓜视频z.dplayerrZ   )startzdata-configvideor(   r      z
h2, h3, h4u   视频   u   解析到视频: z -> $u   拼装播放列表，共u   个r:   rl   u   未找到视频源$u   视频解析失败$zdetailContent error: u   详情页加载失败$)rc   r   r>   r?   r   r   r@   rA   rB   rC   rD   rF   r   dumpsjoinset	enumerater   parentseqrangefindrE   rH   addr   r   len)r   idsr(   rJ   rK   vodclistrP   titler9   plist
used_namescconfig_attrconfig	video_urlep_nameparent_heading	base_namerR   countrS   s                           r   detailContentzSpider.detailContent   sv   N	03A0A0A&0I0IUTY(A(((sSTvC|Ct|]_```H#s**:OjehOjOj!k!k lmm::hm,,D"J/C
T4+,, u!T"566<<>> u u ! vvf~~  uT u!LLDJdTY?Z?Z4[4[)[^b)bej)jms)sttt8=%]SXXe___44CVCVC[C[C]C]M""T%)T-%8%8%=%=%?%?%SCSM"""0B UU
4
## #) )$$z*:*:*@*@*B*B! L L L ") ")1&'ff]&;&;&  )))-K)@)@,2JJw,C,C,G,Gr,R,R	*,!1-.YY[[^^A->->F-21XX %H %H/5(<uu28++l2K2K2N2Nq2Q2Q2V2V2X2X2^\^29--//+2 )26=G,1E171A1A1D1DQ1G1G'0 !1 !1 !1.0GGG!17>,PGGLQLL	'0()&*j&8&8.7+A+A%+A+AD$)QJE '+j&8&8 !+t 4 4 4#, !H$(HH-V-V-V9-V-V$W$W$W$)*Sd*S*S	*S*S$T$T$T$)LLD1F1F91F1F$G$G$G) (A )D  FHHGE

GGGHHHDSZZDDDEEE*-((5//C''*E*E*EC' B B B&AC&A&AN######B SE?" 	 	 	-!--...zK{nqdydghidjdjwyK{K{||}~~~~~~~	s   A+P .P CE P $E;9P ?A&O, &A M8'B:K"!M8"K1.M80K11BM86O, 8M=:A1O, +P ,
P6P>P PP 
Q&Q QQrY   c                    	 |dk    r| j          d| d| n| j          d| d}t          j        || j        | j        d          }|j        dk    rg |dS |                     |j                  }|                      |d                    }||dS # t          $ r!}t          d	|            g |dcY d }~S d }~ww xY w)
NrY   z/search/r   r2   r3   r5   )r7   r\   r`   zsearchContent error: )r   r>   r?   r   r   r@   rA   rB   rG   rH   r   )	r   keyquickre   r(   rJ   rK   rg   rS   s	            r   searchContentzSpider.searchContent   s   	,68CiiTY2222b222	EaEa[^EaEaEaC|Ct|]_```H#s** "B///::hm,,D\\$$'M"N"NOOF"B/// 	, 	, 	,-!--...++++++++	,s$   AB <B 
B>B93B>9B>c                     |}d}|                      |          rd|v r|                     |          }d}|                     d| d|            t          d| d|            ||| j        dS )NrZ   r*   r   u   播放请求: parse=z, url=)parser(   header)r,   proxyr   r   r   )r   flagrf   vipFlagsr(   ps         r   playerContentzSpider.playerContent   s    c"" 	#~~jjooA666667773Q33c334443$,???r#   c                    |                     d          dk    r]t          j         |d         | j        | j        d          }d|j                             d          |                     |j                  gS |                     d          dk    r|                     |d                   S |                     |d                   S )	Ntypeimgr(   
   r3   r5   Content-Typem3u8)r?   r>   r   r   aesimgcontentm3ProxytsProxy)r   paramress      r   
localProxyzSpider.localProxy   s    99V%%U5\4<_abbbC77CK8P8PQQYYv&((U5\0J0J)JLLu...r#   r   c                     |rCt          | j                  r/|                                  d|                     |           d| S |S )N&url=z&type=)r}   r   getProxyUrle64)r   rK   r   s      r   r   zSpider.proxy  sS     	C%% 	0@0@0B0B-e-eRV-e-e_c-e-e&e[r#   c           
      z   |                      |          }t          j        || j        | j        d          }|j                            d          }|j                            d          rF|j        d         }t          j        || j        | j                  j                            d          }|                                                    d          }|d |	                    d                   }t          |          }|j        dz   |j        z   }d	}t          |          D ]\  }	}
|rdd
|
v r`d}t          j        ||
          }|rGt          j        |d|                     |                    d          d           d|
          ||	<   d}kd|
vrd|
vr<|
                    d          dk     r|n|}||
                    d          rdndz   |
z   }
|                     |
|
                    d          d                             d          d                   ||	<   d                    |          }dd|gS )NF)r   r   allow_redirectsutf-8Locationr   r   
r   z://TURIzURI="([^"]*)"zURI="rZ   mkey"z#EXTrj   rr   r   .?r   r5   zapplication/vnd.apple.mpegur)d64r>   r?   r   r   r   decoderE   splitrfindr   schemenetlocrw   researchsubr   groupr   rc   ru   )r   r(   ydatarK   lineslast_r
parsed_urldurliskeyindexstringpatternmatchdomains                 r   r   zSpider.m3Proxy
  s5   HHSMMS$,^cddd}##G,,=Z(( 	i-
+C<T\4<PPPX__`ghhD

""4((_ciinn_%c]]
 5(:+<<&u-- 	W 	WME6 &*	'622 #%6'3`4::ekkRSnnV\;];]3`3`3`bh#i#iE%LEV##'''-||C'8'81'<'<VV$F#V->->s-C-C'LrrMPVVF#zz&&,,s2C2CB2G2M2Mc2R2RST2UVVeyy3T::r#   c                     |                      |          }t          j        || j        | j        d          }d|j        d         |j        gS )NT)r   r   streamr5   r   )r   r>   r?   r   r   r   )r   r(   rK   s      r   r   zSpider.tsProxy&  sD    hhsmm|Ct|TXYYYT\.14<@@r#   c                     	 |                     d          }t          |          }|                    d          S # t          $ r*}t	          dt          |                      Y d }~dS d }~ww xY w)Nr   u   Base64编码错误: r   )encoder   r   rH   r   str)r   rB   
text_bytesencoded_bytesrS   s        r   r   z
Spider.e64+  s    	W--J%j11M ''000 	 	 	1Q1122222222	   8; 
A/A**A/c                     	 |                     d          }t          |          }|                    d          S # t          $ r*}t	          dt          |                      Y d }~dS d }~ww xY w)Nr   u   Base64解码错误: r   )r   r   r   rH   r   r   )r   encoded_textr   decoded_bytesrS   s        r   r   z
Spider.d644  s    	(//88M%m44M ''000 	 	 	1Q1122222222	r   c                    g d}|D ]}	 t          j        || j        | j        d          }|j        dk    rf|                     |j                  } |d          }t          |          dk    r.|                     d|            t          d|            |c S # t          $ r
}Y d}~d}~ww xY w|                     d	|d                     t          d	|d                     |d         S )
z(Get working host from known dynamic URLs)zhttps://artist.vgwtswi.xyzzhttps://ability.vgwtswi.xyzzhttps://am.vgwtswi.xyzr   r3   r5   r=   r   u   选用可用站点: Nu#   未检测到可用站点，回退: )r>   r?   r   r   r@   rA   rB   r}   r   r   rH   )r   dynamic_urlsr(   rJ   rK   articlesrS   s          r   r   zSpider.get_working_host=  s4   
 
 
   	 	C#<T\4<acddd'3..::hm44D#t$677H8}}q((!=!=!=>>>:S::;;;"


    	H|AHHIIIELOEEFFFAs   BB
B2-B2c                    g }d|v }|                                 D ]}|                    d          } |d                                          } |d                                          p |d                                          }|rq|ro|                    | |rdnd |                    dd	          |                      |d
                                                    |pd|rdnddddd           |S )Nz/mrdgr9   h2zspan[itemprop="datePublished"]z.post-meta, .entry-meta, timerX   r   r   rm   scriptfolderrectgHzG?)r   ratio)vod_idvod_namevod_picvod_remarksvod_tagstyle)rC   rD   rB   rF   ra   getimg)	r   rK   rd   rg   lrP   r8   br   s	            r   rG   zSpider.getlist[  s#   sN 	 	AvA$A23388::gaa@_>`>`>e>e>g>gA Q !"<$:II<< !		$ 4 4#{{11X;;+;+;+=+=>>#$7+,4xx"&,t<<     r#   c                    | j          | }|                     t          j        || j        | j                  j                  } |d          }g d}|D ]}|                    |            |d          }g }t           |d          	                                          D ]\  }}	|dz  }
|
                     |                    |
          d                              d          |                    |
                                          |                                  d	 |                    |
d
z             d                              d           d|	                                d           |S )Nr   z%.post-content[itemprop="articleBody"])z	.txt-appsz.line
blockquotez.tagsz.content-tabsr   r   rr   r8   r9   r   rZ   r   zdata-xkrkllgl	&type=img)r   r   r   r   )r   rA   r>   r?   r   r   rB   removerw   rC   rF   ry   rD   r   )r   rf   r(   rK   vdatarir   rg   xr   s              r   rb   zSpider.getfodn  sr    B  zz(,sDL$,WWW\]]d:;;
D
D
D""A5<<????
%**UU4[[..0011 	 	CAacAMM!!$$q''#,,++F33DDGGLLNN"..00hhyqttAaCyy7G7G7L7L_7]7]hhhffhh	      r#   c                     t          j        d|          }|r/|                    d          }|                                  d| dS dS )NzloadBannerDirect\('([^']+)'rZ   r   r   r   )r   r   r   r   )r   rB   r   r(   s       r   r   zSpider.getimg  sS    	8$?? 	++a..C&&((==s====2r#   c                     d}d}t          j        |t           j        |          }t          |                    |          t           j                  }|S )Ns   f5d965df75336270s   97b60394abc2fbe1)r   newMODE_CBCr   decrypt
block_size)r   wordr   ivcipher	decrypteds         r   r   zSpider.aesimg  sD    ! clB//&....??	r#   c                     	 t          |          S # t          $ rI}t          t          |                      t          |                    d                    cY d }~S d }~ww xY w)Nr   )pqrH   r   r   r   )r   rK   rS   s      r   rA   zSpider.getpq  sp    	,d88O 	, 	, 	,SVV+dkk'**++++++++	,s    
A$>AA$A$N)r   )rY   )r   )__name__
__module____qualname__r   r"   r,   r.   r0   rT   rV   rh   r   r   r   r   r   r   r   r   r   r   rG   rb   r   r   rA   r    r#   r   r	   r	      s          "  K K K    /- /- /-b	  	  	  U  U  UDO O Ob, , , , 
@ 
@ 
@/ / /   ; ; ;8A A A
      <   &  $    , , , , ,r#   r	   )r   randomr   sys	threadingtimebase64r   r   urllib.parser   r>   Crypto.Cipherr   Crypto.Util.Paddingr   pyqueryr   r   pathrF   base.spiderr	   r    r#   r   <module>r     s     				 



      ' ' ' ' ' ' ' ' ! ! ! ! ! !        % % % % % % ! ! ! ! ! !          @, @, @, @, @,V @, @, @, @, @,r#   