
    .h0&                         d dl Z e j                            d           d dlmZ d dlZ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 G d de          ZdS )    Nz..)Spider)etreec                   d    e 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S )r   c                     dS )N   韩国色情电影 selfs    7   /storage/emulated/0/纯福利/PY1/韩国色情电影.pygetNamezSpider.getName   s    ##    c                 $    t          d           d S )Nu3   =============韩国色情电影初始化===========)print)r
   extends     r   initzSpider.init   s    CDDDDDr   c                 j    i }dddd}g }|D ] }|                     |||         d           !||d<   |S )Nlatestlongestrandom)u   最新视频u   最长的视频u   随机视频)	type_nametype_idclass)append)r
   filterresult
cateManualclassesks         r   homeContentzSpider.homeContent   sq    $($
 


  	 	ANN%a=     
 "wr   c                 @    i }|                      dd          }||d<   |S )Nhttps://koreanpornmovie.com/   list)	getVideos)r
   r   videoss      r   homeVideoContentzSpider.homeVideoContent&   s)     >BBvr   c                    i }	 t          |          }n# t          t          f$ r d}Y nw xY wd}|dk    rd}n|dk    rd}|dk    r|d                    |          z   }|                     ||          }||d<   ||d	<   d
|d<   d|d<   d|d<   |S )Nr"   r!   r   z+https://koreanpornmovie.com/?filter=longestr   z*https://koreanpornmovie.com/?filter=randomz	page/{0}/r#   pagei'  	pagecountZ   limiti?B total)int
ValueError	TypeErrorformatr$   )	r
   tidpgr   r   r   page_numurlr%   s	            r   categoryContentzSpider.categoryContent,   s    	2wwHHI& 	 	 	HHH	 -)?CCH__>Ca<<**8444CX..v!v"{w ws    **c                    |d         }d                     |          }|                     |          }|j        }|                     ||          }|                     ||          }dg}|r|gng }	d||d         |d         |d         |d         d	|d
         |d         |d         |d         d                    |          d                    |	          dgi}
|
S )Nr   zhttps://koreanpornmovie.com/{0}r   r#   titlepictypeyearu   韩国remarksactordirectorcontentz$$$)vod_idvod_namevod_picr   vod_yearvod_areavod_remarks	vod_actorvod_directorvod_contentvod_play_fromvod_play_url)r0   fetchtext	getDetail
getPlayUrljoin)r
   arrayr1   r4   rsphtmlvideoplay_urlplayFromplayListr   s              r   detailContentzSpider.detailContentF   s    Ah/66s;;jjoox tS)) ??4-- ))!)1H::r ! %g$U|!&v %f (#(#3!&w$)*$5#(#3%*ZZ%9%9$)JJx$8$8 
$ r   1c                     i }d                     t          j                            |                    }|                     |d          }||d<   |S )Nz"https://koreanpornmovie.com/?s={0}r"   r#   )r0   urllibparsequoter$   )r
   keyquickr(   r   r4   r%   s          r   searchContentzSpider.searchContentj   sK    299&,:L:LS:Q:QRRQ''vr   c                 8    i }d|d<   d|d<   ||d<   ddd|d	<   |S )
Nr   rZ    playUrlr4   zrMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36r!   )z
User-AgentRefererheaderr   )r
   flagidvipFlagsr   s        r   playerContentzSpider.playerContentq   sD    wyu O5
 
x r   c                 D   g }	 |                      |          }|j        }t          j        |          }|                    d          }|D ])}	 |                    d          d         }	|	                    d          r|	                    d          d         n|	                    d          d         }
|                    d          d         }|                    d          d                                         }|                    d	          }|r|d                                         nd
}|                    |
|||d           # t          $ r}t          d|            Y d }~#d }~ww xY wn)# t          $ r}t          d|            Y d }~nd }~ww xY w|S )Nz*//article[contains(@class, "thumb-block")]z
.//a/@hrefr   /z&.//img[@class="video-main-thumb"]/@srcz,.//header[@class="entry-header"]/span/text()z!.//span[@class="duration"]/text()r`   )r?   r@   rA   rD   u   解析视频项时出错: u   获取视频列表时出错: )rJ   rK   r   HTMLxpathendswithsplitstripr   	Exceptionr   )r
   r4   r2   r%   rP   rQ   root
video_listitemlinkvidimgr7   durationr;   es                   r   r$   zSpider.getVideos|   s   !	7**S//C8D:d##D $PQQJ"  ::l33A6D15s1C1C\$**S//"--TWY[I\C **%MNNqQC !JJ'UVVWXY__aaE  $zz*MNNH5=Ehqk//1112GMM"%$)#&'.	# #     !   :q::;;;HHHH-2  	7 	7 	75!5566666666	7 sC   A
E7 C;E
E7 
E3E.(E7 .E33E7 7
FFFc           	      t   t          j        |          }ddddddddd}	 |                    d          }|r|d                                         |d<   |                    d          }|r|d         |d<   |                    d	          }|rd
                    |          |d<   |                    d          }|r|d                                         |d<   |                    d          }	|	r|	d                                         |d<   n)# t
          $ r}
t          d|
            Y d }
~
nd }
~
ww xY w|S )Nr`   u   韩国情色)r7   r8   r9   r:   r<   r=   r>   r;   z!//h1[@class="entry-title"]/text()r   r7   z%//meta[@property="og:image"]/@contentr8   z#//div[@id="video-actors"]//a/text()z / r<   z+//div[@class="video-description"]//p/text()r>   z //span[@class="duration"]/text()r;   u   获取详情时出错: )r   rl   rm   rp   rN   rq   r   )r
   rQ   r4   rr   detail
title_elempic_elemactorscontent_elemduration_elemry   s              r   rL   zSpider.getDetail   s   z$"	
 	
	1$GHHJ 8",Q-"5"5"7"7w zz"IJJH , (u ZZ EFFF 5"'**V"4"4w  ::&STTL <$0O$9$9$;$;y! !JJ'IJJM =$1!$4$:$:$<$<y! 	1 	1 	1/A//00000000	1 s   C-D 
D5D00D5c                    d}d}t          j        ||          }|r)|                    d          }t          d|            |S |sd}t          j        ||          }|r|                    d          }	 t	          j        |                              d          }	d}
t          j        |
|	          }|r'|                    d          }t          d|            n)# t          $ r}t          d	|            Y d }~nd }~ww xY w|sDd
}
t          j        |
|          }|r+|D ]
}d|v r|} n|s
|r|d         }t          d|            |sIg d}|D ]B}t          j        ||          }|r)|                    d          }t          d|             nC|rB|	                    d          s-|	                    d          rd|z   }nddl
m}  |||          }|S )Nr`   z1<meta\s+itemprop="contentURL"\s+content="([^"]+)"r"   u!   从meta标签找到播放链接: z(<iframe[^>]+src="[^"]*\?q=([^"]+)"[^>]*>zutf-8zsrc="([^"]+\.mp4)"u#   从iframe解码找到播放链接: u   解码base64时出错: zhttps?://[^\s"\']+\.mp4zkoreanporn.streamr   u    直接搜索找到播放链接: )z#file\s*:\s*["\']([^"\']+\.mp4)["\']z"src\s*:\s*["\']([^"\']+\.mp4)["\']z'videoSrc\s*:\s*["\']([^"\']+\.mp4)["\']u   从JS变量找到播放链接: httpz//zhttps:)urljoin)researchgroupr   base64	b64decodedecoderq   findall
startswithurllib.parser   )r
   rQ   r4   rS   meta_pattern
meta_matchiframe_patterniframe_match
base64_strdecodedmp4_pattern	mp4_matchry   mp4_matchesmp4_urljs_patternspatternjs_matchr   s                      r   rM   zSpider.getPlayUrl   s    LY|T22
 	!''**H@h@@AAAO  	9HN9^T::L 9)//22
	9$.z::AA'JJG"7K "	+w ? ?I  P#,??1#5#5NHNNOOO  9 9 97A77888888889  	E4K*[$77K E*  G*g55#* 6   .K .*1~HCCCDDD  	  K
 '  9Wd33 '~~a00HFHFFGGGE  	2H//77 	2""4(( 2#h. 100000"7311s   6A'C 
D(C??Dc                 B    g d}t          fd|D                       S )N)z.mp4z.m3u8z.aviz.movz.wmvz.flvz.mkvc              3   D   K   | ]}|                                 v V  d S N)lower).0r0   r4   s     r   	<genexpr>z'Spider.isVideoFormat.<locals>.<genexpr>  s0      EEV6SYY[[(EEEEEEr   )any)r
   r4   video_formatss    ` r   isVideoFormatzSpider.isVideoFormat  s1    QQQEEEE}EEEEEEr   c                     dS )NTr   r	   s    r   manualVideoCheckzSpider.manualVideoCheck  s    tr   c                 
    i }g S r   r   )r
   paramactions      r   
localProxyzSpider.localProxy  s    	r   N)rW   )__name__
__module____qualname__r   r   r   r&   r5   rV   r^   rg   r$   rL   rM   r   r   r   r   r   r   r   r      s        $ $ $E E E  "    4" " "H   	 	 	% % %N* * *XA A AFF F F      r   r   )syspathr   base.spiderr   jsontimer   rY   r   requestslxmlr   r   r   r   r   <module>r      s    


                 				        M M M M MV M M M M Mr   