我正在尝试使用Spotipy库为python 拉出某个播放列表中的所有曲目.
无论参数限制如何,user_playlist_tracks功能都限制为100首曲目.Spotipy文档将其描述为:
user_playlist_tracks(user,playlist_id = None,fields = None,limit = 100,offset = 0,market = None)
获取用户拥有的播放列表的曲目的完整详细信息.
参数:
- 用户
- 用户playlist_id的id
- 播放列表字段的ID
- 哪些字段返回限制
- 返回偏移量的最大轨道数
- 返回市场的第一条轨道指数
- ISO 3166-1 alpha-2国家/地区代码.
在使用Spotify进行身份验证后,我目前正在使用以下内容:
username = xxxx
playlist = #fromspotipy
sp_playlist = sp.user_playlist_tracks(username, playlist_id=playlist)
tracks = sp_playlist['items']
print tracks
Run Code Online (Sandbox Code Playgroud)
有没有办法返回100多首曲目?我已尝试在函数参数中设置limit = None,但它返回错误.
我正在使用 Spotify API 的 Python 绑定来列出艺术家的热门曲目并将它们添加到播放列表中,但每次都失败,就好像它除了不同类型的输入一样。
New_Track_List 是一个字符串,其中包含顶部轨道查找的输出:
示例:“spotify:track:1pAyyxlkPuGnENdj4g7Y4f,spotify:track:7D2xaUXQ4DGY5JJAdM5mGP,spotify:track:74mG2xIxEUJwHckS0Co6jF,spotify:track:2rjqDPbLlb9QRlcj8DVM”
使用 URI 我从函数中得到这个
sp.user_playlist_add_tracks(username, playlist_id=playlist, tracks=New_Track_List)
Run Code Online (Sandbox Code Playgroud)
追溯:
spotipy.client.SpotifyException: http status: 400, code:-1 - https://api.spotify.com/v1/users/smokieprofile/playlists/40aijTeKoxo5u1VSS9E3UQ/tracks: You can add a maximum of 100 tracks per request.
Run Code Online (Sandbox Code Playgroud)
字符串中只有 20 首曲目。
示例:“1pAyyxlkPuGnENDj4g7Y4f、7D2xaUXQ4DGY5JJAdM5mGP、74mG2xIxEUJwHckS0Co6jF、2rjqDPbLlbQRlcj8DVM9kn”
相同的回溯输出。
sp.user_playlist_add_tracks(username, playlist_id=playlist, tracks="spotify:track:74mG2xIxEUJwHckS0Co6jF")
Run Code Online (Sandbox Code Playgroud)
尝试仅添加一首曲目,让我收到以下消息:
spotipy.client.SpotifyException: http status: 400, code:-1 - https://api.spotify.com/v1/users/smokieprofile/playlists/40aijTeKoxo5u1VSS9E3UQ/tracks: Invalid track uri: spotify:track:s
Run Code Online (Sandbox Code Playgroud)
仅使用 Track ID 的相同消息,就好像它只检查传递字符串的第一个字母一样。
sp.user_playlist_add_tracks(username, playlist_id=playlist, tracks="7D2xaUXQ4DGY5JJAdM5mGP")
Run Code Online (Sandbox Code Playgroud)
错误回溯:
spotipy.client.SpotifyException: http status: 400, code:-1 - https://api.spotify.com/v1/users/smokieprofile/playlists/40aijTeKoxo5u1VSS9E3UQ/tracks: Invalid track uri: spotify:track:7
Run Code Online (Sandbox Code Playgroud) 通常,spotipy需要跟踪ID作为要传递的参数,以便返回曲目名称.
假设我有两个列表,不是从Spotify API获得的:
艺术家
[u'Moses Sumney', u'Cherry Glazerr', u'Danny Brown', u'NxWorries']
Run Code Online (Sandbox Code Playgroud)
和他们各自的歌曲:
轨道
[u'Lonely World', u"Told You I'd Be With the Guys", u'Really Doe [ft. Kendrick Lamar, Ab-Soul, and Earl Sweatshirt]', u'Lyk Dis']
Run Code Online (Sandbox Code Playgroud)是否有可能以相反的方式做到并获得跟踪ID?
使用Spotipy,并尝试“ current_user_recently_played”
token = util.prompt_for_user_token(username, scope = scope, client_id=client_id, client_secret=client_secret, redirect_uri=redirect_uri)
sp = spotipy.Spotify(auth = token)
saved = sp.current_user_saved_tracks()
print(saved)
recent = sp.current_user_recently_played()
print(recent)
Run Code Online (Sandbox Code Playgroud)
sp.current_user_saved_tracks()运行得很好,即使文档https://spotipy.readthedocs.io/en/latest/#more-examples中明确包含sp.current_user_recently_played()也不存在。
跑步-v2.4.4-2017年1月4日
提前谢谢。
Traceback (most recent call last):
File "C:\Users\Martin\Google Drive\Python\Spotify\try_req.py", line 19, in <module>
recent = sp.current_user_recently_played()
AttributeError: 'Spotify' object has no attribute 'current_user_recently_played'
Run Code Online (Sandbox Code Playgroud) 我想使用 Spotipy python 包来试验 Spotify API。
\n首先,在我的 Spotify Developer 应用程序中,\n我已将redirect_uri 设置为https://example.com/callback/
\n这是我尝试在 Google Colab 笔记本上运行的代码
\nimport pandas as pd\nimport spotipy\nfrom spotipy.oauth2 import SpotifyClientCredentials\n\nspotify_details = {\n \'client_id\' : \'<hidden>\',\n \'client_secret\':\'<hidden>\',\n \'redirect_uri\':\'https://example.com/callback/\'}\n\nscope = "user-library-read user-follow-read user-top-read playlist-read-private" \n\nsp = spotipy.Spotify(\n auth_manager=spotipy.SpotifyOAuth(\n client_id=spotify_details[\'client_id\'],\n client_secret=spotify_details[\'client_secret\'],\n redirect_uri=spotify_details[\'redirect_uri\'], \n scope=scope))\n\nresults = sp.current_user_saved_tracks()\nfor idx, item in enumerate(results[\'items\']):\n track = item[\'track\']\n print(idx, track[\'artists\'][0][\'name\'], " \xe2\x80\x93 ", track[\'name\'])\nRun Code Online (Sandbox Code Playgroud)\n这就是我所看到的输出:
\n\n但我的浏览器没有将我重定向到任何 URL 来接收身份验证令牌
\n我究竟做错了什么?
\n我的问题是:是否可以在 WebAPI Spotify(特别是 Spotipy)中同时使用两个或多个范围?例如使用范围“user-modify-playback-state”和“user-library-read”
谢谢
我需要根据歌曲名称和艺术家姓名为用户检索一首歌曲(这样我就得到了正确的歌曲)。最终目标是获取轨道 id。这是我认为可行的代码:
searchResults = spotifyObject.search(q="artist:" + artist + "track:" + searchQuery, type="track")
Run Code Online (Sandbox Code Playgroud)
其中,artist 是艺术家/乐队的名称,searchQuery 是曲目的名称。这应该返回特定轨道的 JSON 块,但返回:
{
"tracks": {
"href": "https://api.spotify.com/v1/search?query=artist%3AHarry+Stylestrack%3AWatermelon+Sugar&type=track&offset=0&limit=10",
"items": [],
"limit": 10,
"next": null,
"offset": 0,
"previous": null,
"total": 0
}
Run Code Online (Sandbox Code Playgroud)
}
所以我试图弄清楚如何从我创建的播放列表中获取 playlist_id ,但即使在阅读了不稳定的文档后,我也没有找到使用哪种方法。
import spotipy
import json
import sys
from spotipy.oauth2 import SpotifyOAuth
import requests
import os
import dotenv
from json.decoder import JSONDecodeError
SPOTIPY_CLIENT_ID="secret"
SPOTIPY_CLIENT_SECRET="secret"
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope="playlist-modify-private",
client_id=SPOTIPY_CLIENT_ID,
client_secret=SPOTIPY_CLIENT_SECRET,
redirect_uri="https://google.com",
cache_path="token.txt"))
user_id = sp.current_user()["id"] # grabs user name
sp.user_playlist_create(user_id,"Funky Music",public=False,collaborative=False, description="Test")
Run Code Online (Sandbox Code Playgroud)
这就是我对代码的了解程度。