
    r.i%                         d dl Z d dlZd dlZd dlZd dlmZ d dlZej	        
                    d           d dlmZ  G d de          ZdS )    N)PyQueryz..)Spiderc                   n     e Zd Z fdZ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 xZS )r   c                 v   t                                                       d| _        t          j                    | _        | j        j                            d| j        ddd           g 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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/d0dd1d2dd3d4dd5d6dd7d8dd9d:dd;d<dd=d>dd?d@ddAdBddCdDddEdFddGdHddIdJddKdLddMdNddOdPddQdRddSdTddUdVd| _        d S )WNzhttp://oxax.tvzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zzh-CN,zh;q=0.9,en;q=0.8)
User-AgentRefererAcceptzAccept-Languageu   ОХ-АХ HDz/oh-ah.html)titlehrefzCineMan XXX HDz/sl-hot1.htmlzCineMan XXX2 HDz/sl-hot2.htmlzBrazzers TV Europez/brazzers-tv-europe.htmlzBrazzers TVz/brazzers-tv.htmlzRed Lipsz/red-lips.htmlKinoXXXz/kino-xxx.htmlz	XY Max HDz/xy-max-hd.htmlz
XY Plus HDz/xy-plus-hd.htmlz	XY Mix HDz/xy-mix-hd.htmlzBarely legalz/barely-legal.htmlz
Playboy TVz/playboy-tv.htmlzVivid Red HDz/vivid-red.htmlzExxxotica HDz/hot-pleasure.htmlzBabes TVz/babes-tv.htmlu   Русская ночьz/russkaya-noch.htmlz	Pink O TVz/pink-o.htmlzErox HDz/erox-hd.htmlz	Eroxxx HDz/eroxxx-hd.htmlz
Hustler HDz/hustler-hd.htmlz
Private TVz/private-tv.htmlzRedlight HDz/redlight-hd.htmlzPenthouse Gold HDz/penthouse-gold.htmlzPenthouse Quickiesz/penthouse-2.htmlzO-la-laz/o-la-la.htmlzBlue Hustlerz/blue-hustler.htmlu
   Шалунz/shalun.htmlz	Dorcel TVz/dorcel-tv.htmlz	Extasy HDz/extasyhd.htmlXXLz	/xxl.htmlzFAP TV 2z/fap-tv-2.htmlzFAP TV 3z/fap-tv-3.htmlzFAP TV 4z/fap-tv-4.htmlzFAP TV Parodyz/fap-tv-parody.htmlzFAP TV Compilationz/fap-tv-compilation.htmlzFAP TV Analz/fap-tv-anal.htmlzFAP TV Teensz/fap-tv-teens.htmlzFAP TV Lesbianz/fap-tv-lesbian.htmlz
FAP TV BBWz/fap-tv-bbw.htmlzFAP TV Transz/fap-tv-trans.html)	super__init__base_urlrequestsSessionsessionheadersupdateall_channels)self	__class__s    (   /storage/emulated/0/纯福利/py1/103.pyr   zSpider.__init__   sw   ('))##1 }W8	%
 	%
 		 		 		)
$m<<)
&@@)
 (AA)
 +4NOO	)

 $-@AA)
 !*:;;)
  )9::)
 "+<==)
 #,>??)
 "+<==)
 %.BCC)
 #,>??)
 %.?@@)
 %.BCC)
 !*:;;)
  09NOO!)
" ">::#)
$  99%)
& "+<==')
( #,>??))
* #,>??+)
, $-@AA-)
. *3IJJ/)
0 +4GHH1)
2  993)
4 %.BCC5)
6 #N;;7)
8 "+<==9)
: "+;<<;)
< [11=)
> !*:;;?)
@ !*:;;A)
B !*:;;C)
D &/DEEE)
F +4NOOG)
H $-@AAI)
J %.BCCK)
L '0FGGM)
N #,>??O)
P %.BCCQ)
    c                     |sdS |                     d          r|S |                     d          rd|z   S |                     d          r
| j        |z   S |                    dd          d         dz   |z   S )u   转换为绝对URL httpz//zhttp:/   r   )
startswithr   rsplit)r   baseurls      r   _abs_urlzSpider._abs_urlK   s     	2>>&!! 	J>>$ 	!S= >># 	'=3&&{{3""1%+c11r   c                     ddddddddd	d
ddd}d}|                                 }|                                D ]\  }}||v r|} nt          j                            |dd                   }d| d| S )u6   根据频道名称生成图片URL（使用占位图）FFD700FF69B4DC143C9370DBFF14938B008BFF63474169E1FF4500DA70D6FF00FF8A2BE2)brazzersplayboyhustler	penthousevividprivatedorcelcinemanfapxyeroxkino1E90FFN   z$https://via.placeholder.com/400x225/z/FFFFFF?text=)loweritemsurllibparsequote)r   channel_name	color_mapcolor
name_lowerkeycoltexts           r   _get_channel_imagezSpider._get_channel_imageW   s     !X(!H8HHh	
 
	 !''))
!)) 	 	HCj   ! |!!,ss"344PePP$PPPr   c                     dS )Nu
   OXAX直播 r   s    r   getNamezSpider.getNamem   s    |r   c                     d S )NrN   )r   extends     r   initzSpider.initp   s    r   c                 "    ddddddddddgiS )	u   返回分类列表classu   全部频道all)	type_nametype_idu   HD频道hdu	   FAP系列r:   rN   )r   filters     r   homeContentzSpider.homeContents   s7     ,??(T::)e<<
 	
r   c           	          g }| j         D ]A}|                    |d         |d         |                     |d                   dd           Bd|iS )u!   首页推荐 - 显示所有频道r   r
      直播vod_idvod_namevod_picvod_remarkslist)r   appendrL   )r   videoschs      r   homeVideoContentzSpider.homeVideoContent}   sq    # 	 	BMMV*wK222g;??'	      r   c           	         t          |          }d}|dk    rd | j        D             }n|dk    rd | j        D             }n| j        }|dz
  |z  }||z   }|||         }	g }
|	D ]A}|
                    |d         |d         |                     |d                   d	d
           B|
|t	          dt          |          |z   dz
  |z            |t          |          dS )u$   分类内容 - 支持分页和过滤   rY   c                 J    g | ] }d |d                                          v |!S )HDr
   upper.0rf   s     r   
<listcomp>z*Spider.categoryContent.<locals>.<listcomp>   s2    VVVr$"W+BSBSBUBU:U:U:U:U:Ur   r:   c                 J    g | ] }d |d                                          v |!S )FAPr
   rl   rn   s     r   rp   z*Spider.categoryContent.<locals>.<listcomp>   s2    WWWr%2g;CTCTCVCV:V:V:V:V:Vr   r   r   r
   r]   r^   )rc   page	pagecountlimittotal)intr   rd   rL   maxlen)r   tidpgrZ   rR   items_per_pagechannelsstartendpage_channelsre   rf   s               r   categoryContentzSpider.categoryContent   s,   WW $;;VVT%6VVVHHE\\WWT%6WWWHH(H a>)n$ s+  	 	BMMV*wK222g;??'	      QX!?!!C VWW#]]
 
 	
r   c           	         |r|d         sdg iS |d         }|                      | j        |          }|                    dd                              dd                              dd                                          }| j        D ]}|d         |k    r
|d	         } n|||                     |          d
dd| d| d}d|giS )u4   详情页 - 直接返回页面URL，不做m3u8提取r   rc   z.htmlr   r   - r   r
   r]   u   成人电视直播频道OXAX$)r_   r`   ra   rb   vod_contentvod_play_fromvod_play_url)r$   r   replacer
   r   rL   )r   arrayrelative_path
detail_urlr
   rf   vods          r   detailContentzSpider.detailContent   s    	 E!H 	 B<a]]4=-@@
 %%gr22::3CCKKCQTUU[[]] # 	 	B&z]**7 +
 $..u55#5#$33z33	
 	
 r   1c           	         |sdg iS |                                 }g }| j        D ]]}||d                                          v r?|                    |d         |d         |                     |d                   dd           ^d|iS )u   搜索功能rc   r
   r   r]   r^   )r@   r   rd   rL   )r   rI   quickrs   	key_lowerresultsrf   s          r   searchContentzSpider.searchContent   s     	 B<IIKK	 # 	 	BBwK--//// j "7#66r'{CC#+	         r   c                    ddd| j         j                            d          | j        dd}|s|S 	 |}d|v r|                    d          d         }d| |d	<   n)# t
          $ r}t          d
|            Y d}~nd}~ww xY w|S )u   
        播放器内容解析 - 关键修改点
        直接返回 video:// 协议的URL，让播放器自行解析页面
        r   r   r   )r   r   )rC   playUrlr#   headerr   r   zvideo://r#   u   [ERROR] 播放器解析失败: N)r   r   getr   split	Exceptionprint)r   flagidvipFlagsresultr#   es          r   playerContentzSpider.playerContent   s     "l266|DD= 	
 
  	M
	9CczziinnQ' -s,,F5MM 	9 	9 	97A7788888888	9 s   )A 
B&A==Bc                     dS )uH   判断是否为视频格式 - video:// 协议不是直接的视频格式FrN   )r   r#   s     r   isVideoFormatzSpider.isVideoFormat       ur   c                     dS )u   不需要手动视频检查FrN   rO   s    r   manualVideoCheckzSpider.manualVideoCheck  r   r   c                     i S )u   不使用本地代理rN   )r   params     r   
localProxyzSpider.localProxy  s    	r   )r   )__name__
__module____qualname__r   r$   rL   rP   rS   r[   rg   r   r   r   r   r   r   r   __classcell__)r   s   @r   r   r      s       9
 9
 9
 9
 9
z
2 
2 
2Q Q Q,    
 
 

  
  
 "
 "
 "
H  <! ! ! !(  @          r   r   )resysurllib.parserB   jsonpyqueryr   pqr   pathrd   base.spiderr   
BaseSpiderrN   r   r   <module>r      s    				 



      ! ! ! ! ! !      , , , , , ,| | | | |Z | | | | |r   