o
    h:                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZejd daddiaG dd de
Z
dS )u   

作者 丢丢喵推荐 🚓 内容均从互联网收集而来 仅供交流学习使用 版权归原创者所有 如侵犯了您的权益 请通知作者 将及时删除侵权内容
                    ====================Diudiumiao====================

    )unpad)pad)unquote)ARC4)quote)Spider)AES)datetime)BeautifulSoup)	b64decodeNz..zhttps://www.4kvm.netz
User-AgentzMozilla/5.0 (Linux; U; Android 8.0.0; zh-cn; Mi Note 2 Build/OPR1.170623.032) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.1.1c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd d
edefddZdd Z	dd Z
dd Zdd Zdd Zdd Zd!ddZdd ZdS )"r   c                 C   s   dS )N   首页 selfr   r   (   /storage/emulated/0/lz/py/sy/4K影院.pygetName-      zSpider.getNamec                 C      d S Nr   )r   extendr   r   r   init0   r   zSpider.initc                 C   r   r   r   )r   urlr   r   r   isVideoFormat3   r   zSpider.isVideoFormatc                 C   r   r   r   r   r   r   r   manualVideoCheck6   r   zSpider.manualVideoCheck start_index1
end_index2c              
   C   sB  |dkrg }	 | |}|dkrn)| ||t| }	|	dkr n||t| |	 }
||
 |||
 | d}qt|dkrd}tt|D ]X}t||| }d}|D ]=}td|d }|rh|d}nd}d|d vr|d	|d  d
| t	 |d  7 }qV|d	|d  d
| |d  7 }qV|dd  }|| d }qH|d d }|S dS | |}|dkrdS | ||t| }	|	dkrdS |dkr||t| |	 }
|
ddS |dkr||t| |	 }
t||
}|rd
|}|S |dkr||t| |	 }
t||
}|rdd |D }d
|}|S d S d S )N   Tr   r   z(?:^|[^0-9])(\d+)(?:[^0-9]|$)   http#$z$$$\    c                 S   s   g | ]}| qS r   r   ).0itemr   r   r   
<listcomp>r   s    z.Spider.extract_middle_text.<locals>.<listcomp>)findlenappendreplacerangerefindallsearchgroupxurljoin)r   text	start_strend_strplr   r   plxstart_index	end_indexmiddle_textpurlimatchesoutputmatchmatch3numberjgnew_listr   r   r   extract_middle_text9   sn   


&"



zSpider.extract_middle_textc                    s   dg i}t jttd}d|_|j}t|d}|jddd}|D ]6}|d}|D ],}	|	j  t	 fd	d
dD r;q(|	
dd }
d|
vrJt|
 }
|d |
 d q(q|S )Nclassr   headersutf-8lxmlulzmain-headerclass_lic                 3   s    | ]}| v V  qd S r   r   )r'   keywordnamer   r   	<genexpr>   s    z%Spider.homeContent.<locals>.<genexpr>)r   u	   电视剧u   高分电影u   影片下载u   热门播放ahrefr    )type_id	type_name)requestsgetr3   headerxencodingr5   r
   find_allstripanyr*   r,   )r   filterresultdetailresdocsoupssoupvodsvodidr   rQ   r   homeContentv   s$   


zSpider.homeContentc                 C   s   g }t jttd}d|_|j}t|d}|jddd}|D ]6}|dd }|jd	d
d}|dd }	|dd }
|jd	dd}|j	 }|	||
|d}|
| qd|i}|S )NrH   rJ   rK   articlezitem moviesrM   imgaltdivposterrT   rU   srcratingvod_idvod_namevod_picvod_remarkslist)rX   rY   r3   rZ   r[   r5   r
   r\   r*   r]   r,   )r   videosra   rb   rc   rd   rg   rR   idsrh   picremarksremarkvideor`   r   r   r   homeVideoContent   s*   

zSpider.homeVideoContentc                 C   s  i }g }d|vrd|v rZ| d}tj|d td}d|_|j}	t|	d}
|
jddd	}|D ]*}|j }|	d
d }| 
t|	ddddd}d}||||d}|| q.n|rat|}nd}| dt| }tj|td}d|_|j}	t|	d}
|
jddd	}|D ];}|	dd }|j	ddd	}|	d
d }|	dd }|j	ddd	}|j }|d | ||d|d}|| qnn|rt|}nd}| dt| }tj|td}d|_|j}	t|	d}
|
jddd	}|D ]@}|d}|D ]6}|	dd }|j	ddd	}|	d
d }|	dd }|j	ddd	}|j }||||d}|| qqt|dk r<d}nd }d!|i}||d"< ||d#< d$|d%< t||d&< |S )'Nmovies@r   rH   rJ   rK   rm   zse-crM   rT   rU   z$<meta property="og:image"  content=""z#038;r      推荐rq   r   z/page/rj   zitem tvshowsrk   rl   rn   ro   updatefolderrr   rs   rt   vod_tagru   zanimation-2rp      i'  rv   page	pagecounti  totallimit)splitrX   rY   rZ   r[   r5   r
   r\   r]   r*   rF   strr-   r,   intr+   )r   cidpgr_   extr`   rw   fengera   rb   rc   rd   rg   rR   rh   ry   r{   r|   r   r   rx   rz   r(   rf   r   r   r   r   categoryContent   s   










zSpider.categoryContentc                 C   s<  |d }i }g }d}d}d|vrht j|td}d|_|j}t|d}d| |dd	d }	| |d
dd}
| |ddd}t|}|D ]}t	|d }|d  d|
 }|| d | d }qC|d d }d}n&t j|td}d|_|j}t|d}d| |dd	d }	| |ddd}d}|
||	||d ||d< |S )Nr   r   r~   rH   rJ   rK   u   剧情介绍📢z"<meta name="description" content="r   zpostid:,zvideourls:[z],rR   r   r   r"   r!   r   u   4K影院zdata-postid='')rr   vod_contentvod_play_fromvod_play_urlrv   )rX   rY   rZ   r[   r5   r
   rF   jsonloadsr   r,   )r   rx   didr`   rw   xianlubofangrb   rc   contentZpostidZres1datarg   rR   rh   r   r   r   detailContent%  sF   


zSpider.detailContentc                 C   s  d|v rg| d}t d|d  d|d  }tj|td}d|_|j}| |dd	d}| |d
d	d}	| |dd	d}
| |dd	d}| |dd	d}||	|
||d}tj|t|d}t	
|j}|d }nWt d| d}tj|td}d|_|j}| |dd	d}| |d
d	d}	| |dd	d}
| |dd	d}| |dd	d}||	|
||d}tj|t|d}t	
|j}|d }i }d|d< d|d< ||d< t|d< |S )Nr   z/artplayer?id=r   z&source=0&ep=r   rH   rJ   z
expires: 'r   z	client: 'znonce: 'ztoken: 'z	source: ')expiresclientnoncetokensource)r   rI   r   r   z/artplayer?mvsource=0&id=z	&type=hlsparser   playUrlheader)r   r3   rX   rY   rZ   r[   r5   rF   postr   r   )r   flagrh   vipFlagsr   r   ra   rb   r   r   r   r   r   payloadresponseresponse_datar`   r   r   r   playerContentY  sX   

zSpider.playerContentc                 C   s  i }g }t  d| }tj|td}d|_|j}t|d}	|	jddd}
|
D ]R}|jddd}|d	d
 }d|vr\|dd }|dd }d}|d | ||d|d}|	| q&|dd }|dd }d}||||d}|	| q&||d< ||d< d|d< d|d< d|d< |S )Nz/xssearch?s=rH   rJ   rK   rm   zresult-itemrM   titlerT   rU   r~   rk   rl   ro   r   r   r   r   rq   rv   r   r   r   Z   r   i?B r   )
r3   rX   rY   rZ   r[   r5   r
   r\   r*   r,   )r   keyquickr   r`   rw   r   ra   rb   rc   rd   rg   rx   rh   rR   ry   r{   r|   r   r   r   searchContentPage  sJ   

zSpider.searchContentPage1c                 C   s   |  ||dS )Nr   )r   )r   r   r   r   r   r   r   searchContent  s   zSpider.searchContentc                 C   sF   |d dkr|  |S |d dkr| |S |d dkr!| |S d S )Ntypem3u8mediats)	proxyM3u8
proxyMediaproxyTs)r   paramsr   r   r   
localProxy  s   


zSpider.localProxyN)r   r   )r   )__name__
__module____qualname__r   r   r   r   r   rF   ri   r}   r   r   r   r   r   r   r   r   r   r   r   )   s    =!s4:
7r   )__doc__Crypto.Util.Paddingr   r   urllib.parser   Crypto.Cipherr   r   base.spiderr   r   r	   bs4r
   base64r   urllib.requesturllibbinasciirX   r   timesysr/   ospathr,   r3   rZ   r   r   r   r   <module>   s6   