o
    #iy                     @   sX   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 de
Z
dS )    N)PyQueryz..)Spiderc                   @   s   e Zd ZdZdddZd*ddZdd	 Zd+ddZdd Zdd Z	dd Z
dd Zd,ddZdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd
S )-r   zhttps://hohoj.tvz<Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36zhttps://hohoj.tv/)
user-agentreferer c                 C   s&   |rt |di | _d S i | _d S )Nproxy)jsonloadsgetproxies)selfextend r   %/storage/emulated/0/lz/py/sy/hohoj.pyinit   s   &zSpider.initc                 C   s   dS )NZhohojr   r   r   r   r   getName      zSpider.getNameNc                 C   s*   zt j|| j|| jddjW S    Y dS )N
   )headersparamsr   timeoutr   )requestsr
   r   r   text)r   urlr   r   r   r   fetch   s   zSpider.fetchc                 C   s   |  | j}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g|  | t|d$d%S )&Nu   有码search?type=censored)	type_nametype_idu   無碼search?type=uncensoredu   中文字幕search?type=chineseu   歐美search?type=europeu   女優
all_modelsu   亂倫u   main_ctg?id=8&name=亂倫u   強姦凌辱u   main_ctg?id=2&name=強姦凌辱u   內射受孕u    main_ctg?id=12&name=內射受孕u
   多P群交u   main_ctg?id=5&name=多P群交u   巨乳美乳u   main_ctg?id=9&name=巨乳美乳u   出軌u   main_ctg?id=7&name=出軌u   角色劇情u   main_ctg?id=6&name=角色劇情u   絲襪美腿u   main_ctg?id=1&name=絲襪美腿u   潮吹放尿u    main_ctg?id=10&name=潮吹放尿u	   走後門u   main_ctg?id=11&name=走後門u   制服誘惑u   main_ctg?id=4&name=制服誘惑u   主奴調教u   main_ctg?id=3&name=主奴調教.video-item)classfilterslist)r   hostget_filtersparse_videospq)r   filterhtmlr   r   r   homeContent    s,   zSpider.homeContentc                 C   s<   dddddddddd	dd
ddgdg}||||dS )Norderu   排序u   最新Zlatest)nvu   最热hotu   最多观看viewsu   最多喜欢likes)keynamevalue)r   r   r    r!   r   )r   baser   r   r   r(   :   s   
zSpider.get_filtersc           
      C   s   | j  d|dkr
|nd }|r| ni }t|dkr ||d< | ||}t|}|dkr5| |dn| |d}	|	||djpDddd	d
S )N/r"      pz.modelr#   z.pagination aZ   i?B )r&   page	pagecountlimittotal)r'   copyintr   r*   parse_modelsr)   length)
r   tidpgr+   r   r   r   r,   datavideosr   r   r   categoryContentH   s   $zSpider.categoryContentc              	   C   s  |d }| dr| j | n| j d| }| |}t|}d|v r1|dd dd nd}|d p@|d p@d}td	d|}td
d|}| }|d| d| |d	dph|d	d|d
d d}g }	|d D ]%}
|
d  }|
	d}|r|r|	dt||d d| d q{|	rd|	|d< g }|d D ]*}|d}
|
r|
  }|
	d}|r|r|dt||d d| d q|rd||d< d|giS ) Nr   r8   zid=&r   h1title\s*HoHoJ.*$\s*\|.*$u	   撸出血$z.video-player imgsrczmeta[property="og:image"]contentz
.info span)vod_namevod_play_fromvod_play_urlvod_picvod_yearz.model a.model-namehrefz[a=cr:)idr5   z/]z[/a] 	vod_actorzspan.ctgavod_contentr&   )
startswithr'   r   r*   splitr   resubstripattreqitemsappendr   dumpsjoinfind)r   idsvidr   r,   rF   video_idrL   vodactorsr\   r5   rX   tagsZctg_spanr   r   r   detailContent[   sH   (
$
$

$
zSpider.detailContent1c                 C   sH   d|i}t |dkr||d< | | j d|}| t|d|dS )Nr   r9   r:   z/searchr#   )r&   r<   )rA   r   r'   r)   r*   )r   r4   quickrE   r   r,   r   r   r   searchContent   s
   zSpider.searchContentc                 C   s   |  | j d| }d}td|}|r|d}ntd|}|r(|dn
t|ddp2d}|rId|| jd	 | j d| | jd
dS dddS )Nz
/embed?id=r   z<video[^>]+src="([^"]+)"r9   z(var\s+videoSrc\s*=\s*["\']([^"\']+)["\']videorP   r   r   )r   r   origin)parser   header)rv   r   )r   r'   r`   searchgroupr*   rc   r   )r   flagrY   vipFlagsr,   	video_urlmatchr   r   r   playerContent   s$   $
zSpider.playerContentc           	      C   s   g }|  D ]f}|dd}|d p|dd}|r |s!qtdd|}tdd| }|d	}|d
   }|d   }||||ddd| d| |dj	rcdnddddd q|S )Nr\   rX   z.video-item-titleimgaltrM   r   rN   z.video-item-ratingz.fa-eyez	.fa-heartrP   u   👁 u    ❤ z.video-item-badgeu   无码rectg      ?typeratio)vod_idrR   rU   vod_remarksvod_tagstyle)
re   rc   r   r`   ra   rb   ri   parentrf   rC   )	r   re   rG   ilinkrL   ratingr2   r3   r   r   r   r)      s(   
zSpider.parse_videosc                 C   s   dd |  D S )Nc              	   S   sL   g | ]"}|d  dr|d  d|d |d dddddd	qS )
r\   rX   rW   r   rP   folderr   g      ?r   )r   rR   rU   r   r   )rc   r   ).0r   r   r   r   
<listcomp>   s    

z'Spider.parse_models.<locals>.<listcomp>)re   )r   re   r   r   r   rB      s   zSpider.parse_modelsc                 C      d S Nr   r   r   r   r   r   isVideoFormat   r   zSpider.isVideoFormatc                 C   r   r   r   r   r   r   r   manualVideoCheck   r   zSpider.manualVideoCheckc                 C   r   r   r   r   r   r   r   destroy   r   zSpider.destroyc                 C   r   r   r   r   r   r   r   homeVideoContent   r   zSpider.homeVideoContentc                 C   r   r   r   )r   paramr   r   r   
localProxy   r   zSpider.localProxyc                 C   r   r   r   r   r   r   r   liveContent   r   zSpider.liveContent)r   r   )rq   )__name__
__module____qualname__r'   r   r   r   r   r-   r(   rH   rp   rs   r~   r)   rB   r   r   r   r   r   r   r   r   r   r   r      s,    


,	r   )r   r`   r   pyqueryr   r*   syspathrf   base.spiderr   r   r   r   r   <module>   s   