You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中获取Windows媒体小部件的当前播放数据?

如何在Python中获取Windows媒体小部件的当前播放数据?

看起来你在获取Windows当前播放的媒体信息时遇到了点小麻烦,我来帮你梳理下可行的方案,顺便解决你安装winrt失败的问题~

首先说你碰到的winrt安装问题:你之前尝试的旧版winrtPyPI包已经停止维护并且下架了,所以不管是Python 3.9还是更高版本,都找不到这个包了,这不是你的操作问题,是包本身的问题。

现在给你几个靠谱的替代方案:

方案一:使用新版WinRT绑定(推荐)

现在官方维护的WinRT Python绑定包是winrt-windows,它支持Python 3.8及以上版本,包括3.11+,完全可以替代旧的winrt包。

步骤1:安装正确的包

先把pip升级到最新版本,避免安装时的兼容问题:

python -m pip install --upgrade pip

然后安装winrt-windows:

pip install winrt-windows

步骤2:编写代码获取媒体信息

这个包可以直接调用Windows的GlobalSystemMediaTransportControlsSessionManagerAPI,这正是Windows媒体小部件用来获取播放数据的底层接口。示例代码如下:

from winrt.windows.media.control import GlobalSystemMediaTransportControlsSessionManager as MediaManager
import asyncio

async def fetch_current_media():
    try:
        # 获取媒体会话管理器
        session_manager = await MediaManager.request_async()
        # 获取当前活跃的播放会话
        current_session = session_manager.get_current_session()
        
        if not current_session:
            return "当前没有正在播放的媒体内容"
        
        # 获取媒体属性(标题、艺术家等)
        media_props = await current_session.try_get_media_properties_async()
        # 获取播放状态(播放/暂停/停止等)
        playback_status = current_session.get_playback_info().playback_status
        
        # 整理成易读的信息
        media_info = {
            "媒体标题": media_props.title,
            "艺术家": media_props.artist,
            "专辑": media_props.album_title,
            "播放状态": str(playback_status).split(".")[-1]  # 提取状态的可读名称
        }
        return media_info
    except Exception as e:
        return f"获取媒体信息失败:{str(e)}"

# 运行异步函数
if __name__ == "__main__":
    result = asyncio.run(fetch_current_media())
    if isinstance(result, dict):
        for key, value in result.items():
            print(f"{key}: {value}")
    else:
        print(result)

运行这段代码就能得到当前正在播放的媒体的标题、艺术家、专辑和播放状态了,和你看到的媒体小部件里的信息一致。

方案二:使用第三方工具包(备选)

如果你对WinRT的异步代码不太习惯,也可以试试pycaw——虽然它主要是用来控制音频设备的,但也能间接获取部分媒体播放信息。不过它的媒体信息支持不如WinRT全面,比如某些播放器的信息可能无法正确读取,你可以根据需求选择:

安装:

pip install pycaw

最后再提下排查点

如果安装winrt-windows还是失败,你可以检查:

  • 你的Python版本是否在3.8到3.12之间(这个包的支持范围)
  • 是否使用的是64位Python(WinRT绑定对32位Python的支持有限)
  • 有没有开启虚拟环境,确保安装的包在正确的环境里

你可以先试试方案一,应该能完美解决你的问题,如果还有其他细节问题可以再调整~

备注:内容来源于stack exchange,提问作者malloww

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 20:18:01