使用Python编写一个简单的Spotify播放器
发布时间:2023-12-28 19:55:31
要编写一个简单的Spotify播放器,首先需要使用Python的spotipy库来实现与Spotify API的交互。spotipy是一个非官方的Python库,提供了简单的接口来访问Spotify的各种功能。
以下是一个简单的Spotify播放器的代码示例:
import spotipy
from spotipy.oauth2 import SpotifyOAuth
class SpotifyPlayer:
def __init__(self, client_id, client_secret, redirect_uri):
# 创建SpotifyOAuth对象,用于进行认证
self.sp_auth = SpotifyOAuth(client_id=client_id, client_secret=client_secret, redirect_uri=redirect_uri, scope="user-library-read user-top-read streaming")
# 通过认证获取访问令牌
self.sp = spotipy.Spotify(auth_manager=self.sp_auth)
def search_track(self, track_name):
# 通过track_name在Spotify上搜索歌曲
results = self.sp.search(q=track_name, type="track", limit=1)
if len(results['tracks']['items']) > 0:
# 获取搜索到的 首歌曲的id和名称
track_id = results['tracks']['items'][0]['id']
track_name = results['tracks']['items'][0]['name']
print(f"找到歌曲: {track_name}")
return track_id
else:
print("未找到指定的歌曲")
return None
def play(self, track_id):
device_id = self.get_device_id()
if device_id:
# 播放指定id的歌曲
self.sp.start_playback(device_id=device_id, uris=[f"spotify:track:{track_id}"])
else:
print("未找到可用设备,请确保已登录Spotify并连接到设备")
def get_device_id(self):
devices = self.sp.devices()
if devices['devices']:
# 返回 个设备的id
return devices['devices'][0]['id']
else:
return None
# 使用例子
if __name__ == "__main__":
# 请填写你在开发者账号中创建的应用程序的Client ID、Client Secret和Redirect URI
client_id = "your_client_id"
client_secret = "your_client_secret"
redirect_uri = "your_redirect_uri"
# 创建SpotifyPlayer对象
sp_player = SpotifyPlayer(client_id, client_secret, redirect_uri)
# 搜索并播放歌曲
track_name = input("请输入要播放的歌曲名字: ")
track_id = sp_player.search_track(track_name)
if track_id:
sp_player.play(track_id)
以上示例代码实现了一个简单的Spotify播放器类SpotifyPlayer,其中包括了搜索歌曲和播放歌曲的功能。在使用例子部分,用户可以输入要播放的歌曲名字,并使用search_track方法搜索歌曲,然后使用play方法播放搜索到的歌曲。
要执行以上代码,需要先安装所需的库。可以使用以下命令在终端中安装spotipy库:
pip install spotipy
然后,将你在Spotify开发者账号中创建的应用程序的Client ID、Client Secret和Redirect URI填入到代码中的client_id、client_secret和redirect_uri变量中。
执行代码后,程序会提示你输入要播放的歌曲名字,然后会搜索和播放该歌曲。 如果找到了指定的歌曲,它会在终端输出"找到歌曲: <歌曲名字>",否则输出"未找到指定的歌曲"。
