
    Th'                         d dl Z d dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
 ej                            d           d dlmZ  G d de          ZdS )	    N)PyQuery)	b64decode	b64encode)Sessionz..)Spiderc                       e Zd Zd7dZd Zd Zd Zd ZdZ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(d)d*iZ	d+ Z
d, Zd- Zd. Zd8d/Zd0 Zd1 Zd2 Zd3 Zd4 Zd7d5Zd6S )9r    c                     | j          d| j        d<   t                      | _        | j        j                            | j                   d S )N/referer)hostheadersr   sessionupdate)selfextends     ,   /storage/emulated/0/纯福利/PY1/Xvideos.pyinitzSpider.init   sA    #'9Yyy##DL111    c                     d S N r   s    r   getNamezSpider.getName       r   c                     d S r   r   )r   urls     r   isVideoFormatzSpider.isVideoFormat   r   r   c                     d S r   r   r   s    r   manualVideoCheckzSpider.manualVideoCheck   r   r   c                     d S r   r   r   s    r   destroyzSpider.destroy   r   r   zhttps://www.xvideos.com
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36Acceptztext/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.7	sec-ch-uaA"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"sec-ch-ua-mobile?0zsec-ch-ua-full-versionz"133.0.6943.98"zsec-ch-ua-archz"x86"sec-ch-ua-platform	"Windows"zsec-ch-ua-platform-versionz"19.0.0"zsec-ch-ua-modelz""zsec-ch-ua-full-version-listz["Not(A:Brand";v="99.0.0.0", "Google Chrome";v="133.0.6943.98", "Chromium";v="133.0.6943.98"dnt1zupgrade-insecure-requestssec-fetch-sitenonesec-fetch-modenavigatezsec-fetch-userz?1sec-fetch-destdocumentaccept-languagezh-CN,zh;q=0.9,en;q=0.8priorityzu=0, ic                 n    i }dddddd}g }|D ] }|                     |||         d           !||d<   |S )	N/new/best/channels-index/tags/pornstars-index)u   最新u   最佳u   频道u   标签u   明星)	type_nametype_idclass)append)r   filterresult
cateManualclassesks         r   homeContentzSpider.homeContent7   sw    '(
 

  	 	ANN%a=      "wr   c                 j    |                                  }d|                      |d                    iS )Nlist.mozaique .frame-block)getpqgetlist)r   datas     r   homeVideoContentzSpider.homeVideoContentI   s1    zz||t||DD)A$B$BCCDDr   c                 
	   g }i }|dk    rdt          |          dz
   nd}||d<   d|d<   d|d	<   d
|d<   |dk    sd|v rYd|v r|                    d          d         }|                     | d|           }|                      |d                    }n|dk    r|dk    r;| j                            | j         | | j        d          j        d         | _        |                     | j         |           }|                      |d                    }n`|dk    s|dk    rL|                     | |           } |d          }	|		                                D ]}
 |
d          }t          j        d |d                                                    }d}|r'|                    d                                          }|                    d|dk    rdnd |                    d          z    |d                                          p0 |
d                                                              dd          |d  |
d!                                          d"d#d$d%           n|d&k    r||d<   |                     |          }	 |	d'          }	|		                                D ]} |d(          	                                D ]}
|                    d)|
                    d          z   |
                    d*          p |
d+                                          dd  |
d,                                          d"d#d$d%           n#d-|v r|                    d          d         }| j        j                                        }|                    d.d/i           |                     | j         | d0t          |          dz
   |1                                          }	|	d2         D ]}
|                    |
                    d3          |
                    d4          |
                    d5          |
                    d6          |
                    d7          d"d#d$d8           ||d9<   |S ):Nr,   r      r	   pagei'  	pagecountZ   limiti?B totalr7   
tags_clickclick_rH   r8   F)r   allow_redirectsLocationr9   r;   z.mozaique .thumb-block.thumb-inside .thumb azsrc="([^"]+)"scriptchannels_click_	/channelshrefz.profile-name    folderz.thumb-under .profile-countsHzG?rectratiotype)vod_idvod_namevod_picvod_tagvod_remarksstyler:   z
.tags-listzli atags_click_titlebz	.navbadgechannels_clickr$   z.application/json, text/javascript, */*; q=0.01z/videos/best/)r   videosutfilndre   rf   rg   vod_yearri   rj   rG   )intsplitrI   rJ   r   getr   r   pathitemsresearchtextgroupstripr?   attrreplacecopyr   postjson)r   tidpgr@   r   vdatarA   rO   rK   vhtmliamatchimgrt   r   s                   r   categoryContentzSpider.categoryContentM   s   $&#II 3r77Q;   2v"{w w;;,#--s""syy':':2'>3sMMRMM**D,,tt$<==>>EE'\\3ww,**di+>+>+>t|di*jjrs}~	ty0$0011D,,tt$<==>>EE###s,>'>'>::ndnn--D$/00E[[]]  A.//	"2AAhKK4D4D4F4FGG 1++a....00C^cCT>T>TZ\^^_`_e_efl_m_mm !/ 2 2 7 7 9 9 jQQ=O=O=T=T=V=V=^=^_efi=j=j"'#$1%C#D#D#I#I#K#K'+V<<      '\\"$F;JJsOOEE,''E[[]] 	 	6**  ALL"/v">$%FF7OO$Dqqvv{{}}#%#+'(q~~':':'<'<+/!@!@" "    	 $$		(##B'CL(--//GNNH&VWXXX))tyG#GGCGGAIGGPW)XX]]__E8_  eeCjj !d uuT{{ !c

#$55::'+V<<      vr   c                      j          |d          }                     |d                   } |d                              d          } |d          }|                    d          }d}|rz|                    d          dk     rad	| }d
t	          j        d|z    |d                                          d          z   dz    |d                                          z   dz   }|| |d                                                              |d          ddd} |d          }	d}
|	                                D ]"}|                                }d|v rd|v r|}
 n#| d 	                    d d|            g}d }|
rc	  ||
          } fd|                                D             }n6# t          $ r)}t          dt          |                      Y d }~nd }~ww xY wd                    |          |d<   d|giS )Nr   zmeta[property="og:title"]contentz.main-uploader ar]   r	   r      r\   z[a=cr:r[   z.name)idnamez/]z[/a]z.page-titleu   老僧酿酒)rf   vod_directorri   vod_play_fromvod_play_urlz#video-player-bg scriptsetVideoUrlLowhtml5player$rN   @@@@c                    	 t          j        d|           }t          j        d|           }t          j        d|           }|r|                    d          nd |r|                    d          nd |r|                    d          nd dS # t          $ r+}t	          dt          |                      i cY d }~S d }~ww xY w)Nz%setVideoUrlLow\([\'"]([^\'"]+)[\'"]\)z&setVideoUrlHigh\([\'"]([^\'"]+)[\'"]\)z"setVideoHLS\([\'"]([^\'"]+)[\'"]\)rN   )hlshighlowu   提取视频URL失败: )r|   r}   r   	Exceptionprintstr)
js_contentr   r   r   es        r   extract_video_urlsz0Spider.detailContent.<locals>.extract_video_urls   s    i H*UUy!JJWWi EzRR ,/8399Q<<<D-1;DJJqMMMt+.8399Q<<<D  
    8A88999						s   B	B 
C B<6C<Cc           	      X    g | ]&\  }}|| d                      d d|            'S )r   r   r   )e64).0qualityr   r   s      r   
<listcomp>z(Spider.detailContent.<locals>.<listcomp>   sW       $<<Q//C//!:!:<<  r   u   提取url失败: #r   rG   )r   rI   r   countr   dumpsr~   r   r{   r   r   r   r   join)r   idsr   rK   vndtextr]   pdtitlevodr   jstrrZ   r   plistr   urlsr   s   `                r   detailContentzSpider.detailContent   s   $CF$$zz#a&!!4+,,11)<<d%&&ZZ 	SDJJsOOa''#T##D3DT3ISXSXY`SaSaSfSfShSh,i,i!j!jjmqqtyty  {B  uC  uC  uH  uH  uJ  uJ  J  MS  SG"4..3355==bDD+
 
 T344
 &&(( 	 	FkkmmG7**}/G/G44Q//C//22445	 	 	  		44))$//   (,

  
  4 4 42#a&&22333333334!hhuooNu~s   +F7 7
G*G%%G*c                     |                      d| dt          |          dz
             }|                      |d                    |dS )Nz/?k=z&p=rN   rH   )rG   rO   )rI   rw   rJ   )r   keyquickr   rK   s        r   searchContentzSpider.searchContent   sS    ZZ2s22s2wwqy2233||DD)A$B$BCC2NNNr   c                     ddddddd| j         ddd	| j          d
ddd}|                     |                              d          }t          |d                   |d         |dS )NzxMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5410.0 Safari/537.36zno-cacher*   r&   r,   r(   z
cross-sitecorsemptyr   r4   zu=1, i)r#   pragmazcache-controlr)   r%   r+   r'   originr-   r/   r1   r   r3   r5   r   r   rN   )parser   header)r   d64rx   rw   )r   flagr   vipFlagsr   r   s         r   playerContentzSpider.playerContent   s     U '"-\ $i*$%)8 
 
  HHRLLv&&SVSVwGGGr   c                     d S r   r   )r   params     r   
localProxyzSpider.localProxy   r   r   c                     	 |                     d          }t          |          }|                    d          S # t          $ r*}t	          dt          |                      Y d }~dS d }~ww xY w)Nutf-8u   Base64编码错误: r	   )encoder   decoder   r   r   )r   r~   
text_bytesencoded_bytesr   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   r   r   r   )r   encoded_textr   decoded_bytesr   s        r   r   z
Spider.d64   s    	(//88M%m44M ''000 	 	 	1Q1122222222	r   c                    g }|                                 D ]} |d          } |d          }|                    |                    d           |d                              d           |d                              d           |d                                           |d	                                          d
ddd           |S )NrY   z.thumb-under .title ar]   r   rl   r   zdata-srcz.video-hd-markz	.durationr`   ra   rb   ru   )r{   r?   r   r~   )r   rK   vlistr   r   rm   s         r   rJ   zSpider.getlist   s     
	 
	Aa())Aa'((ALL&&..AcFFKK001U88==44A.//4466 q~~2244#'88      r   c                    | j                             | j         |           j        }	 t	          |          S # t
          $ rI}t          t          |                      t	          |                    d                    cY d }~S d }~ww xY w)Nr   )	r   ry   r   r~   pqr   r   r   r   )r   rz   responser   s       r   rI   zSpider.getpq   s    <##ty$8$$8$899>	0h<< 	0 	0 	0SVV+hoog..////////	0s   9 
B>BBBN)r	   )r,   )__name__
__module____qualname__r   r   r   r    r"   r   r   rE   rL   r   r   r   r   r   r   r   rJ   rI   r   r   r   r   r      s                   %D  H  \ 	X 	D	
 	!"3 	' 	k 	%j 	4 	&  (E 	s 	$S 	& 	* 	$  	*!" 	4#$ 	H% G*  $E E E? ? ?B2 2 2hO O O OH H H(        0 0 0 0 0 0r   r   )r   r|   syspyqueryr   r   base64r   r   requestsr   rz   r?   base.spiderr   r   r   r   <module>r      s     				 



 ! ! ! ! ! ! ' ' ' ' ' ' ' '                w0 w0 w0 w0 w0V w0 w0 w0 w0 w0r   