U
    ߁/i^(                     @   s   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	m
Z
 d dlmZmZ e jd d dlmZ G dd	 d	eZdS )
    N)	b64decode)SequenceMatcher)quoteunquote)ThreadPoolExecutoras_completedz..)Spiderc                   @   s   e Z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d Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d&iZd'S )(r   c                 C   s   dS )Nu   直播 selfr	   r	   ,   /storage/emulated/0/lz/py/sy/斗鱼虎牙.pygetName   s    zSpider.getNamec                 C   s(   zt || _W n   i | _Y nX d S N)jsonloads
extendDict)r   extendr	   r	   r   init   s    zSpider.initc                 C   s   d S r   r	   r
   r	   r	   r   destroy   s    zSpider.destroyc                 C   s   d S r   r	   )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   i }|S r   r	   )r   resultr	   r	   r   homeVideoContent#   s    zSpider.homeVideoContentc                 C   s   i }z@| j d }| j|| jdd }|d |d< |rB|d |d< W nz   dd	d
ddd
g|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gdd|d< Y nX |S )Nr      headerstimeoutclassesclassfilterfiltersdouyu   斗鱼)type_id	type_namehuya   虎牙u	   一起看208)nvu   星秀Z1008u	   二次元Z174)keynamevaluegetLiveList?iGid=2135u   舞蹈z#getTmpLiveList?iGid=1663&iTmpId=116zgetLiveList?iGid=1663zgetLiveList?iGid=2633)r"   r&   )r   fetchheaderr   )r   r    r   r   datar	   r	   r   homeContent(   s    
"*zSpider.homeContentc                 C   s  i }g }| j  }|dkrd|kr,|d }nRz@| jt| jd |dd}	|	 d | d d d d	 }W n   d
}Y nX d| d| }
| j|
|dd }|d d }d}d}d}d}d}|d d dkr|d }n|}n|dkrd|kr|d }nPz>| jt| jd |d}	|	 d | d d d d	 }W n   d}Y nX d| d| }
| j|
|dd}	|	 }|d d }|d d }d}d}d}d}d }n|d!krpd"|kr|d" }nPz>| jt| jd |d}	|	 d | d d d d	 }W n   d#}Y nX d$|d%< d&| d'| }
| j|
|dd}	|	 }|d( }|d) d }d!}d*}d+}d,}d-}ng }|}d.}d.}d.}d.}d.}|D ]N}|| }|| }|| }|| }||d/ | d/ t| |||d0 qt	|}||d< ||d1< ||d2< ||d3< ||d4< |S )5Nbilibili   B站r   r   r   r    r   r-   r*   1z`https://api.live.bilibili.com/xlive/web-interface/v1/second/getList?platform=web&parent_area_id=&page=r1   listcoverroomidtitleunamehas_more   r"   r#   r   r(   z3https://www.douyu.com/gapi/rkc/directory/mixList/2_/ZrlZpgcntZrs1ridZrnnnr&   r'   r.   zhttps://www.huya.com/Refererz!https://live.huya.com/liveHttpUI/z&iPageSize=20&iPageNo=vListZiPageNoZsScreenshotZlProfileRoomZsIntroductionZsNick ###vod_idvod_namevod_picvod_remarkspage	pagecountlimittotal)
r0   copyr/   r   r   r   r   appendstrlen)r   cidrK   r    extr   videosr0   tidrr   r1   vodListrP   ZimgnmZvidnmZtitlenmZremarknmrL   vodimgvidr:   remarkZ
lenvodListr	   r	   r   categoryContent6   s    

$




$



$
zSpider.categoryContentc                 C   s0  |d }| d}|d }|d dkr~d|d  d}| j|td }d	g}|d
 d d d d |d
 d d d  g}nz|d dkrttd|d i}d|d  }dg}d| g}n6|d dkrd|d  }dg}d| g}ng }g }|d |d}	d||	d< d||	d< d|	gi}
|
S )Nr   rE   r=   r3   z7https://api.live.bilibili.com/room/v1/Room/playUrl?cid=   z&qn=20000&platform=h5r>   r4   r1   Zquality_descriptiondesc$durlr   r"   r@   z1http://shorturl.jxpan.vip:880/r/baoshi_aio/douyu/r#   u   直播$r&   z0http://shorturl.jxpan.vip:880/r/baoshi_aio/huya/)rG   rH   z$$$vod_play_fromvod_play_urlr7   )splitr/   r0   r   r   dumpsjoin)r   didZdidListr:   r   r1   ZplatformListZplayurlListparamsrY   r   r	   r	   r   detailContent   s4    
0
zSpider.detailContentc                 C   s   |  |ddS )NFr5   )searchContentPage)r   r+   quickr	   r	   r   searchContent   s    zSpider.searchContentc              	   C   sd  g }t |}|}|dkr$dddg}n0| d||}| d|| |sTd|iS g }tddx}g }	zT|D ]*}
|
}d	}|| j||||}|	| qnt|	d
dD ]}||	  qW n   |j
dd Y nX W 5 Q R X g }|D ]V}|d krqt| d }|| }||| d  }||d  |d s|| q| d||d | d|i}|S )Nr=   ZbbZdyZhyzlivesiteList_{}_{}r7      )Zmax_workersrD      )r   F)waitr   )intgetCacheformatdelCacher   submit	runSearchrP   r   r   shutdownr7   keysremovesetCache)r   r+   rk   rK   itemskeywordZsiteListcontentsZexecutorZ
searchListsitetagapifutureZnextpageListcontentZinfosr   r	   r	   r   rj      sJ     zSpider.searchContentPagec                 C   s2   z d| }t |||||}|W S    Y nX d S )Nzself.search)eval)r   r+   r~   rK   r   Zdefnamer   r	   r	   r   ru      s    zSpider.runSearchc                 C   s   g }| j  }d|d< d| d| }| j||d }|d d }	|	D ]f}
|
d d	krZqH| |
d
 }td || dk r||krqH|d||
d |d|
d  dd qH|||d t	|k giS )Nz5buvid3=8802E18A-D264-86E5-AFF0-C0433CEE538C23554infocCookiez:https://api.bilibili.com/x/web-interface/search/type?page=z9&page_size=10&order=online&search_type=live_user&keyword=r>   r1   r   Zlive_statusr   r;   333333?z{}###bilibili###{}r9   zhttps:Zufaceu
   B站直播rF   
   )
r0   rO   r/   r   removeHtmlTagsr   ratiorP   rr   rR   r   r+   r~   pgr   rz   r0   r   r1   rC   videor:   r	   r	   r   searchbb   s&    


zSpider.searchbbc                 C   s   g }| j  }d| d| d}| j||dd }|d d }	|	D ]l}
|
d d	 d
krZqD|
d d }td || dk r||krqD|d||
d d ||
d d dd qD|||d t|k giS )Nz4https://www.douyu.com/japi/search/api/searchUser?kw=r6   z&pageSize=10&filterType=1r   r   r1   Z
relateUserZ
anchorInfoZisLiver=   nickNamer   z{}###douyu###{}r@   ZroomSrcu   斗鱼直播rF   r   )	r0   rO   r/   r   r   r   rP   rr   rR   r   r	   r	   r   searchdy  s$    


zSpider.searchdyc                 C   s   g }| j  }d|d< t|d d }d| d| d}| j||d}	|	 }
|
d	 d
 d }|D ]N}|d }td || dk r||krqb|d||d ||d dd qb|||d t	|k giS )Nzbuvid3=0r   r=   (   zOhttps://search.cdn.huya.com/?m=Search&do=getSearchContent&typ=-5&livestate=1&q=z&start=z&rows=40r>   responser5   docsZ	game_nickr   z{}###huya###{}Zroom_idZgame_avatarUrl180u   虎牙直播rF   )
r0   rO   rQ   r/   r   r   r   rP   rr   rR   )r   r+   r~   r   r   rz   r0   startr   rW   r1   rC   r   r:   r	   r	   r   searchhy  s&    

zSpider.searchhyc                 C   s0   i }ddi}d|d< d|d< ||d< ||d< |S )	N
User-AgentzIcom.android.chrome/131.0.6778.200 (Linux;Android 13) AndroidXMedia3/1.8.0r   parserD   playUrlr   r0   r	   )r   flagpidvipFlagsr   r0   r	   r	   r   playerContent4  s     zSpider.playerContentc                 C   s
   dddgS )N   z
video/MP2TrD   r	   )r   paramr	   r	   r   
localProxy@  s    zSpider.localProxyc                 C   s$   ddl m}m} |d}||d|S )Nr   )subcompilez<.*?>rD   )rer   r   )r   srcr   r   cleanr	   r	   r   r   C  s    zSpider.removeHtmlTagsr   zrMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36N)__name__
__module____qualname__r   r   r   r   r   r   r2   r]   ri   rl   rj   ru   r   r   r   r   r   r   r0   r	   r	   r	   r   r      s*   n( r   )sysr   timehashlibbase64r   Zdifflibr   urllib.parser   r   Zconcurrent.futuresr   r   pathrP   base.spiderr   r	   r	   r	   r   <module>   s   