
    Q9iM&                         d dl Z d dl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)PyQuery)Sessionz..)Spiderc                   T    e Zd ZddZd Zd Zd Zd ZddZd	 Z	d
 Z
d Zd Zd ZdS )r    c                 j   d| _         dd| j         dz   d| _        t                      | _        | j        j                            | j                   i dddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'i d(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIi dJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d3d_d`dadbdcdddedfdgdhdidji dkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddd| _        d S )Nzhttps://www.tube8.comzMozilla/5.0 (Linux; Android 10; SM-G960F Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/133.0.6943.98 Mobile Safari/537.36zJtext/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8/)z
User-AgentAcceptRefereramateuru   业余自拍analu   肛交asianu   亚裔bigdicku   大屌blowjobu   口交creampieu   内射ebonyu   黑人fetishu   恋物gayu   同性hardcoreu   硬核hentaiu   动漫latinau   拉丁lesbianu   女同matureu   熟女milfu   人妻publicu   公共场所teensu   少女(18+)	threesomeu   3P/多Pzvr-pornu   VR视频zbig-titsu   巨乳blondeu   金发facialu   颜射gangbangu   群交handjobu   手淫massageu   按摩masturbationu   自慰povu   第一人称roleplayu   角色扮演squirtu   潮吹	stockingsu   丝袜studentu   学生babeu   美女bbwu   肥满brunetteu   黑发bukkakeu   颜射派对cartoonu   卡通castingu   试镜compilationu   合集cosplayCosplaycoupleu   情侣cumshotu   射精zdouble-penetrationu   双洞eurou   欧洲funnyu   搞笑z	group-sexhomemadeu   自制indianu   印度interracialu	   跨种族japaneseu   日本outdooru   户外realityu	   真人秀redheadu   红发schoolu   学校zstep-fantasyu   继亲幻想
stripteaseu	   脱衣舞toysu   玩具vintageu   经典webcamu   网络摄像头chinau   中国koreanu   韩国thaiu   泰国filipinau	   菲律宾
vietnameseu   越南	taiwaneseu   台湾z	hong-kongu   香港russianu	   俄罗斯germanu   德国frenchu   法国u   英国u   美国u	   意大利u   巴西u   捷克)britishamericanitalian	brazilianczech)hostheadersr   sessionupdatecat_map)selfextends     *   /storage/emulated/0/纯福利/py1/tube8.pyinitzSpider.init   s   +	 }by3
 

 yy##DL111
~
'-x
9@(
LUW_
x
!+X
7>
JRT\
 8
 (
 4<X
 HPQY
 x	
 "*8	
 6<X	
 HPQ_	

 ]
 

 %0

 =Fz
 
 #+H
 7?
 KUV^
 x
 "+H
 7Eh
 QVWe
 
 )1(
 =H
 T]^f
 H
 $X
 0:8
 
 
 FOP^
 x
 "+H
 7DX
 PYZc
 h
 !*8
 6J8
 H
 &x
 2=h
 IST\
 h
 !.{
 =G
 S\]e
 {
 
 
 %.x
 :B8
 N\]k
 +
 (.x
 :CH
 OWXi
  X!
   (!
  4:8!
  FPQ\!
" (#
" %0#
" <G#
$ {%
$ %-h%
$ 9A(%
 
$ X` [xZb'
 
 
    c                     ddddddddddd	dg}d
dddddddddddddgd}i }|D ]}|g||d         <   ||dS )Nu   最新视频/newest)	type_nametype_idu   类别大全/categoriesu   全部频道	/channelsu   全部明星
/pornstarssortu   排序u   最新r   )nvu   最热z/most-viewedu   评分z/bestu   最长z/longest)keynamevaluer]   )classfilters )rU   filterclassessort_filterfilter_configitems         rW   homeContentzSpider.homeContent-   s    (Y??(]CC([AA(\BB	
 %h$$00)),,	B
    	; 	;D.9]M$y/** ];;;rY   c                 2    |                      ddd d           S )Nr[      )categoryContent)rU   s    rW   homeVideoContentzSpider.homeVideoContentB   s    ##Iq$===rY   c           	         |i }g }|dk    r|                      d          } |d                                          D ]}|                    d          }|rd|v r|                    d                              d          d         }	|                                                    dd	                                          }
| j                            |	|
          }|	                    | 
                    ||d	d
                     ͐nL|dk    rMt          |          dk    rd| dnd}|                      |          } |d                                          D ]}|                    d          }|rd|v r|                    d                                          p:|                    d                                          p|                                }|                    d                              d          p)|                    d                              d          pd	}|	                    | 
                    |||d                     n|dk    r%t          |          dk    rd| dnd}|                      |          } |d                                          D ]}|                    d          }|rd|v r|                    d                                          p|                                }|                    d                              d          p)|                    d                              d          pd	}|	                    | 
                    |||d                     n|                    dd	                              d          }|                    dd	          }|r	||vr||z  }|                     |          }d|v pd|v }t          |          dk    r|}n|r| d| }n| d| d}|                      |                     |                    }|                     |          }|d d!d"|d#S )$Nr^   z/categories.htmlza[href*="/cat/"]href
porn-videor	   Categoryr   gHzG?r_   1z/channels/page/za[href*="/channel/"]z.channel-namez.titleimgsrcdata-srcg      ?r`   z/pornstars/page/za[href*="/pornstar/"]z.pornstar-nameg      ?folder_ra   z
/pornstar/z	/channel/z/?page=z/page/i'     i?B )page	pagecountlimittotallist)getpqitemsattrstripsplittextreplacerT   getappend_make_folderstrfindrstrip_fix_urlgetlist)rU   tidpgrj   rV   vdatadatairu   cat_keyraw_namere   urlpicreal_tidsort_suffixfull_url_checkis_entity_pages                     rW   rr   zSpider.categoryContentE   sq   >B6-::011DT,--3355 F Fvvf~~=|t33X**S////44R86688++J;;AACC|''::T..tT2tDDEEEEF K-0WW^^)B))))C::c??DT0117799 F Fvvf~~=|t33Xvvo..3355\9I9I9N9N9P9P\TUTZTZT\T\ffUmm((//W166%==3E3Ej3Q3QWUWT..tT3DDEEEEF L  .1"ggnn*R****,C::c??DT12288:: G Gvvf~~=|t33Xvv.//4466B!&&((ffUmm((//W166%==3E3Ej3Q3QWUWT..tT3EEFFFFG {{9b1188==H **VR00K ({(::K'!]]844N)^;\{n?\N2ww#~~! 3%22b22CC%22R222C::dmmC0011DLL&&EVUZ[[[rY   c                    |d         }	 | j                             |          }|j        n# t          $ r dg icY S w xY w|j        dk    st          fddD                       rddddgiS t                    } |d	                              d
          pd} |d                              d
          }g }	 t          j	        d          }|r2|
                    d                              dd          }	| j                             |	                                          }
g }dddddddd}|
D ]}t          |                    dd                                                    }|                    d          s|dz  }d}|                                D ]\  }}||v r|} n|                    d          r|                    |||d         d           |                    d d           d  |D             }n|                    d!           n<# t          $ r/}|                    d"t          |                      Y d }~nd }~ww xY wd||d#d$                    |          d%giS )&Nr   r   i  c              3       K   | ]}|v V  	d S )Nri   ).0xr   s     rW   	<genexpr>z'Spider.detailContent.<locals>.<genexpr>   s'      llQqDyllllllrY   )zhas been flaggedzDisabled VideozRemoved VideozInactive Videou   视频已删除r   )vod_namevod_play_urlzmeta[property="og:title"]contentUnknownzmeta[property="og:image"]z&"format":"mp4",.*?"videoUrl":"([^"]+)"rq   z\/r	   ip  i  i8  i  i     )4K216014401080720480240qualitySDPvideoUrl)qrc   r   c                     | d         S )Nrc   ri   )r   s    rW   <lambda>z&Spider.detailContent.<locals>.<lambda>   s
    af rY   T)rd   reversec                 4    g | ]}|d           d|d          S )r   $r   ri   )r   r   s     rW   
<listcomp>z(Spider.detailContent.<locals>.<listcomp>   s.    III344!E(44IIIrY   u   解析失败$ERRORu   解析异常$Tube8#)r   vod_picvod_play_fromr   )rR   r   r   	Exceptionstatus_codeanypqr   researchgroupr   jsonr   upperendswithr   r   ra   join)rU   idspage_urlresponsedtitlecover
video_urlsmatchjson_urljson_res
valid_urlsq_mapelemr   q_valkrc   er   s                      @rW   detailContentzSpider.detailContent   s   q6	 |''11H=DD 	  	  	 B<	  3&&llll"klllll '*;RPPQRRtHH-..33I>>K)-..33I>>
	8IGNNE 9 ;;q>>11%==<++H55::<<
#T4VYbenqrr$ _ _D!$((9d";";<<BBDDG"++C00@'S.'E % " "1<<$%E!E ( xx
++ _"))eDQ[L\*]*]^^^$4$4dCCCIIjIII

""#7888 	8 	8 	86c!ff6677777777	8 ePWiliqiqr|i}i}~~  A  	As%   !- >>?EH 
I)%IIry   c                 h    d| d| }|                      |                     |                    |dS )Nz/searches.html?q=z&page=)r   r   )r   r   )rU   rd   quickr   r   s        rW   searchContentzSpider.searchContent   s;    1#11R11TZZ__55rBBBrY   c                     d|| j         dS )Nr   )parser   header)rQ   )rU   flagidvipFlagss       rW   playerContentzSpider.playerContent   s    2>>>rY   c           
      j   g } |d                                           D ]} |d          p
 |d          }|                    d          }|rd|vr5 |d                                          p2|                    d          p |d                              d	          } |d
                              d          p |d                              d          } |d                                          }|                    |                     |          ||pd|dddd           |S )Nz.video-box, .videoblockza.tmvideolinkaru   rv   z.video-title-textr   rz   altzimg.thumb-imager|   r{   z.video-durationr   gRQ?rectratiotype)vod_idr   r   vod_remarksstyle)r   r   r   r   r   )	rU   r   vlistr   linkru   r   r   durations	            rW   r   zSpider.getlist   sY   /006688 	 	A1_%%/3D99V$$D=<t33XA)**//11_TYYw5G5G_11U88==Y^K_K_E!%&&++J77O11U88==;O;OCq*++0022HLL----!9"'#'88      rY   c                     |                      |          }	 t          | j                            |          j                  S # t
          $ r t          d          cY S w xY w)Nz<html></html>)r   r   rR   r   r   r   rU   r   s     rW   r   zSpider.getpq   sh    mmC  	'dl&&s++0111 	' 	' 	'o&&&&&	's   +A AAc                 x    |                     d          s$| j        |                     d          rdndz   |z   S |S )Nhttpr	   r   )
startswithrP   r   s     rW   r   zSpider._fix_url   sC    ~~f%% 	J9cnnS&9&9 BsCcII
rY   c                 B    d| |                                 |d|dddS )Nr}   folderr   r   )r   r   r   vod_tagr   )r   )rU   ru   re   r   r   s        rW   r   zSpider._make_folder   s8    &&&

$f55
 
 	
rY   N)r   )ry   )__name__
__module____qualname__rX   ro   rs   rr   r   r   r   r   r   r   r   ri   rY   rW   r   r      s        
 
 
 
@< < <*> > >:\ :\ :\x.A .A .A`C C C C? ? ?  (' ' '  

 
 
 
 
rY   r   )r   syspyqueryr   r   requestsr   pathr   base.spiderr   ri   rY   rW   <module>r     s    
			 



 ! ! ! ! ! !                T
 T
 T
 T
 T
V T
 T
 T
 T
 T
rY   