o
    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dHddZdd Zdd Zdd	 Zd
d Z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,d-d.iZd/d0 Z	d1d2 Z
d3d4 Zd5d6 ZdId7d8Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdHdEdFZdGS )Jr    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      zSpider.getNamec                 C      d S Nr   )r   urlr   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.destroy
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36Acceptztext/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.7z	sec-ch-uazA"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"zsec-ch-ua-mobilez?0zsec-ch-ua-full-versionz"133.0.6943.98"zsec-ch-ua-archz"x86"zsec-ch-ua-platformz	"Windows"zsec-ch-ua-platform-versionz"19.0.0"zsec-ch-ua-modelz""zsec-ch-ua-full-version-listz["Not(A:Brand";v="99.0.0.0", "Google Chrome";v="133.0.6943.98", "Chromium";v="133.0.6943.98"Zdnt1zupgrade-insecure-requestszsec-fetch-sitenonezsec-fetch-modeZnavigatezsec-fetch-userz?1zsec-fetch-destdocumentzaccept-languagezzh-CN,zh;q=0.9,en;q=0.8priorityzu=0, ic                 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	   恐怖片Z12u	   戰爭片Z13u	   劇情片Z14)keynamevalueareau   地區r   u   大陸Zdaluu   美國Zmeiguou   香港Z	xianggangu   台灣Ztaiwanu   韓國Zhanguou   日本Zribenu   泰國Ztaiguou	   新加坡Zxinjiapou   馬來西亞Z	malaixiyau   印度Zyinduu   英國Zyingguou   法國Zfaguou	   加拿大Zjianadayearu   年份Z2025Z2024Z2023Z2022Z2021Z2020Z2019Z2018Z2017Z2016Z2015Z2014Z2013u   90後z	1990,1999u   80後z	1980,1989u   更早z	1900,1980u	   大陸劇Z15u	   香港劇Z16u	   台灣劇Z918u   日劇Z18u   韓劇Z915u   美劇Z916u   英劇Z923u	   歐美劇Z17u   泰劇Z922u	   亞洲劇Z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resultZ
cateManualclassesr5   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   s`  i }| d|}| dd}| dd}|r+|r+| j d| d| d| d| d	
}	n0|r=| j d| d| d
| d	}	n|rO| j d| d| d| d	}	n| j d| d| d	}	td|	  | |	}
| |
d}d}z|
d}t|dkr|d jnd}| rt|nd}W n   Y ||d< ||d< ||d< d|d< |dkr|d nd|d< |S )Nr(   r2   r   r3   z/lm/z/sx---z---z--z.htmlz-----z	/sx------z/sx--------u   篩選 URL: r=   i'  z.pagination .page-numbers   r   r<   page	pagecount   limiti?B total)	getr   printr?   r@   lentextisdigitint)r   tidpgr7   r   r8   Z_typeZ_area_yearr   rA   vdatarF   Z
paginationZ	last_pager   r   r   categoryContent]   s6   &  
zSpider.categoryContentc                 C   s  |  |d }|d dd }|dd dd d}|d ||ddp-d	|d
d dd	dd	 pAd	d	d	d}g }g }|d}| D ]}	|	  dd	dd }
|	|
 qR|d}t
| D ]?\}}g }|d}| D ]$}| pdt|d  d}| j |d }|	| d|  q|  |	d| qsd||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   第 rC   u    集href$#z$$$r_   r`   r<   )r?   rM   splitrstripattreqreplacestripitemsr6   	enumeraterL   r   reversejoin)r   idsrA   Z
full_titlevnvodZplay_from_listZplay_url_listtabstabZ	play_fromZtab_contentsicontentZepisodesZ
play_linkslinkZep_nameZep_urlr   r   r   detailContent   s:   (	
zSpider.detailContentc                 C   s*   |  d| d| }| |d|dS )Nz/ss.html?wd=z&page=r=   )r<   rE   r>   )r   r/   quickrQ   rA   r   r   r   searchContent   s   zSpider.searchContentc                 C   s  d| j  d| j d}| |}|dd}|r;|ds%| j  | }|ds/|dr5d	||d
S d||d
S |dd}|rV|dsP| j  | }d	||d
S |d}| D ]*}	|	 }
d|
v spd|
v spd|
v rd	d l}|d|
}|rd	|d	 d	 |d
  S q^d||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OriginZiframesrchttpz.m3u8z.mp4r   )parser   headerrC   zvideo sourcescriptzvar player_dataz (https?://[^\s\'"]+\.(m3u8|mp4)))	r   r?   rh   
startswithendswithrl   rM   refindall)r   flagidvipFlagsr   rA   Z
iframe_url	video_urlscriptsr   Zscript_textr   urlsr   r   r   playerContent   s6   



zSpider.playerContentc                 C   r   r   r   )r   paramr   r   r   
localProxy   r   zSpider.localProxyc              
   C   s\   z| j d| jdd}|jddW S  ty- } ztdt|  W Y d }~dS d }~ww )Nzhttps://www.minijj.comF)r   allow_redirectsLocationu   獲取主頁失敗: )fetchr   rJ   	ExceptionrK   str)r   responseer   r   r   r
      s   zSpider.gethostc              
   C   X   z| d}t|}|dW S  ty+ } ztdt|  W Y d }~dS d }~ww )Nutf-8u   Base64編碼錯誤: r   )encoder   decoder   rK   r   )r   rM   Z
text_bytesencoded_bytesr   r   r   r   e64      
z
Spider.e64c              
   C   r   )Nr   u   Base64解碼錯誤: r   )r   r   r   r   rK   r   )r   Zencoded_textr   decoded_bytesr   r   r   r   d64   r   z
Spider.d64c              
   C   sb   g }|  D ](}||dd|d |dd|d ddd	d d
 q|S )Narc   z.meta-titleZimgrW   rX   rY   r   rZ   )r[   r\   r]   r^   )rl   r6   rh   rM   rj   rk   )r   rA   vlistru   r   r   r   r@      s   

zSpider.getlistc              
   C   s   | drdn| j}| j| | }d|_|j}zt|W S  tyA } ztdt	|  t|
dW  Y d }~S d }~ww )Nr~   r   r   u   解析 HTML 失敗: )r   r   r   rJ   encodingrM   pqr   rK   r   r   )r   pathhr   rM   r   r   r   r   r?      s   
zSpider.getpqN)r   )r   )__name__
__module____qualname__r   r   r   r   r   r   r;   rB   rT   rx   rz   r   r   r
   r   r   r@   r?   r   r   r   r   r      sn    
	
$%
&"		r   )jsonsysbase64r   r   pyqueryr   r   requestsr   r   r6   base.spiderr   r   r   r   r   <module>   s   