U
    *)li                     @   sn   d 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e	ej
j ejd G dd deZdS )ug   
@header({
  searchable: 1,
  filterable: 1,
  quickSearch: 1,
  title: '独播库',
  lang: 'hipy'
})
    )SpiderNz..c                   @   s   e Zd Zdddddd Z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dd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)S ),r   z)Mozilla/5.0 (Windows NT 10.0; Win64; x64)z
Keep-Alivegzipzhttps://www.duboku.tv/)
User-Agent
ConnectionAccept-EncodingZRefererzhttps://api.dbokutv.com c                 C   s   d S N )selfextendr	   r	   )   /storage/emulated/0/lz/py/sy/独播库.pyinit   s    zSpider.initc                 C   s2   | j s
d S ddddddddddd	d
dgiS )Nclass   u	   连续剧)Ztype_id	type_name   u   综艺   u   电影   u   动漫)host)r
   filterr	   r	   r   homeContent   s     zSpider.homeContentc                 C   s   | j | | j d| jdd }g }|D ]P}|dg D ]>}|| |d|d|d | |d |d	 d
 q<q,d|iS )Nz/homeFheadersverifyVodListDIdDuIdNameTnIdTagvod_idvod_namevod_picvod_remarkslist)fetchsignr   r   jsongetappenddecode)r
   responsevideosijr	   r	   r   homeVideoContent#   s    $zSpider.homeVideoContentc                 C   sh  | j | | j d| dt|dkr&dn| d| jdd }g d }}|d	 D ]>}|| |d
|d|d | |d |d d qRzL|d D ]>}	|	d dkrt	| |	d|	d
dd }
|
r|
}qW n tk
r   Y nX |dkr\zB|d D ]4}	|	d dkrt	|	d 
dd }
|
r|
}qW n tk
rZ   d}Y nX |||dS )Nz	/vodshow/z--------1r   z---Fr   r   r   r   r   r   r   r   r    ZPaginationListTypeZStartEndZPIdZPuId-   Z	ShortPage/r   )r%   	pagecountpage)r&   r'   r   strr   r(   r*   r+   r)   intsplit	Exception)r
   tidpgr   r   r,   r-   r6   r.   r/   Zpgcountr	   r	   r   categoryContent0   s6    @

& 

 
zSpider.categoryContentr1   c                 C   s   | j | | j d d| | jdd }g }|D ]J}|| |d|d|d | |d |d	 |d
 |d d q6||dS )Nz
/vodsearchz&wd=Fr   r   r   r   r   r   ActorRating)r!   r"   r#   r$   	vod_actorZ	vod_score)r%   r7   )r&   r'   r   r   r(   r*   r+   r)   )r
   keyquickr=   r,   r-   r.   r	   r	   r   searchContentK   s    .
zSpider.searchContentc                    s    j   j |d   jdd } f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iS )Nr   Fr   c                    s(   g | ] }|d   d  |d  qS )ZEpisodeName$ZVId)r+   .0r.   r
   r	   r   
<listcomp>[   s     z(Spider.detailContent.<locals>.<listcomp>ZPlaylistr   r   u	   评分：r@   ZReleaseYearZRegion,r?   ZDirectorZDescriptionu	   独播库#ZGenreZScenarioZLanguage)r!   r"   r#   r$   Zvod_yearZvod_arearA   Zvod_directorZvod_contentZvod_play_fromZvod_play_urlr   r%   )r&   r'   r   r   r(   r+   join)r
   ZidsdataZ	play_urlsZvideor	   rH   r   detailContentY   s     *zSpider.detailContentc                 C   sN   | j | | j | | jdd }dddddd}d	d	| |d
 |dS )NFr   zoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36zgzip, deflatezhttps://w.duboku.iozhttps://w.duboku.io/zu=1, i)r   r   originZrefererZpriorityr   ZHId)Zjxparseurlheader)r&   r'   r   r   r(   r+   )r
   flagZvideo_idZ	vip_flagsresr   r	   r	   r   playerContentl   s    &zSpider.playerContentc                    s   |rt |tsdS |ds$dS d z6 fddtdt D }d|dd}W n tk
rt   Y dS X z>d	t|d	  }|d	kr|d| 7 }tj	|d
d}|
dW S  tk
r   Y dS X d S )Nr   z'"
   c                 3   s(   | ] }||   d d d V  qd S )Nr	   rF   Zsegment_lengthZstripped_strr	   r   	<genexpr>}   s     z Spider.decode.<locals>.<genexpr>r   .=r   T)validatezutf-8)
isinstancer8   striprangelenrL   replacer;   base64	b64decoder+   )r
   rM   Zreversed_segmentsZprocessed_base64Zpadding_neededZdecoded_bytesr	   rX   r   r+   w   s&     
  zSpider.decodec                 C   s   t tt  t dd}|d }d| }tt }t|}| | | |}t|	 
 dd}| d}	| d}
| d	|	 d
|
 d| S )Nr   i /i i 5r[   rZ   <   &   z?sign=z&token=z&ssid=)randomseedr9   timerandintr8   interleave_stringsrb   	b64encodeencoder+   ra   random_string)r
   rawZrandom_numberZvalue_aZvalue_bZcurrent_unix_timestampZunix_timestamp_strZinterleaved_strZssid_base64_encodedZrandom_signZrandom_tokenr	   r	   r   r'      s    

zSpider.signc                 C   sn   g }t t|t|}t|D ] }|||  |||  q|||d   |||d   d|S )Nr   )minr`   r_   r*   rL   )r
   Z	first_strZ
second_strZinterleaved_charsZ
min_lengthr.   r	   r	   r   rj      s    zSpider.interleave_stringsc                    s:   d t tt t   d fddt|D S )NZ>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789r   c                 3   s   | ]}t  V  qd S r   )rf   choice)rG   _	characterr	   r   rY      s     z'Spider.random_string.<locals>.<genexpr>)rf   rg   r9   rh   r`   rL   r_   )r
   lengthr	   rr   r   rm      s    zSpider.random_stringc                 C   s   d S r   r	   rH   r	   r	   r   getName   s    zSpider.getNamec                 C   s   d S r   r	   )r
   rQ   r	   r	   r   isVideoFormat   s    zSpider.isVideoFormatc                 C   s   d S r   r	   rH   r	   r	   r   manualVideoCheck   s    zSpider.manualVideoCheckc                 C   s   d S r   r	   rH   r	   r	   r   destroy   s    zSpider.destroyc                 C   s   d S r   r	   )r
   paramr	   r	   r   
localProxy   s    zSpider.localProxyN)r   )r1   )__name__
__module____qualname__r   r   r   r   r0   r>   rD   rN   rU   r+   r'   rj   rm   ru   rv   rw   rx   rz   r	   r	   r	   r   r      s.   

r   )__doc__Zbase.spiderr   sysrh   r(   rb   rf   urllib3disable_warnings
exceptionsInsecureRequestWarningpathr*   r	   r	   r	   r   <module>   s
   0