
    ,rh1                         d dl Z 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	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)	b64encode)urljoin	urlencode)PyQuery)Sessionz..)Spiderc                       e Zd Zd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d Zd Zd Zd Zd Zd Zd ZdS )r    c                    	 |rt          j        |          ni | _        n#  i | _        Y nxY wt          | j        t                    r;d| j        v r2t          | j        d         t                    r| j        d         | _        i }| j        pi                                 D ]=\  }}t          |t                    r|                    d          s	d| ||<   8|||<   >|| _        dddddd	| _        d| _	        t                      | _        | j        j                            | j                   | j        j                            | j                   d S )
Nproxyhttpzhttp://zPMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8z#zh-CN,zh;q=0.8,en-US;q=0.3,en;q=0.2zhttps://gayvidsclub.com/zhttps://gayvidsclub.com)z
User-AgentAcceptzAccept-LanguageRefererOrigin)jsonloadsproxies
isinstancedictitemsstr
startswithheadershostr   sessionupdate)selfextendfixedkvs        0   /storage/emulated/0/纯福利/PY1/onlyfans gv.pyinitzSpider.init   sc   	17?4:f---RDLL	DLLLdlD)) 	1g.E.E*UYUabiUjlpJqJq.E<0DL\'R..00 	 	DAq!S!! !,,v*>*> (Q==aa mWD1/
 
 .	yy##DL111##DL11111s     	+c                     dS )NGayVidsClub r   s    r"   getNamezSpider.getName.   s    }    c                     d|v pd|v S )Nz.m3u8z.mp4r&   )r   urls     r"   isVideoFormatzSpider.isVideoFormat1   s    #~.3.r)   c                     dS )NTr&   r'   s    r"   manualVideoCheckzSpider.manualVideoCheck4   s    tr)   c                     d S Nr&   r'   s    r"   destroyzSpider.destroy7   s    r)   c           
          i }ddddddddd	d
	}g }i }|D ] }|                     |||         d           !||d<   ||d<   |S )N/all-gay-porn/z/all-gay-porn/coat/z/all-gay-porn/mens-rush-tv/z/all-gay-porn/hunk-channel/z/all-gay-porn/ko/z/all-gay-porn/exfeed/z/all-gay-porn/bravo/z/all-gay-porn/str8boys/z/all-gay-porn/g-bot/)	u   最新COATzMEN'S RUSH.TVzHUNK CHANNELKOEXFEEDzBRAVO!STR8BOYSzG-BOT)	type_nametype_idclassfilters)append)r   filterresult
cateManualclassesr;   r    s          r"   homeContentzSpider.homeContent:   s    &):9%-,1+

 


  	 	ANN%a=      "w#yr)   c                     |                      d          }|                      |d                    }|s3|                      d          }|                      |d                    }d|iS )N/articler3   list	fetchPagegetlist)r   datavlists      r"   homeVideoContentzSpider.homeVideoContentR   si    ~~c""TT)__-- 	2>>"233DLLi11Er)   c                     i }||d<   d|d<   d|d<   d|d<   |dk    r|}n| d	| d
}|                      |          }|                      |d                    }||d<   |S )Npagei'  	pagecountZ   limiti?B total   zpage/rC   rD   rE   rF   )	r   tidpgr=   r   r>   r+   rI   vdatas	            r"   categoryContentzSpider.categoryContentZ   s    v"{w w77CC$$r$$$C~~c""TT)__--vr)   c                 ^   |                      |d                   } |d                                                                          }d } |d          }|r|                    d          }|s_ |d          }|                                D ]?}|                                }d|v r%d|v r!t          j        d|          }	|	r
|	d         } n@d}
 |d          }|r7|                    d          }
|
r	d	|
v sd
|
v rn|
r|                     |
          }
|dd|
ddd}g }|rU|                    d          st          | j
        |          }|                    d|                     |                      |                    d|                     |d                               |r|                    d|                     |                      |                    d|                     |                      |                    d|                     |                      |                    d|                     |                      |                    d|                     |                      |                    d|            n|d         }|                    d|                     |                      |                    d|                     |                      |                    d|                     |                      |                    d|                     |                      |                    d|                     |                      |                    d|            d                    |          |d<   d|giS )Nr   h1iframesrcscriptz)iframe.*?src=[\'"](https?://[^\'"]+)[\'"]r
   imgpostercoveru   GayVidsClub视频r%   )vod_namevod_contentvod_tagvod_picvod_play_fromvod_play_urlr   u   直连$u   嗅探$u   阿里云盘解析$u   夸克网盘解析$u   115网盘解析$u   迅雷解析$u   PikPak解析$u   手机推送$#rd   rE   )rG   textstripattrr   refindallensure_horizontal_posterr   r   r   r<   e64join)r   idsrI   title
iframe_srciframe_elemscriptsr[   script_textmatchesrb   img_elemvod
play_linesfallback_urls                  r"   detailContentzSpider.detailContentl   s    ~~c!f%%T

!!''))
d8nn 	1$))%00J 	d8nnG!--//  $kkmm{**u/C/C j)UWbccG %,QZ
 4;; 	AmmE**G AH//7g3E3E A77@@ .$*
 
 
 	@((00 <$TY
;;
>(<(<>>???6DHHSV$4$466777 	>JDHHZ4H4HJJKKKJDHHZ4H4HJJKKKG*1E1EGGHHHDdhhz.B.BDDEEEDdhhz.B.BDDEEE:j::;;;;q6LLDHH\4J4JLLMMMLDHH\4J4JLLMMMI,1G1GIIJJJFdhh|.D.DFFGGGFdhh|.D.DFFGGG<l<<===!hhz22Nr)   1c                     |dk    rd| }nd| d| }|                      |          }|                      |d                    |dS )NrR   z/?s=z/page/rD   )rE   rM   rF   )r   keyquickrT   r+   rI   s         r"   searchContentzSpider.searchContent   s`    77,,CC(2((3((C~~c""TT)__55rBBBr)   c                    |                      |          }d|v rd|| j        dS d|v rd|| j        dS d|v r|                     |          S d|v r|                     |          S d|v r|                     |          S d	|v r|                     |          S d
|v r|                     |          S d|v rd|| j        dS d|| j        dS )Nu   直连r   parser+   headeru   嗅探rR   u   阿里云盘解析u   夸克网盘解析u   115网盘解析u   迅雷解析u   PikPak解析u   手机推送)d64r   parse_with_aliyunparse_with_quarkparse_with_115parse_with_thunderparse_with_pikpak)r   flagidvipFlagsr+   s        r"   playerContentzSpider.playerContent   s   hhrlltsdlCCCsdlCCC!T))))#...!T))((---$&&&&s+++t##**3///t##))#...t##sdlCCCsdlCCCr)   c                     |                     d          st          | j        |          }| j                            |          }t          |j                  S )Nr   )r   r   r   r   getpqrf   )r   r+   responses      r"   rG   zSpider.fetchPage   sL    ~~f%% 	*$)S))C<##C(((-   r)   c           
          g }|                                 D ]}|                    d                              d          }|                    d                              d          }|                    d                                          }|s'|                    d                                          }|r4d|v r|                    d          d         }|                     |          }|                    |||d	d
ddd           |S )Nahrefr\   rZ   h2h3?r   r
   rectgHzG?)typeratio)vod_idr_   rb   vod_remarksstyle)r   findrh   rf   splitrk   r<   )r   r   rJ   itemvidr\   names          r"   rH   zSpider.getlist   s   KKMM 	 	D))C..%%f--C))E""''..C99T??''))D .yy++--  9#::))C..+C33C88LL !"(488      r)   c                 D   sS dv sdv rS g d}g d}t          fd|D                       }|rk|D ]W}|D ]R}|v rL                    ||          }	 | j                            |d          }|j        dk    r|c c S K#  Y OxY wSXd	v rd
z   }ndz   }|S S )u0   
        确保使用横版海报图片
        r]   r^   )thumbverticalportraitsquare)r]   r^   
horizontal	landscapec              3       K   | ]}|v V  	d S r0   r&   ).0	indicatorimg_urls     r"   	<genexpr>z2Spider.ensure_horizontal_poster.<locals>.<genexpr>	  s(      TT9)w.TTTTTTr)      )timeout   r   z&type=horizontalz?type=horizontal)anyreplacer   headstatus_code)	r   r   vertical_indicatorshorizontal_indicatorsis_verticalv_indicatorh_indicatornew_urlr   s	    `       r"   rk   zSpider.ensure_horizontal_poster   s9     	N w'W"4"4N JII !O N N TTTT@STTTTT 	2 % %#8 
% 
%K"g--")//+{"K"K%'+|'8'8!'8'L'LH'3s::'.  ;%$H .
% g~~!$66!$66Ns   (BB
c                 h    t          |                                                                          S r0   )r   encodedecode)r   rI   s     r"   rl   z
Spider.e64$  s$    ''..000r)   c                 H    ddl m}  ||                                          S )Nr   )	b64decode)base64r   r   )r   rI   r   s      r"   r   z
Spider.d64'  s.    $$$$$$y%%'''r)   c                 f    	 d|| j         ddd}|S # t          $ r}d|| j         dcY d }~S d }~ww xY w)NrR   aliyunu   使用阿里云盘解析服务r   r+   r   
parse_typemessager   r   	Exceptionr   r+   parse_resultes       r"   r   zSpider.parse_with_aliyun+  sq    
	D,&; L   	D 	D 	DsdlCCCCCCCC	D    
0
+00c                 f    	 d|| j         ddd}|S # t          $ r}d|| j         dcY d }~S d }~ww xY w)NrR   quarku   使用夸克网盘解析服务r   r   r   r   s       r"   r   zSpider.parse_with_quark8  sq    
	D,%; L   	D 	D 	DsdlCCCCCCCC	Dr   c                 f    	 d|| j         ddd}|S # t          $ r}d|| j         dcY d }~S d }~ww xY w)NrR   115u   使用115网盘解析服务r   r   r   r   s       r"   r   zSpider.parse_with_115E  sq    
	D,#8 L   	D 	D 	DsdlCCCCCCCC	Dr   c                 f    	 d|| j         ddd}|S # t          $ r}d|| j         dcY d }~S d }~ww xY w)NrR   thunderu   使用迅雷解析服务r   r   r   r   s       r"   r   zSpider.parse_with_thunderR  sq    
	D,'5 L   	D 	D 	DsdlCCCCCCCC	Dr   c                 f    	 d|| j         ddd}|S # t          $ r}d|| j         dcY d }~S d }~ww xY w)NrR   pikpaku   使用PikPak解析服务r   r   r   r   s       r"   r   zSpider.parse_with_pikpak_  sq    
	D,&5 L   	D 	D 	DsdlCCCCCCCC	Dr   N)r
   )rz   )__name__
__module____qualname__r#   r(   r,   r.   r1   rA   rK   rV   ry   r~   r   rG   rH   rk   rl   r   r   r   r   r   r   r&   r)   r"   r   r      sv       2 2 2 2<  / / /      0    $J J JXC C C CD D D,! ! !  2, , ,\1 1 1( ( (D D DD D DD D DD D DD D D D Dr)   r   )r   sysri   timer   r   urllib.parser   r   requestspyqueryr   r   r   pathr<   base.spiderr   r&   r)   r"   <module>r      s     



 				        + + + + + + + +  ! ! ! ! ! !                [D [D [D [D [DV [D [D [D [D [Dr)   