o
    qi&                     @   sd   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 d dlm	Z	 ej
j  G dd de	Z	dS )    N)HTTPAdapter)Retry)Spiderc                       sr   e Zd Zdd Zd fdd	Zdd Zd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  ZS )r   c                 C   s   dS )Nu   74P福利(漫画版) selfr   r   ,   /storage/emulated/0/lz/py/sy/74P福利图.pygetName
   s    zSpider.getName c                    sr   t  | d| _d| jd ddd| _t | _tddg d	d
}tdd|d}| j	d| | j	d| d S )Nzhttps://www.74p.netzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36/zUtext/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8z
keep-alive)z
User-AgentRefererAccept
Connection      )i  i  i  i  )totalbackoff_factorstatus_forcelist   )pool_connectionspool_maxsizemax_retrieszhttps://zhttp://)
superinitbase_urlheadersrequestsSessionsessionr   r   mount)r   extendretriesadapter	__class__r   r   r      s   
zSpider.initc                 C   s   t | dr| j  d S d S )Nr   )hasattrr   closer   r   r   r   destroy   s   zSpider.destroyNc                 C   s4   |p| j  }z| jj||ddddW S    Y d S )N
   FT)r   timeoutverifyallow_redirects)r   copyr   get)r   urlr   Zreq_headersr   r   r   fetch   s
   zSpider.fetchc                 C   s   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g}d$d%d& |D iS )'Nu   === 写真 ===ignore)	type_nametype_idu	   秀人网Z
xiurenwangu	   语画界Zyuhuajieu   花漾Zhuayangu	   星颜社Z
xingyansheu	   嗲囡囡Zfeilinu	   爱蜜社Zaimisheu	   波萝社Zboluosheu	   尤物馆Z	youwuguanu	   蜜桃社Zmiitaou   === 漫画 ===u   日本漫画zcomic/category/jpu   韩国漫画zcomic/category/kru   === 小说 ===u   都市znovel/category/Urbanu   乱伦znovel/category/Incestuousu   玄幻znovel/category/Xuanhuanu   武侠znovel/category/Wuxiaclassc                 S   s   g | ]
}|d  dkr|qS )r2   r0   r   ).0cr   r   r   
<listcomp>:   s    z&Spider.homeContent.<locals>.<listcomp>r   )r   filtercatsr   r   r   homeContent%   s(   zSpider.homeContentc                 C   s*   t |}| j d| d| }| ||S )Nr   /page/)intr   _get_post_list)r   tidpgr7   r    r.   r   r   r   categoryContent<   s   zSpider.categoryContentc              
      s  |  |}g }|r|jdkrd|_|j}|}td|tj}|r%|d}td|tj}|D ]}	td|	}
|
s:q/|
d t	 fddd	D rKq/td
|	}|sYtd|	}|r`|dnd}|sfd}td|	}|rs|dnt
dd|	 dd }|dsd|v st|dkrq/ drd   n
 dr| j   | ||ddddd q/||t|dkr|d n|ddd S )!N   utf-8zF(?:id="index_ajax_list"|class="site-main")[^>]*>(.*?)<(?:footer|aside)r   z<li[^>]*>(.*?)</li>zhref=["\']([^"\']+)["\']c                 3   s    | ]}| v V  qd S Nr   r4   xhrefr   r   	<genexpr>R   s    z(Spider._get_post_list.<locals>.<genexpr>)z.cssz.jsz
templates/zwp-includesz!data-original=["\']([^"\']+)["\']zsrc=["\']([^"\']+)["\']r
   z+https://www.74p.net/static/images/cover.pngztitle=["\']([^"\']+)["\']<[^>]+>
r   .{d   //https:r   u   点击查看rectgHzG?)typeratio)vod_idvod_namevod_picvod_remarksstyle   r   i'  )listpage	pagecountlimitr   )r/   status_codeencodingtextresearchSgroupfindallanysubstripsplit
startswithlenr   append)r   r.   r>   respvlisthtmlZ
list_blockZ
main_blockitemsitemZ
href_matchZ	img_matchpictitle_matchnamer   rE   r   r<   A   s>   

* 
$zSpider._get_post_listr   c                 C   s~   d| }| j  }d|v r| j d|d< n| j d|d< t|dkr0| j | d| }n| j | }| |t|S )Nz/search/   漫画z/comicr   z/novelr   r:   )r   r,   r   r;   r<   )r   keyquickr>   search_pathr   r.   r   r   r   searchContentk   s   

"zSpider.searchContentc                 C   s(  |d }|  |}|sdg iS d|_|j}|ddddddd}td|}|r.|d	|d
< td|tj}|rLtdd|d	 }|d d |d< g }	t	d|}
|
r|
D ]&\}}|
drfd| }n
|
drp| j| }| }|	| d|  qXn|	d|  d|	|d< d|giS )Nr   rX   rA   r
   rs   u	   74P漫画)rR   rS   rT   r1   vod_contentvod_play_fromvod_play_urlz<h1[^>]*>(.*?)</h1>r   rS   z+<div class="entry-content"[^>]*>(.*?)</div>rH   r@   rx   zN<a[^>]+href=["\']([^"\']*/(?:comic|novel)/chapter/[^"\']+)["\'][^>]*>(.*?)</a>rM   rN   r   $u   在线观看$#rz   )r/   r]   r^   r_   r`   rb   ra   re   rf   rc   rh   r   rj   join)r   idsr.   rk   rm   vodh1
desc_matchZ
clean_desc	play_listZchapter_linksrF   rr   r   r   r   detailContentw   s>   


zSpider.detailContentc                 C   s(   |  |}d|}ddd| ddS )Nz&&r   r
   zpics://)parseplayUrlr.   header)_scrape_all_imagesr}   )r   flagidvipFlagsimagesZ
novel_datar   r   r   playerContent   s   

zSpider.playerContentc                    s  g }t  }|}d}d}||kr||v r|S || | |}|r&|jdkr)	 |S d|_|j}td|tj}	|	r>|		dn|}
t
d|
}|D ]+ t fddd	D rVqH d
r`d   n
 drj| j    |vrs|  qHd }td|tj}|std|tj}|sd|vrd|v r|ddd }| d|d  }|}n|r|	d}|d
rd| }n|dr| j| }n|}|s|S |}|d7 }||ks|S )Nr   2   r@   rA   zn(?:id="content"|class="entry-content"|class="single-content")[^>]*>(.*?)<(?:div class="related|footer|section)z;<img[^>]+(?:src|data-original|data-src)=["\']([^"\']+)["\']c                 3   s    | ]	}|   v V  qd S rB   )lowerrC   srcr   r   rG      s    z,Spider._scrape_all_images.<locals>.<genexpr>)z.gifz.svglogoZavatariconrM   rN   r   u:   <a[^>]+href=["\']([^"\']+)["\'][^>]*>(?:下一页|Next|»)zF<a[^>]+href=["\']([^"\']+)["\'][^>]*class=["\'][^"\']*next[^"\']*["\']z/comic/chapter/rY   r   )setaddr/   r\   r]   r^   r_   r`   ra   rb   rc   rd   rh   r   rj   Irsplit)r   r.   r   visitedZcurrent_urlrY   Z	max_pagesrk   rm   Zcontent_matchZcontent_htmlZimg_matchesZnext_urlZ
next_matchbase	candidaterF   r   r   r   r      sV   &

"

'zSpider._scrape_all_images)r
   rB   )r   )__name__
__module____qualname__r	   r   r'   r/   r9   r?   r<   rw   r   r   r   __classcell__r   r   r#   r   r   	   s    

*/r   )sysr_   jsonr   Zrequests.adaptersr   Z$requests.packages.urllib3.util.retryr   base.spiderr   packagesurllib3disable_warningsr   r   r   r   <module>   s     