Skip to main content
Glama

xigua-MCP

by xiguaxiaome
bilibili_search.cpython-310.pyc5.7 kB
o �3Eh0$�@s�ddlmZddlmZddlmZddlmZddl m Z ddl Z ddl Z ddlZddlmZddlmZd Zd ejd efd d �Zd ejd efdd�Zd ejd efdd�Zd ejd efdd�Zd ejfdd�Zd ejded efdd�Zdefdd�ZdS)�)� webdriver)�By)� WebDriverWait)�expected_conditions)�ServiceN)�Dict)�FastMCPzbilibili_cookies.json�driver�returnc Cs~z$|��}ttd��}t�||�Wd�WdS1swYWdSty>}ztd|���WYd}~dSd}~ww)u保存当前Cookies到文件�wNTu保存Cookies失败: F)Z get_cookies�open� COOKIES_FILE�json�dump� Exception�print)r �cookies�f�e�r�'E:\xiaozhi-mcp\tools\bilibili_search.py� save_cookiess  ����rc Cs�tj�t�sdSzXttd�� }t�|�}Wd�n1swY|�d�|��|D]/}d|�dd�vr<d|d<d |vrDd |d <d |vrLd|d <d |vrXt |d �|d <|� |�q.Wd St yz}zt d|���WYd}~dSd}~ww)u从文件加载CookiesF�rN�https://www.bilibili.com� bilibili.com�domain�z .bilibili.com�path�/�secureZexpiryTu加载Cookies失败: ) �osr�existsr r r�load�getZdelete_all_cookies�intZ add_cookierr)r rr�cookierrrr� load_cookiess0   �  ��r&cCs�t|�rA|�d�t�d�zt|d��t�tj df��|�d�t�d�WdSt j � t �r8t �t �td�Yt|�St|�S)u!自动登录流程(优化版)r��z5.header-avatar, .header-avatar-wrap, .nav-user-center�Tu1Cookie 已失效或未登录,需要重新登录)r&r#�time�sleepr�until�EC�presence_of_element_locatedr� CSS_SELECTORr rr!r �remover� manual_login)r rrr� auto_login>s   �     r2c Cstztd�|�d�t|d��dd��t�d�t|�WdSty9}ztd|���WYd }~d Sd }~ww) u!手动登录流程(优化版)u,请手动完成登录(30秒内完成)...z#https://passport.bilibili.com/login�cSsd|jvo d|jvS)N�loginr)Z current_url)�drrr�<lambda>_szmanual_login.<locals>.<lambda>r'Tu登录失败或超时: NF)rr#rr,r*r+rr)r rrrrr1Ws  � ��r1cCsZt��}|�d�|�ddg�|�d�|�d�|�dd�tj|d�}|�d �|S) u0初始化浏览器驱动(防止自动关闭)z---disable-blink-features=AutomationControlledZexcludeSwitcheszenable-automationz--start-maximizedz --log-level=3�detachT)�options� )rZ EdgeOptions� add_argumentZadd_experimental_option�EdgeZimplicitly_wait)r8r rrr� init_driverjs      r<�keywordc Cs�z�d|��}|�|�t|d��t�tjdf��t|d��t�tjdf��}|�d|�t � d�|�d|�t|d ��t� d ��|j � |jd�t|d��t�tjd f��td �zt|d��t�tjd f��}|�d�dkr||��td�WnYzt|d��t�tjdf��}|��td�WWdStd�YWdSty�}ztd|���WYd}~dSd}~ww)u9搜索并播放视频(只要打开视频就算成功)z(https://search.bilibili.com/all?keyword=�z.bili-video-card�z.bili-video-card:first-child azarguments[0].scrollIntoView();r)zarguments[0].click();r9r'zbpx-player-containeru视频页面已成功加载。z.bpx-player-ctrl-playz data-state�pauseu尝试点击播放按钮。z.bpx-player-ctrl-fullu尝试全屏播放。u全屏失败或已全屏。Tu播放视频失败: NF)r#rr,r-r.rr/Zelement_to_be_clickableZexecute_scriptr*r+Znumber_of_windows_to_beZ switch_to�windowZwindow_handlesZ CLASS_NAMEr� get_attribute�clickr)r r=Z search_urlZ first_videoZ play_buttonZfullscreen_btnrrrr�search_and_play_video~sX   � �    � �� � ���rD�mcpcCs&|��dtdtttffdd��}dS)u"注册B站视频播放功能到MCPr=r c Ss�d}z*t�}t|�s|r|��ddd�WSt||�s'|r!|��ddd�WSddd�WStyN}z|r:|��ddt|���d�WYd}~Sd}~ww) u� 在B站搜索并尝试全屏播放视频(成功后浏览器保持打开) 参数: - keyword: 搜索关键词 返回: - {"success": bool, "result": str} NFuB站登录失败)�success�resultu视频播放失败Tu-视频已成功播放,浏览器保持打开u发生错误: )r<r2�quitrDr�str)r=r rrrr�play_bilibili_video�s$      ��z3register_bilibili_tool.<locals>.play_bilibili_videoN)�toolrIr)rErJrrr�register_bilibili_tool�s rL)ZseleniumrZselenium.webdriver.common.byrZselenium.webdriver.support.uirZselenium.webdriver.supportrr-Zselenium.webdriver.edge.servicerZ EdgeServicerr r*�typingr�mcp.server.fastmcprr r;�boolrr&r2r1r<rIrDrLrrrr�<module>s$        "=

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/xiguaxiaome/xigua-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server