
    hS                         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 xZS )r   c                 |    t                                                       d| _        dd| j        dz   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Referer)super__init__baseheaders)self	__class__s    *   /storage/emulated/0/纯福利/PY1/91RB1.pyr	   zSpider.__init__   s`    (>DI  _L  az  GK  GP  SV  GV  PW  PW    c                     dS )Nu   91热爆 r   s    r   getNamezSpider.getName   s    jjr    c                     |pd| _         ddiS )Nr   classmovie)extend)r   r   s     r   initzSpider.init	   s    V\rt{7GBT;Tr   c                 F    t          t          j        d|                    S )Nz\.(m3u8|mp4)(\?|$))boolresearch)r   urls     r   isVideoFormatzSpider.isVideoFormat
   s    bi8Ms.S.S)T)T"Tr   c                     dS )NFr   r   s    r   manualVideoCheckzSpider.manualVideoCheck   s    uur   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   s    7>^n5o5o  @N  [i  rj  rj  zH  Uf  lg  lg  wA  NY  iZ  iZ  jo  |G  \H  \H  X`  mU  JV  JV  5W  +X  $X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   sq    NN4#5#56F#L#LMMM\\\txx(F1(F(FGGGQWY[P\I\I\I\I\I\I\\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   r0   r:   	pagecountlimittotalr1   )r   tidpgr,   r   r6   s         r   categoryContentzSpider.categoryContent   s    NN4#5#5c2#>#>RNHHH  	Q  	Q  	Qtxx(E!(E(EFFFXZdfuv  BD  OP  PQ  PQ  IQ  IQ  IQ  IQ  IQ  IQ  	Q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_urlr0   )
_ensure_idr
   fetchr   hasattrhtmlrI   joinxpathstrip_abs_urlr4   r5   _cover_fallbackstr)r   idsvid
detail_urlnamepicrdocogstwsr6   vods               r   detailContentzSpider.detailContent   s   ooc!f%%ty4P4P#4P4P4PzYhcfYhYhRVprjm		K

:t|RY]
^^A 5WQ'' 5ii'' 577399^#<#<==CCEEMD))$KLLCTWT]T]  _G  UH  UHc,/T#a&,,...6Sc!fllnnnQSC4$--"4"4CJJJtxx(Ia(I(IJJJJJJJJJ3$..s33CStRTbduw  IK  ^d  vE  @C  vE  vE  F  Fs   DD5 5
E!?EE!r/   c                 8   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   r/   r9   zsearchContent error: r;   r   r0   r:   r>   r@   )urllibparsequoter
   rstripr2   r4   r5   )r   keyquickrB   key_encr   r6   s          r   searchContentzSpider.searchContent#   s    ,$$S))DI1Q1Qw1Q1Q1Q399CJJsOOi"iii7cNN3RN000  	B  	B  	Btxx(C(C(CDDDVXbdst  @A  NB  NB  GB  GB  GB  GB  GB  GB  	Bs   A& &
B0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   rG   rH   verifystreami  zm3u8 head status=z, fallback to direct anywayzplayerContent HEAD error: r   r   )rk   playUrlr   header)rS   intrT   r   status_coder5   r4   )	r   flagidvipFlagsr^   groupm3u8rb   r6   s	            r   playerContentzSpider.playerContent(   s    oob!!3s88s3xx$+G5d%dd#ddPSddd	J

4qRV_clp
qqA}##TXX.l!-.l.l.l%m%m%mIIItxx(HQ(H(HIIIIIIIIIr$$,OOOs   A	B 
B;B66B;c                     d S r#   r   )r   params     r   
localProxyzSpider.localProxy0   s    r   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&   r/   
categories)r&   r)   r*   )rY   r\   
startswithr
   )r   rA   rB   pathpage_suffixs        r   r3   zSpider._buildListUrl1   s    yy~~1!1cRTggY\nnRbe;??<((  	UD4i,i,iuyu~  sU  sU  BF  sU  HS  sU  sU  lU)11d1K111r   c                     |s|S |                                 }|                    d          rd|z   n |                    d          r
| j        |z   n|S )Nz//zhttps:r   )rY   r   r
   )r   r   us      r   rZ   zSpider._abs_url5   sU    3JIIKK ||D11bx!||VYIZIZ8a	A`abr   c                     |sdS |                     d          d                                                              d          d         S )Nr   ,r    )splitrY   )r   srcsets     r   _parse_srcset_firstzSpider._parse_srcset_first9   sB     bb||C  #))++11#66q99r   c                 d    t          |          }||dz  z
  }d| d| dS # t          $ r Y dS w xY w)Nrs   z,https://rimg.iomycdn.com/videos_screenshots/r   z/preview.jpgr   )ry   r4   )r   r^   ivr~   s       r   r[   zSpider._cover_fallback<   sc    c((RB"t)$4E  >Elq  >E  >Etv  >E  >E  >E  7E####s   ! 
//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 )NrF   )r   rG   r;   r   ri   z&//main//a[contains(@href, "/videos/")]hrefr   z/videos/(\d+)/z/loginz.//imgaltsrczdata-srczdata-originalzdata-srcsetr   rE   zdata:)rK   rL   rM   rO   i'  r<   r=   )rV   rT   r   rI   rX   setgetr   r   r~   addrY   r   rZ   r   r[   appendr\   )r   r   r:   rc   nodesvideosseenar   mr^   titleimgimra   s                  r   r2   zSpider._listPage?   s>   ii

3b
IINOO;DqSTUUU!ii(PQQSUWZW\W\tv 	a 	aA55==&BDBI6G,N,N2D(((''!**Cd{{HHHSMMM25QWWX->->s ;VbffUmm&9r%@%@%B%BUvve}}[z(:(:[bff_>U>U[Y[bbddk$":":266-;P;P;jTVTZTZ[cTdTd;jhj"k"kCmmC((6<R..00%#,_s__ER#..11R9M9Mc9R9R3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   rS   zSpider._ensure_idS   s7    IhA''a0K


SVV)Kr   )r   )r/   )__name__
__module____qualname__r	   r   r   r   r!   r$   r-   r7   rC   rg   rq   r   r   r3   rZ   r   r[   r2   rS   __classcell__)r   s   @r   r   r      sT       W W W W W(((TTTTTTT,,, X  X  X] ] ]Q Q Q  B B B B
P P P -,,2 2 2c c c: : :$ $ $_ _ _ _(L L L L L L Lr   r   )
r   systimeurllib.parserj   r   r   base.spiderr   
BaseSpiderr   r   r   <module>r      s    " " " " " " " " " " " " " " " "     , , , , , ,OL OL OL OL OLZ OL OL OL OL OLr   