
    h^                         d dl Z d dlZd dlZd dlZej                            d           d dlmZ	  G d de	          ZdS )    Nz..)Spiderc                        e Zd Z f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d ZddZd Zd fd	Z xZS )r   c                     t                                                       d| _        dd| j        dz   d| _        d| _        d S )Nzhttps://www.91rb.comzkMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36zzh-CN,zh;q=0.9,en;q=0.8/)z
User-AgentzAccept-LanguageRefererz.https://vpsdn.leuse.top/proxy?single=true&url=)super__init__baseheaders
proxy_base)self	__class__s    )   /storage/emulated/0/纯福利/PY1/91rb.pyr	   zSpider.__init__   sN    *	 H8y3
 

 K    c                     dS )Nu   91热爆 r   s    r   getNamezSpider.getName   s    zr    c                     |pd| _         ddiS )Nr   classmovie)extend)r   r   s     r   initzSpider.init   s    l!!r   c                 F    t          t          j        d|                    S )Nz\.(m3u8|mp4)(\?|$))boolresearch)r   urls     r   isVideoFormatzSpider.isVideoFormat   s    BI3S99:::r   c                     dS )NFr   r   s    r   manualVideoCheckzSpider.manualVideoCheck   s    ur   c                     d S Nr   r   s    r   destroyzSpider.destroy   s    r   c           	      :    ddddddddddd	d
dddddddgiS )Nr   u   最新上传latest-updates)	type_nametype_idu   热门视频most-popularu   收藏最多most-favouritedu   日本AVz	tags/av2/javz	tags/jav/u   韩国z&tags/20c3f16d021b069ce3af1da50b15bd83/r   )r   filters     r   homeContentzSpider.homeContent!   sY    ,9IJJ,HH,9JKK([AA#<<&3[\\	
 		
r   c                     	 |                      |                     dd                    S # t          $ r&}|                     d|            dg icY d }~S d }~ww xY w)Nr'   1zhomeVideoContent error: list	_listPage_buildListUrl	Exceptionlog)r   es     r   homeVideoContentzSpider.homeVideoContent-   s}    	 >>$"4"45Es"K"KLLL 	  	  	 HH333444B<	 s   (+ 
AAAAc                     	 |                      |                     ||          |          S # t          $ r*}|                     d|            g |ddddcY d }~S d }~ww xY w)NpagezcategoryContent error:    0   r   r1   r;   	pagecountlimittotalr2   )r   tidpgr-   r   r7   s         r   categoryContentzSpider.categoryContent4   s    	U>>$"4"4S""="=B>GGG 	U 	U 	UHH2q22333RRSTTTTTTTT	Us   *- 
A!AA!A!c           
      8   |                      |d                   }| j         d| d}d| }d}	 |                     || j        dd          }|rt	          |d	          r|                     |j                  }|rd                    |                    d
                    	                                p|}|                    d          }|                    d          }	|r|d         	                                n|	r|	d         	                                nd}|r| 
                    |          }n/# t          $ r"}
|                     d|
            Y d }
~
nd }
~
ww xY w|s|                     |          }t          |          ||dddddd| d	}d|giS )Nr   z/videos/r      视频 r   
   T)r   timeoutallow_redirectstextz//h1//text()z%//meta[@property="og:image"]/@contentz&//meta[@name="twitter:image"]/@contentzdetailContent fetch error: 91RBu   正片$)	vod_idvod_namevod_picr(   vod_yearvod_remarksvod_contentvod_play_fromvod_play_urlr1   )
_ensure_idr
   _fetch_with_proxyr   hasattrhtmlrJ   joinxpathstrip_abs_urlr5   r6   _cover_fallbackstr)r   idsvid
detail_urlnamepicrdocogstwsr7   vods               r   detailContentzSpider.detailContent;   s   ooc!f%%	113111
	8&&z4<QSei&jjA 1WQ'' 1ii'' 177399^#<#<==CCEEMD))$KLLC))$LMMC,/T#a&,,...6Sc!fllnnnQSC 1"mmC00 	8 	8 	8HH616677777777	8 	,&&s++C#hh#+cOO

 

 s   DD5 5
E!?EE!r0   c                 :   t           j                            |          }| j         d| d}|dk    r|                    d          d| dz   }	 |                     ||          S # t          $ r)}|                     d|            g |dddcY d }~S d }~ww xY w)	Nz/search/r   r0   r:   zsearchContent error: r<   r   r1   r;   r?   rA   )urllibparsequoter
   rstripr3   r5   r6   )r   keyquickrC   key_encr   r7   s          r   searchContentzSpider.searchContent\   s    ,$$S))..G...99**S//IIII-C	H>>#B>/// 	H 	H 	HHH0Q00111QGGGGGGGG	Hs   A' '
B1BBBc                    |                      |          }t          |          t          |          dz  z
  }d| d| d| d}	 |                     || j        dddd          }|j        dk    r|                     d	|j         d
           n/# t          $ r"}|                     d|            Y d }~nd }~ww xY wdd|| j        dS )N  z0https://91rbnet.gslb-al.com/hls/contents/videos/r   z.mp4/index.m3u8   T)r   rH   rI   verifystreami  zm3u8 head status=z, fallback to direct anywayzplayerContent HEAD error: r   r   )rl   playUrlr   header)rT   intrU   r   status_coder6   r5   )	r   flagidvipFlagsr_   groupm3u8rc   r7   s	            r   playerContentzSpider.playerContentg   s   oob!!CCHHtO,d%dd#ddPSddd	7&&tT\1^bkox|&}}A}##WQ]WWWXXX 	7 	7 	7HH5!5566666666	7r$$,OOOs   A	B 
B;B66B;c                     d S r$   r   )r   params     r   
localProxyzSpider.localProxyt   s    tr   c                     |                     d          pd}t          |          dk    rd| dnd}|                    d          s|dv r| j         d| | S | j         d| | S )Nr   r'   r0   
categories)r'   r*   r+   )rZ   r]   
startswithr
   )r   rB   rC   pathpage_suffixs        r   r4   zSpider._buildListUrlw   s    yy~~1!1#&r77c>>i"iiiis??<(( 	6D4i,i,ii55$5555)11d1K111r   c                     |s|S |                                 }|                    d          rd|z   n |                    d          r
| j        |z   n|S )Nz//zhttps:r   )rZ   r   r
   )r   r   us      r   r[   zSpider._abs_url~   sX     	JIIKK ||D11bx!||VYIZIZ8a	A`abr   c                     |sdS |                     d          d                                                              d          d         S )Nr   ,r    )splitrZ   )r   srcsets     r   _parse_srcset_firstzSpider._parse_srcset_first   sE     	2||C  #))++11#66q99r   c                 f    	 t          |          }||dz  z
  }d| d| dS # t          $ r Y dS w xY w)Nrt   z,https://rimg.iomycdn.com/videos_screenshots/r   z/preview.jpgr   )rz   r5   )r   r_   ivr   s       r   r\   zSpider._cover_fallback   s[    	SB"t)$EZ%ZZ"ZZZZ 	 	 	22	s   " 
00c                    |                      |                     || j        d          j                  }|g |dddS |                    d          g t                      }}}|D ]}|                    d          pd}t          j        d	|          }	|	rd
|v r6|		                    d          }
|
|v rP|
                    |
           d}|                    d          }|r|d         }|                    d          pd                                }|                    d          p+|                    d          p|                    d          pd                                }|s?|                     |                    d          p|                    d          pd          }|                     |          }n|j        pd                                }d}|pd|
 }|r|                    d          r|                     |
          }|                    |
||dd           |t#          |          ddddS )NrG   r   rH   r<   r   rj   z&//main//a[contains(@href, "/videos/")]hrefr   z/videos/(\d+)/z/loginz.//imgaltsrczdata-srczdata-originalzdata-srcsetr   rF   zdata:)rL   rM   rN   rP   i'  r=   r>   )rW   rU   r   rJ   rY   setgetr   r   r   addrZ   r   r[   r   r\   appendr]   )r   r   r;   rd   nodesvideosseenar   mr_   titleimgimrb   s                  r   r3   zSpider._listPage   sQ   ii..sDLRT.UUZ[[;1qIII!ii(PQQSUWZW\W\tv 	a 	aA55==&BD	+T22A D((''!**Cd{{HHSMMME''(##C 	V,"3355vve}}[z(:(:[bff_>U>U[Y[bbdd d22266-3H3H3bBFFS[L\L\3b`bccCmmC((2,,..,_s__E 0#..11 0**3//MMSe\^__````D		r\]^^^r   c                     t          j        dt          |                    }|r|                    d          nt          |          S )Nz(\d+)r<   )r   r   r]   r   )r   sr   s      r   rT   zSpider._ensure_id   s8    IhA''*qwwqzzzCFF*r   NrG   c                     | j          t          j                            |           }|| j        } t                      j        |f||d|S )u!   通过代理服务器获取内容Nr   )r   rk   rl   rm   r   r   fetch)r   r   r   rH   kwargs	proxy_urlr   s         r   rU   zSpider._fetch_with_proxy   sV    A(:(:3(?(?AA	?lGuww}YSSSFSSSr   )r   )r0   )NrG   )__name__
__module____qualname__r	   r   r   r    r"   r%   r.   r8   rD   rh   rr   r   r   r4   r[   r   r\   r3   rT   rU   __classcell__)r   s   @r   r   r      s       K K K K K  " " " "; ; ;    

 

 

     U U U  B	H 	H 	H 	HP P P  2 2 2c c c: : :
  _ _ _ _@+ + +T T T T T T T T T Tr   r   )
r   systimeurllib.parserk   r   r   base.spiderr   
BaseSpiderr   r   r   <module>r      s    " " " " " " " " " " " " " " " "     , , , , , ,tT tT tT tT tTZ tT tT tT tT tTr   