如何使用Spotipy在同一网络的Chromecast设备上启动Spotify播放列表播放?
使用Spotipy + Pychromecast实现Chromecast播放Spotify播放列表
Spotipy本身没有直接控制Chromecast的能力,但可以结合pychromecast库和Spotify的Connect功能实现需求,以下是具体步骤:
1. 安装依赖包
先安装所需的Python库:
pip install spotipy pychromecast
2. 配置Spotify开发者权限
- 登录Spotify开发者后台创建应用,获取
CLIENT_ID和CLIENT_SECRET,设置重定向URI(比如http://localhost:8080) - 授权时必须申请
user-modify-playback-state、user-read-playback-state、playlist-read-private这几个scope,否则无法修改播放状态和读取播放列表
3. 扫描并连接局域网内的Chromecast
用pychromecast找到目标设备:
import pychromecast # 替换成你的Chromecast设备名称 TARGET_CAST_NAME = "客厅Chromecast" chromecasts, _ = pychromecast.get_listed_chromecasts(friendly_names=[TARGET_CAST_NAME]) if not chromecasts: print(f"未找到名称为{TARGET_CAST_NAME}的Chromecast设备") exit() cast = chromecasts[0] cast.wait() # 等待设备连接就绪
4. 初始化Spotipy客户端并获取播放列表URI
import spotipy from spotipy.oauth2 import SpotifyOAuth sp = spotipy.Spotify(auth_manager=SpotifyOAuth( client_id="你的CLIENT_ID", client_secret="你的CLIENT_SECRET", redirect_uri="http://localhost:8080", scope="user-modify-playback-state user-read-playback-state playlist-read-private" )) # 替换成你的播放列表ID PLAYLIST_ID = "37i9dQZF1DXcBWIGoYBM5M" playlist = sp.playlist(PLAYLIST_ID) playlist_uri = playlist["uri"]
5. 切换播放目标并启动播放
需要先通过Spotipy确认Chromecast已被识别为Spotify可用设备,然后切换播放目标并启动列表播放:
# 获取Spotify可用设备列表,找到Chromecast的设备ID devices = sp.devices() cast_device_id = None for device in devices["devices"]: if device["name"] == TARGET_CAST_NAME: cast_device_id = device["id"] break if not cast_device_id: print("Spotify未检测到该Chromecast设备,请确保设备已登录相同的Spotify账号") exit() # 切换播放目标到Chromecast,同时强制开始播放 sp.transfer_playback(device_id=cast_device_id, force_play=True) # 启动指定播放列表的播放 sp.start_playback(context_uri=playlist_uri)
关键注意点
- 确保运行代码的设备和Chromecast在同一局域网内
- Chromecast必须登录与授权Spotipy时相同的Spotify账号
- 如果首次运行,Spotipy会弹出浏览器让你授权,授权后会自动保存token,后续无需重复授权
内容的提问来源于stack exchange,提问作者Karl_S
相关产品推荐
相关产品推荐

