U
    h6                     @   sd   d dl Z d dlZd dlmZmZ d dlmZ d dlm	Z	 ej
d d dlmZ G dd deZdS )	    N)	b64decode	b64encode)PyQuery)Sessionz..)Spiderc                   @   s   e Zd Zd7ddZdd Zdd Zdd	 Zd
d ZdddddddddddddddddddZdd Z	d d! Z
d"d# Zd$d% Zd8d&d'Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd9d4d5Zd6S ):r    c                 C   s8   |   | _| j d| jd< t | _| jj| j d S )N/referer)gethosthostheadersr   sessionupdate)selfextend r   ,   /storage/emulated/0/lz/py/sy/小鸡暴走.pyinit   s    
zSpider.initc                 C   s   dS )NZminijjr   r   r   r   r   getName   s    zSpider.getNamec                 C   s   d S Nr   )r   urlr   r   r   isVideoFormat   s    zSpider.isVideoFormatc                 C   s   d S r   r   r   r   r   r   manualVideoCheck   s    zSpider.manualVideoCheckc                 C   s   d S r   r   r   r   r   r   destroy   s    zSpider.destroyzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36ztext/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7zA"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"z?0z"133.0.6943.98"z"x86"z	"Windows"z"19.0.0"z""z["Not(A:Brand";v="99.0.0.0", "Google Chrome";v="133.0.6943.98", "Chromium";v="133.0.6943.98"1nonenavigatez?1documentzzh-CN,zh;q=0.9,en;q=0.8zu=0, i)
User-AgentAcceptz	sec-ch-uazsec-ch-ua-mobilezsec-ch-ua-full-versionzsec-ch-ua-archzsec-ch-ua-platformzsec-ch-ua-platform-versionzsec-ch-ua-modelzsec-ch-ua-full-version-listZdntzupgrade-insecure-requestszsec-fetch-sitezsec-fetch-modezsec-fetch-userzsec-fetch-destzaccept-languagepriorityc                 C   s*  i }ddddd}g }i }|D ]}| ||| d q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	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/d0d
d1d2d
d3d4d
d5d6d
gdd7d8d	dd
d9d9d
d:d:d
d;d;d
d<d<d
d=d=d
d>d>d
d?d?d
d@d@d
dAdAd
dBdBd
dCdCd
dDdDd
dEdEd
dFdGd
dHdId
dJdKd
gdgddd	dd
dLdMd
dNdOd
dPdQd
dRdSd
dTdUd
dVdWd
dXdYd
dZd[d
d\d]d
d^d_d
g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/d0d
d1d2d
d3d4d
d5d6d
gdd7d8d	dd
d9d9d
d:d:d
d;d;d
d<d<d
d=d=d
d>d>d
d?d?d
d@d@d
dAdAd
dBdBd
dCdCd
dDdDd
dEdEd
dFdGd
dHdId
dJdKd
gdgddd	dd
d`dad
dbdcd
ddded
dfdgd
gdddd	dd
ddd
dd d
d'd(d
gdd7d8d	dd
d9d9d
d:d:d
d;d;d
d<d<d
d=d=d
d>d>d
d?d?d
d@d@d
dAdAd
dBdBd
dCdCd
dDdDd
dEdEd
dFdGd
dHdId
dJdKd
gdgddd	dd
dhdid
djdkd
dldmd
dndod
dpdqd
drdsd
g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d7d8d	dd
d9d9d
d:d:d
d;d;d
d<d<d
d=d=d
d>d>d
d?d?d
d@d@d
dAdAd
dBdBd
dCdCd
dDdDd
dEdEd
dFdGd
dHdId
dJdKd
gdgdt}||du< ||dv< |S )wNr   234)u   電影u	   電視劇u   經典動漫u   綜藝娛樂)	type_nametype_idtypeu   類型u   全部)nvu	   動作片8u	   喜劇片9u	   愛情片10u	   科幻片11u	   恐怖片12u	   戰爭片13u	   劇情片14)keynamevalueareau   地區r   u   大陸Zdaluu   美國Zmeiguou   香港Z	xianggangu   台灣Ztaiwanu   韓國hanguou   日本Zribenu   泰國Ztaiguou	   新加坡Zxinjiapou   馬來西亞Z	malaixiyau   印度Zyinduu   英國Zyingguou   法國Zfaguou	   加拿大Zjianadayearu   年份Z2025Z202420232022202120202019201820172016201520142013u   90後z	1990,1999u   80後z	1980,1989u   更早z	1900,1980u	   大陸劇15u	   香港劇16u	   台灣劇Z918u   日劇18u   韓劇Z915u   美劇Z916u   英劇Z923u	   歐美劇17u   泰劇Z922u	   亞洲劇19u   國漫Z906u   日漫Z904u   美漫Z905u   其他動漫Z903u   大陸綜藝Z911u   港台綜藝Z907u   韓綜Z908u   日綜Z912u   泰綜Z913u   歐美綜藝Z909)r   r"   r#   r$   classfilters)append)r   filterresult
cateManualclassesrH   kr   r   r   homeContent5   sB    
Jzbz2*BJzSpider.homeContentc                 C   s   |   }d| |diS )Nlist.update_area_lists .i_listgetpqgetlist)r   datar   r   r   homeVideoContentY   s    zSpider.homeVideoContentc              
   C   sj  i }| d|}| dd}| dd}|rV|rV| j d| d| d| d| d	
}	n`|rz| j d| d| d
| d	}	n<|r| j d| d| d| d	}	n| j d| d| d	}	td|	  | |	}
| |
d}d}z>|
d}t|dkr|d jnd}| rt|nd}W n   Y nX ||d< ||d< ||d< d|d< |dkr^|d nd|d< |S )Nr'   r4   r   r6   z/lm/z/sx---z---z--z.htmlz-----z	/sx------z/sx--------u   篩選 URL: rQ   i'  z.pagination .page-numbers   r   rP   page	pagecount   limiti?B total)	getr   printrS   rT   lentextisdigitint)r   tidpgrJ   r   rK   _typeZ_areaZ_yearr   rU   vdatarZ   
pagination	last_pager   r   r   categoryContent]   s6    &  
zSpider.categoryContentc                 C   s  |  |d }|d dd }|dd dd d}|d ||ddpZd	|d
d dd	dd	 pd	d	d	d}g }g }|d}| D ],}	|	  dd	dd }
|	|
 q|d}t
| D ]\}}g }|d}| D ]L}| p"dt|d  d}| j |d }|	| d|  q|  |	d| qd||d< d||d< d|giS )Nr   titlez - u   線上觀看u   手機播放,z.vod-picdata-originalr   
.meta-post      )vod_idvod_namevod_picvod_remarksvod_play_fromvod_play_urlz#sea-tab li a
z</span>z#sea-tab-content .tab-panez.play-list au   第 rW   u    集href$#z$$$ru   rv   rP   )rS   ra   splitrstripattreqreplacestripitemsrI   	enumerater`   r   reversejoin)r   idsrU   Z
full_titlevnvodZplay_from_listZplay_url_listtabstab	play_fromZtab_contentsicontentepisodesZ
play_linkslinkep_nameZep_urlr   r   r   detailContent   s:    (	zSpider.detailContentc                 C   s*   |  d| d| }| |d|dS )Nz/ss.html?wd=z&page=rQ   )rP   rY   rR   )r   r1   quickre   rU   r   r   r   searchContent   s    zSpider.searchContentc                 C   s  d| j  d| j d}| |}|dd}|rv|dsJ| j  | }|ds^|drjd	||d
S d||d
S |dd}|r|ds| j  | }d	||d
S |d}| D ]T}	|	 }
d|
ksd|
ksd|
krd	d l}|d|
}|rd	|d	 d	 |d
  S qd||d
S )NzxMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5410.0 Safari/537.36r   )r   RefererOriginiframesrchttpz.m3u8z.mp4r   )parser   headerrW   zvideo sourcescriptzvar player_dataz (https?://[^\s\'"]+\.(m3u8|mp4)))	r   rS   r~   
startswithendswithr   ra   refindall)r   flagidvipFlagsr   rU   Z
iframe_url	video_urlscriptsr   script_textr   urlsr   r   r   playerContent   s4    



zSpider.playerContentc                 C   s   d S r   r   )r   paramr   r   r   
localProxy   s    zSpider.localProxyc              
   C   sb   z"| j d| jdd}|jddW S  tk
r\ } ztdt|  W Y dS d }~X Y nX d S )Nzhttps://www.minijj.comF)r   allow_redirectsLocationu   獲取主頁失敗: )fetchr   r^   	Exceptionr_   str)r   responseer   r   r   r
      s    zSpider.gethostc              
   C   s^   z| d}t|}|dW S  tk
rX } ztdt|  W Y dS d }~X Y nX d S )Nutf-8u   Base64編碼錯誤: r   )encoder   decoder   r_   r   )r   ra   
text_bytesencoded_bytesr   r   r   r   e64   s    
z
Spider.e64c              
   C   s^   z| d}t|}|dW S  tk
rX } ztdt|  W Y dS d }~X Y nX d S )Nr   u   Base64解碼錯誤: r   )r   r   r   r   r_   r   )r   encoded_textr   decoded_bytesr   r   r   r   d64   s    
z
Spider.d64c              
   C   sb   g }|  D ]P}||dd|d |dd|d ddd	d d
 q|S )Nary   z.meta-titleimgrm   rn   ro   r   rp   )rq   rr   rs   rt   )r   rI   r~   ra   r   r   )r   rU   vlistr   r   r   r   rT      s    

zSpider.getlistc              
   C   s   | drdn| j}| j| | }d|_|j}z
t|W S  tk
r } z(tdt	|  t|
d W Y S d }~X Y nX d S )Nr   r   r   u   解析 HTML 失敗: )r   r   r   r^   encodingra   pqr   r_   r   r   )r   pathhr   ra   r   r   r   r   rS      s    
zSpider.getpqN)r   )r   )r   )__name__
__module____qualname__r   r   r   r   r   r   rO   rV   rj   r   r   r   r   r
   r   r   rT   rS   r   r   r   r   r      sH   
$%&
"		r   )jsonsysbase64r   r   pyqueryr   r   requestsr   r   rI   base.spiderr   r   r   r   r   <module>   s   