
    hB*                         d dl Z d dlZd dlZd dlmZ e j                            d           d dlm	Z	  G d de	          Z	dS )    N)etreez..)Spiderc                   X    e 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S )r   c                     dS )Nu   禁片天堂 selfs    1   /storage/emulated/0/纯福利/PY1/禁片天堂.pygetNamezSpider.getName   s    ~    c                     d S Nr   )r	   extends     r
   initzSpider.init       r   c           
         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d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCi dDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdn}dodp |                                 D             i}|S )qNu   中文278u   巨乳15u   熟女95u	   騎乘位74u   口交34u   癡女75u   潮吹32u	   企劃片84u   美尻156u	   打手槍98u   戲劇、連續劇58u   制服19u   美腿157u   舔鮑122u   美乳166u   搭訕12u	   妄想族184u   第一人稱視點167u	   媽媽系193u   人妻・主婦26u   多種職業u   羞辱163u	   女教師131u   淫語151u   肉感136u	   愛美臀111u	   背後位178u   調教395u   處男23u   護士283u   修長147u	   露內褲169u   絲襪115u	   愛巨乳200u   眼鏡290u   超乳211u   顏面騎乘263u	   惡作劇145u   義母144u   淫亂・過激系63u	   愛美腿11u   爆乳483u	   女上司137u   正太415u   穿衣幹砲179u   緊身皮衣304u   學園421u   空姐132u   粉絲感謝祭190u   背面騎乗位646u   秘書363106305233150130321508403)u	   女主播u   反向搭訕u   健身教練u   部下・同僚u   舞蹈u   緊身衣激凸u   3D影片u   早洩classc                     g | ]
\  }}||d S ))	type_nametype_idr   ).0kvs      r
   
<listcomp>z&Spider.homeContent.<locals>.<listcomp>S   s$    ZZZtq!!::ZZZr   )items)r	   filter
cateManualresults       r
   homeContentzSpider.homeContent   s   <
e<
d<
 d<
 	<

 d<
 d<
 d<
 <
 e<
 <
 !$<
 d<
 e<
 e<
 e<
  d!<
" #<
 <
$ !%%<
& '<
( t)<
* D+<
, e-<
. /<
0 e1<
2 e3<
4 5<
6 7<
8 e9<
: d;<
< e=<
> e?<
@ A<
B eC<
D E<
 <
 <
F eG<
H eI<
J EK<
L M<
N eO<
P !$Q<
R S<
T eU<
V W<
X eY<
Z E[<
\ E]<
^ e_<
` ea<
b uc<
d ue<
f eg<
 <
h !!$$w<
 <
 <

z ZZzGWGWGYGYZZZ[r   c                     i S r   r   r   s    r
   homeVideoContentzSpider.homeVideoContentV   s    	r   c                 p   i }d| d| }	 |                      |          }t          j        |j                  }|                    d          }	g }
|	D ]}	 |                    d          }|s|d                                         }|                    d          }|sN|d         }|                    d          sd|z   }|                    d	          }|r|d                                         nd
}|                    d          }|s|d         }|
                    ||||d           # t          $ r}t          d|            Y d }~d }~ww xY w|
|d<   ||d<   d|d<   d|d<   d|d<   nB# t          $ r5}t          d|            g |d<   ||d<   d|d<   d|d<   d|d<   Y d }~nd }~ww xY w|S )Nzhttps://jptt.tv/tag_list?tid=z&idx="//div[contains(@class,"oneVideo")].//h3/text()r   .//img/@srchttphttps://jptt.tv*.//p[contains(@class,"p_duration")]/text() 
.//a/@hrefvod_namevod_picvod_remarksvod_idz%[categoryContent video parse error]: listpagei'  	pagecountZ   limiti?B totalz[categoryContent fetch error]: )
fetchr   HTMLtextxpathstrip
startswithappend	Exceptionprint)r	   tidpgrV   r   rX   urlrsprootvideosvodListvideoname_elementsnameimg_elementsimgdesc_elementsdesclink_elementslinkes                        r
   categoryContentzSpider.categoryContentY   sT   <c<<<<0	 **S//C:ch''DZZ DEEFG  $)KK$?$?M( ! (+1133D#(;;}#=#=L' ! &q/C>>&11 6/#5$)KK0\$]$]M7DL=+11333"D$)KK$=$=M( ! (+DNN$(#&'+"&	$ $     !   E!EEFFFHHHH %F6NF6N"&F; F7O$F7OO 	  	  	 7A77888F6NF6N"#F;F7OF7OOOOOO	  sg   A
E4 D1.E4 /1D1 E4 !A,D1E4 "D10E4 1
E;EE4 EE4 4
F3>+F..F3c                    |d         }|                     d          r|nd| }	 |                     |          }t          j        |j                  }|                    d          }|r|d                                         nd}|                    d          }|r|d         nd}	|	r|	                     d          sd|	z   }	|                    d          }
|
r|
d                                         n|}|                     |j                  }|||	|d	d
|z   d}d|giS # t          $ r }t          d|            dg icY d }~S d }~ww xY w)Nr   r`   ra   z//h1[@class="h1_title"]/text()u   未知标题z//video/@posterrc   z1//div[contains(@class,"info_original")]//p/text()   注意身体u   多看少打卡$)ri   rf   rg   vod_contentvod_play_fromvod_play_urlrj   z[detailContent error]: )
ru   rp   r   rq   rr   rs   rt   extractVideoUrlrw   rx   )r	   arrayry   r{   r|   r}   title_elementstitlepic_elementspicr   r   play_urlvodr   s                  r
   detailContentzSpider.detailContent   s   Ah^^F++Hcc1H31H1H	 **S//C:ch''D!ZZ(HIIN1?SN1%++---^E::&788L%19,q//rC .3>>&11 .'#- JJ'Z[[M/<G=#))+++%D++CH55H !#!/ 2X = C SE?" 	  	  	 /A//000B<	 s   C;D" "
E,EEEc                    	 t          j        d|          }|r1|                    d          }|                    d          rd|z   }|S g d}|D ]_}t          j        ||          }|rF|D ]C}|                    d          r	d|z   c c S |                    d          r|c c S d|z   c c S `g d}|D ]j}t          j        ||          }|rQ|                    d          }|                    d          rd|z   c S |                    d          r|c S d|z   c S kt          j        d	|          }	|	r|	d
         S n)# t
          $ r}
t          d|
            Y d }
~
nd }
~
ww xY wdS )Nz<source\s+src="([^"]+)"   z//zhttps:)z//cdn-[^"\']+\.m3u8[^"\']*zhttps?://[^"\']+\.m3u8[^"\']*z/hlsredirect/[^"\']+\.m3u8r`   ra   )z*src\s*:\s*["\']([^"\']+\.m3u8[^"\']*)["\']z*url\s*:\s*["\']([^"\']+\.m3u8[^"\']*)["\']z+file\s*:\s*["\']([^"\']+\.m3u8[^"\']*)["\']z)["\'](https?://[^"\']+\.m3u8[^"\']*)["\']r   z[extractVideoUrl error]: nhttps://cdn-mso2.jptt1.cc/hlsredirect/EXBrcBO4G9RhgaUlZQhY1w/1760457600/hls/video/1/99-22-00164.3gp/index.m3u8)researchgroupru   findallrw   rx   )r	   htmlsource_match	video_urlhls_patternspatternmatchesmatchjs_patternsall_m3u8r   s              r
   r   zSpider.extractVideoUrl   s/   ,	39%?FFL !(..q11	''-- 5 (9 4I    L
 ( 	= 	=*Wd33 =!( = = ++D11 =#+e#333333"--f55 =#(LLLLL#4u#<<<<<<  K
 ' 	= 	=	'400 = %AI ++D11 =')3333"--f55 =((((09<<<<= z"NPTUUH #{"# 	3 	3 	31a1122222222	3 @sD   AE 
A E E &E /AE  E E  E 
E'E""E'1c                 T   i }dt           j                            |           }	 |                     |          }t	          j        |j                  }|                    d          }g }	|D ]}
	 |
                    d          }|s|d                                         }|
                    d          }|sN|d         }|	                    d          sd|z   }|
                    d          }|r|d                                         nd	}|
                    d
          }|s|d         }|	
                    ||||d           # t          $ r}t          d|            Y d }~d }~ww xY w|	|d<   n.# t          $ r!}t          d|            g |d<   Y d }~nd }~ww xY w|S )Nzhttps://jptt.tv/search?kw=r]   r^   r   r_   r`   ra   rb   rc   rd   re   z#[searchContent video parse error]: rj   z[searchContent fetch error]: )urllibparsequoterp   r   rq   rr   rs   rt   ru   rv   rw   rx   )r	   keyquickrz   rX   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   s                       r
   searchContentzSpider.searchContent   s   D6<+=+=c+B+BDD(	 **S//C:ch''DZZ DEEFG  $)KK$?$?M( ! (+1133D#(;;}#=#=L' ! &q/C>>&11 6/#5$)KK0\$]$]M7DL=+11333"D$)KK$=$=M( ! (+DNN$(#&'+"&	$ $     !   CCCDDDHHHH %F6NN 	  	  	 5!55666F6NNNNNN	  sg   A
E: 1EE: 	1E:E: ;A,E'E: ("E
E: 
E1E,'E: ,E11E: :
F%F  F%c                    i }|dk    r	 |                     d          rd|v rd|d<   d|d<   ||d<   nZ|                     d          r|nd	| }|                     |          }|                     |j                  }d|d<   d|d<   ||d<   n8# t          $ r+}t          d
|            d|d<   d|d<   d|d<   Y d }~nd }~ww xY wddd	d|d<   |S )Nr   r`   z.m3u8r   r   rc   playUrlr{   ra   z[playerContent error]: r   zrMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36zhttps://jptt.tv/)z
User-AgentRefererOriginheader)ru   rp   r   rr   rw   rx   )	r	   flagidvipFlagsrX   r{   r|   r   r   s	            r
   playerContentzSpider.playerContent  s=   >!!Q==(( 
-W]]&'F7O(*F9%$&F5MM "f 5 5Q"";QR;Q;QC**S//C#33CH==H&'F7O(*F9%$,F5M Q Q Q333444"#w$&y! !Qu	Q S-+   F8
 s   BB 
C!B>>Cc                     d S r   r   )r	   r{   s     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	   params     r
   
localProxyzSpider.localProxy1  r   r   N)r   )__name__
__module____qualname__r   r   rY   r[   r   r   r   r   r   r   r   r   r   r   r
   r   r      s            ? ? ?B  4 4 4l     B/@ /@ /@b, , , ,\  8        r   r   )
sysurllib.parser   r   lxmlr   pathrv   base.spiderr   r   r   r
   <module>r      s   
 


     				                d d d d dV d d d d dr   