U
    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
       zSpider.getName c                    sv   t  | d| _d| jd ddd| _t | _tddd	d
ddg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 )Nr   )hasattrr   closer   r   r   r   destroy   s    
 zSpider.destroyNc                 C   s:   |p| j  }z| jj||ddddW S    Y d S X 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 )r3   r1   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pgr8   r!   r/   r   r   r   categoryContent<   s    zSpider.categoryContentc              
      s  |  |}g }|rt|jdkrtd|_|j}|}td|tj}|rN|d}td|tj}|D ]}	td|	}
|
szqb|
d t	 fddd	D rqbtd
|	}|std|	}|r|dnd}|sd}td|	}|r|dnt
dd|	 dd }|dsbd|ksbt|dkr*qb dr@d   n drV| j   | ||ddddd qb||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   | ]}| kV  qd S Nr   r5   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   )r0   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item
href_match	img_matchpictitle_matchnamer   rF   r   r=   A   sN    
 

 
   *   
 

zSpider._get_post_listr   c                 C   s~   d| }| j  }d|kr.| j d|d< n| j d|d< t|dkr`| 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}|rtdd|d	 }|d d |d< g }	t	d|}
|
r|
D ]L\}}|
drd| }n|
dr| j| }| }|	| d|  qn|	d|  d|	|d< d|giS )Nr   rY   rB   r   rv   u	   74P漫画)rS   rT   rU   r2   vod_contentvod_play_fromvod_play_urlz<h1[^>]*>(.*?)</h1>r   rT   z+<div class="entry-content"[^>]*>(.*?)</div>rI   rA   r{   zN<a[^>]+href=["\']([^"\']*/(?:comic|novel)/chapter/[^"\']+)["\'][^>]*>(.*?)</a>rN   rO   r   $u   在线观看$#r}   )r0   r^   r_   r`   ra   rc   rb   rf   rg   rd   ri   r   rk   join)r   idsr/   rl   rn   vodh1
desc_matchZ
clean_desc	play_listZchapter_linksrG   ru   r   r   r   detailContentw   sD    
 
 
 

 
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images
novel_datar   r   r   playerContent   s    

zSpider.playerContentc                    s  g }t  }|}d}d}||kr||kr,q|| | |}|rN|jdkrRqd|_|j}td|tj}	|	r||		dn|}
t
d|
}|D ]V t fddd	D rq d
rd   n dr| j    |kr|  qd }td|tj}|std|tj}|sTd|krTd|krT|ddd }| d|d  }|}nB|r|	d}|d
rzd| }n|dr| j| }n|}|sq|}|d7 }q|S )Nr   2   rA   rB   zn(?:id="content"|class="entry-content"|class="single-content")[^>]*>(.*?)<(?:div class="related|footer|section)z;<img[^>]+(?:src|data-original|data-src)=["\']([^"\']+)["\']c                 3   s   | ]}|   kV  qd S rC   )lowerrD   srcr   r   rH      s     z,Spider._scrape_all_images.<locals>.<genexpr>)z.gifz.svglogoZavatariconrN   rO   r   u:   <a[^>]+href=["\']([^"\']+)["\'][^>]*>(?:下一页|Next|»)zF<a[^>]+href=["\']([^"\']+)["\'][^>]*class=["\'][^"\']*next[^"\']*["\']z/comic/chapter/rZ   r   )setaddr0   r]   r^   r_   r`   ra   rb   rc   rd   re   ri   r   rk   Irsplit)r   r/   r   visitedZcurrent_urlrZ   Z	max_pagesrl   rn   Zcontent_matchZcontent_htmlZimg_matchesZnext_urlZ
next_matchbase	candidaterG   r   r   r   r      s\    
 

  
 

 

 
  
zSpider._scrape_all_images)r   )N)r   )__name__
__module____qualname__r	   r   r(   r0   r:   r@   r=   rz   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
    