
    #i&                     ~    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Z
n# e$ r dZ
Y nw xY w G d d          ZdS )	    N)	b64encode)AES)unpadTFc                       e 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 Zd Zd Zi i dZ ed           Zd ZdS )Spiderc                 
   d| _         d| _        d| _        ddddd| j        d	| _        g | _        d
}|                    d          D ];}d|v r5|                    d          \  }}| j                            ||d           <d S )Nu   玩物社区zhttps://wanwuu.com/z.https://via.placeholder.com/400x225?text=VideozvMozilla/5.0 (Linux; Android 13; SM-S901U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Mobile Safari/537.36zJtext/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8zh-CN,zh;q=0.9,en;q=0.8zgzip, deflatez
keep-alive)
User-AgentAcceptAccept-LanguagezAccept-Encoding
ConnectionRefereru}   国产SM$guochan-sm#日韩SM$rihan-sm#欧美SM$oumei-sm#直播回放$zhibo-huifang#SM小说$novels/new#玩物社区$posts/all#$)	type_nametype_id)namehostdefault_picheadersclassessplitappend)selfcategory_stritemr   paths        1   /storage/emulated/0/纯福利/PY1/玩具社区.py__init__zSpider.__init__   s    "	)	K Sb8.&y
 
  W &&s++ 	J 	JDd{{!ZZ__
d##$4$H$HIII	J 	J    c                    t           s|S 	 ddddd}t          j        ||d          }|j        dk    r| j        S d	}d
}t          j        |t
          j        |          }t          |	                    |j
                  t
          j                  }t          |                                          }d| S # t          $ r#}	t          d|	            | j        cY d}	~	S d}	~	ww xY w)uP   
        下载并解密加密图片，返回 base64 格式直接显示
        zsMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.7390.55 Safari/537.36z@"Not/A)Brand";v="8", "Chromium";v="141", "Google Chrome";v="141"zhttps://xgne8.dyxobic.ccr	   )r
   z	sec-ch-uaOriginr      r   timeout   s   f5d965df75336270s   97b60394abc2fbe1zdata:image/jpeg;base64,u   解密图片失败: N)
HAS_CRYPTOrequestsgetstatus_coder   r   newMODE_CBCr   decryptcontent
block_sizer   decode	Exceptionprint)
r   img_urlimg_headersresponsekeyivcipherptb64_codees
             r   _decrypt_piczSpider._decrypt_pic$   s     	N	$ T_4#<	 K  |G[!LLLH#s**'' &C$BWS#,33F v~~h&677HHB !}}++--H 8X777 	$ 	$ 	$,,,---#######	$s#   /B7 A;B7 7
C$CC$C$c                     g S N r   s    r   getDependencezSpider.getDependenceK   s    BYr     c                     d S r>   r?   )r   extends     r   initzSpider.initL         r    c                     dS )NFr?   r   urls     r   isVideoFormatzSpider.isVideoFormatM   s    r    c                     d S r>   r?   r@   s    r   manualVideoCheckzSpider.manualVideoCheckN   rF   r    c                     | j         S r>   )r   r@   s    r   getNamezSpider.getNameO   s	    di'r    c                     d| j         iS )Nclass)r   )r   filters     r   homeContentzSpider.homeContentP   s    7DL*A#Ar    c                 2    |                      dddi           S )Nz
guochan-sm1F)categoryContentr@   s    r   homeVideoContentzSpider.homeVideoContentQ   s    t';';L#uVX'Y'Y Yr    c                 @   g }d}t          j        ||t           j                  D ]w}t          j        d|          }|rd|                    d          vr2|                    d          }d}dD ]B}t          j        ||          }	|	r)|	                    d                                          } nC|sd}
dD ]<}t          j        ||          }|r#|                    d          }|rd|vrd	|vr|}
 n=|                     |
          }
d
|
v r|                     |
          }
d}t          j        d|          }|r|                    d          }|                    |                     |          | 	                    |          |
r|
n| j
        |d           y|S )u:   提取视频列表，优先使用 data-src 懒加载图片z1<div class="video-item"[^>]*>(.*?)</div>\s*</div>zhref="([^"]+)"z/videos/   rB   )zalt="([^"]+)"ztitle="([^"]+)"z<a[^>]*>\s*([^<]+)\s*</a>)zdata-src="([^"]+)"zdata-lazy-src="([^"]+)"zlazy-src="([^"]+)"zsrc="([^"]+)"blob:poster_loading	rulbbz.cnz>(\d{1,2}:\d{2}(?::\d{2})?)<)vod_idvod_namevod_picvod_remarks)refindallSsearchgroupstrip_absr<   r   clean_titler   )r   htmlvideospatternblock
href_matchhreftitle	t_patternt_matchpic	p_patternp_matchpic_urlremarkr_matchs                   r   _parse_videoszSpider._parse_videosT   s   FZrt44 -	 -	E#4e<<J :3C3CA3F3F!F!F##A&&D Ea  	)Iu55 #MM!,,2244EE   Cy  	)Iu55 %mmA..G 7'#9#9>NV]>]>]% ))C..Cc!!'',, Fi ?GGG * q))MM))D// ,,U33"%;334+;%	      r    c                    	 t          |          }|dv r"|dk    r| j         | d| dn| j         | d}n#|dk    r| j         d| d| dn| j         d| d}t          j        || j        d          }d|_        |                     |j                  }|                     ||          S # t          $ r2}t          d	|            |                     g |          cY d }~S d }~ww xY w)
N)z
novels/newz	posts/allrX   /page//zvideos/
   r$   utf-8u   分类失败: )intr   r(   r)   r   encodingrw   text_pager1   r2   )	r   tidpgrQ   rD   rI   rri   r;   s	            r   rU   zSpider.categoryContent   s=   	&RB1118:Q4C44r4444tyDXRUDXDXDX?AAvv;;3;;b;;;;diKfKf`cKfKfKfS$,CCCA AJ''//F::fb))) 	& 	& 	&&1&&'''::b"%%%%%%%%	&s   B*B- -
C)7'C$C)$C)rT   c                    	 t          |          }t          j                            |          }|dk    r| j         d| d| dn| j         d| d}t          j        || j        d          }d|_        | 	                    |j
                  }|                     ||          S # t          $ r2}t          d|            |                     g |          cY d }~S d }~ww xY w)	NrX   zvideos/search/ry   rz   r{   r$   r|   u   搜索失败: )r}   urllibparsequoter   r(   r)   r   r~   rw   r   r   r1   r2   )	r   r6   quickr   wdrI   r   ri   r;   s	            r   searchContentzSpider.searchContent   s   	&RB##C((BACaTY==b======PTPYMnMnikMnMnMnCS$,CCCA AJ''//F::fb))) 	& 	& 	&&1&&'''::b"%%%%%%%%	&s   B#B& &
C"0'CC"C"c                 H   |d                              d          r|d         n|                     |d                   }	 t          j        || j        d          }d|_        |j        }d}t          j        d|t          j	                  }|r@t          j
        d|                    d	                    d                                         }d}d
D ]R}t          j        ||t          j	                  }	|	r.d|	                    d	          vr|	                    d	          } nS|                     |          }d|v r|                     |          }d}
t          j        d|t          j	                  }|r|                    d	          }
d| }||r|                     |          nd|r|n| j        |
r|                     |
          n|| j        |r|                     |          nd d| d}d|giS # t"          $ r }t%          d|            dg icY d }~S d }~ww xY w)Nr   httpr{   r$   r|   rB   z<title>(.*?)</title>u   [-—_]rX   )z3<meta[^>]*property="og:image"[^>]*content="([^"]+)"z<video[^>]*poster="([^"]+)"zdata-poster="([^"]+)"rY   r[   z2<meta[^>]*name="description"[^>]*content="([^"]*)"zvideo://u   视频u   播放r   )r\   r]   r^   vod_contentvod_play_fromvod_play_urllistu   详情失败: )
startswithrf   r(   r)   r   r~   r   r`   rc   Ir   rd   re   r<   rg   r   r   r1   r2   )r   arrayvidr   rh   rn   title_matchrq   pic_pattern	pic_matchdesc
desc_matchplay_urlvodr;   s                  r   detailContentzSpider.detailContent   sp   (--f55NeAhh499U1X;N;N-	 S$,CCCA AJ6DE)$;T24HHK N[->->q-A-ABB1EKKMMC   
 Ik4>>	 	0B0B!B!B#//!,,CE ))C..Cc!!'',, D#XZ^`b`deeJ +!''**'#''H 7<JD,,U333("%;334+;9=Ht//5555!%>C#Q4#3#3E#:#:#: ^ ^T\ ^ ^ C SE?" 	  	  	 &1&&'''B<	 s    F6G7 7
H!HH!H!c                     dd|| j         dS )Nr   rB   )r   playUrlrI   headerr   )r   flagidvipFlagss       r   playerContentzSpider.playerContent   s    l	
 
 	
r    c                     |r|                     d          rdS |                     d          rd|z   S |                     d          r|n$t          j                            | j        |          S )NrY   rB   z//zhttps:r   )r   r   r   urljoinr   rH   s     r   rf   zSpider._abs   sp     	cnnW-- 	2>>$ 	"c>!nnV,,Vss&,2F2FtyRU2V2VVr    c                 ,    |t          |          ddddS )Ni'     i?B )r   page	pagecountlimittotal)r}   )r   ri   r   s      r   r   zSpider._page   s&    GG
 
 	
r    c                     |sdS t          j        dd|          }t          j        dd|          }|                                S )NrB   z<[^>]+>z\s+ )r`   subre   )r   rn   s     r   rg   zSpider.clean_title   s@    RRz2u--vsE**{{}}r    )playerrQ   c                     | j         S r>   r   r@   s    r   <lambda>zSpider.<lambda>   s    4< r    c                     g S r>   r?   )r   params     r   
localProxyzSpider.localProxy   s    	r    N)rB   )rT   )__name__
__module____qualname__r   r<   rA   rE   rJ   rL   rN   rR   rV   rw   rU   r   r   r   rf   r   rg   configpropertyr   r   r?   r    r   r   r      s-       J J J($$ $$ $$N '&&####...$$$'''AAAYYY4 4 4n& & &"& & & &/  /  / b
 
 
W W W
 
 
   b))FX//00F    r    r   )r`   urllib.parser   r(   base64r   Crypto.Cipherr   Crypto.Util.Paddingr   r'   ImportErrorr   r?   r    r   <module>r      s    				           !!!!!!))))))JJ   JJJo o o o o o o o o os   # --