使用Selenium/Spotify API批量点赞Spotify歌曲的方案咨询
最优方案:使用Spotify官方Web API(安全无封号风险)
你没找到正确的API端点——Spotify Web API完全支持将歌曲添加到「喜欢的歌曲」列表(也就是你说的点赞),这是官方认可的方式,不会触发账号封禁,是处理批量操作的最优选择。
核心步骤
1. 准备工作
- 前往Spotify开发者平台创建一个应用,获取
Client ID和Client Secret。 - 申请授权权限:必须包含
user-library-modify(修改用户音乐库的权限),同时搭配user-read-private等基础权限。 - 使用Authorization Code Flow完成用户授权(因为要操作私人音乐库,不能用Client Credentials Flow)。
2. 从CSV获取歌曲ID
要添加歌曲到喜欢列表,需要先通过歌名+歌手搜索获取歌曲的Spotify ID。使用GET /search端点,搜索参数格式为:
q=track:"歌曲名" artist:"歌手名"&type=track&limit=1
返回结果中提取第一个匹配项的id字段即可。注意:如果存在同名歌曲/歌手,可能需要手动校验部分结果,或者调整搜索参数(比如去掉歌曲名里的冗余后缀)提升准确性。
3. 批量添加到喜欢列表
使用PUT /me/tracks端点,一次最多可以添加50首歌曲,请求体是包含歌曲ID的数组:
{ "ids": ["track_id_1", "track_id_2", ..., "track_id_50"] }
处理3000+首歌时,需要将ID列表分批,每批50个发送请求。同时要处理API的速率限制:如果收到429 Too Many Requests响应,按照响应头的Retry-After值等待后重试。
Python代码示例(使用Spotipy库简化操作)
import csv import spotipy from spotipy.oauth2 import SpotifyOAuth # 初始化Spotipy客户端 sp = spotipy.Spotify(auth_manager=SpotifyOAuth( client_id="你的Client ID", client_secret="你的Client Secret", redirect_uri="http://localhost:8080", scope="user-library-modify user-read-private" )) # 读取CSV文件(假设CSV列是"歌曲名","歌手") track_ids = [] with open("你的歌曲列表.csv", "r", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: track_name = row["歌曲名"] artist_name = row["歌手"] # 搜索歌曲 result = sp.search(q=f"track:{track_name} artist:{artist_name}", type="track", limit=1) if result["tracks"]["items"]: track_id = result["tracks"]["items"][0]["id"] track_ids.append(track_id) print(f"找到歌曲:{track_name} - {artist_name},ID:{track_id}") else: print(f"未找到歌曲:{track_name} - {artist_name}") # 分批添加到喜欢列表 batch_size = 50 for i in range(0, len(track_ids), batch_size): batch = track_ids[i:i+batch_size] sp.current_user_saved_tracks_add(tracks=batch) print(f"已添加第{i//batch_size + 1}批歌曲,共{len(batch)}首")
注意事项
- 授权后,Spotipy会自动处理令牌刷新,无需手动操作。
- 如果搜索结果匹配不准确,可以尝试调整搜索关键词(比如去掉歌曲名中的括号内容、缩写等)。
- 严格遵守API速率限制,避免频繁请求导致临时限制。
内容的提问来源于stack exchange,提问作者Noam Shamgar
相关产品推荐
相关产品推荐

