首页 > 解决方案 > 将我的 spotipy API python 代码从本地设备传输到基于云的系统时遇到问题

问题描述

我对python完全陌生。我有一点 Matlab 编码经验,但真的没什么太激烈的,所以我是一个非常缺乏经验的编码器。到目前为止,我已经通过 youtube 视频和其他论坛帖子获得了帮助,但我认为我需要一些帮助来解决我的场景。

我不打算详细介绍,但基本上 Spotify 的用户创建播放列表的报告系统完全被破坏了,用户可以通过垃圾邮件报告来删除播放列表的标题、描述和图像。我受到了很大的打击,因为我有一个相当高调的播放列表并且几乎跟不上(最近每天大约受到 20 次打击)。Spotify 意识到了这个错误,但据我所知,它不会很快得到修复,因为我已经在论坛中进行了挖掘,而且这种情况已经持续了很多年。正因为如此,我正在尝试编写一些我可以每分钟或 5 分钟左右运行一次的代码,以自动修复我的播放列表的数据,而无需检查我的电子邮件或应用程序,看到我被举报了,然后自己修复它。

我创建了一个在本地工作的代码,我将在下面发布它,但是在尝试迁移到某种基于云的服务器(如 AWS lambda、谷歌云或 Wayscript)时遇到了障碍。如果我在我的计算机终端上运行代码,代码会立即运行并完成我需要的内容,完全没有问题。当我尝试将其移至其中一个站点时,我无法完成它,也不知道可能出了什么问题。我在 AWS 上增加了超时时间和 cpu 使用率,但即使是 4 GB 和 60 秒(我尝试过的最大值),它仍然无法完成。老实说,我很困惑,因为它看起来像是非常基本的代码(并且显然可以在我的本地设备上运行而没有问题),所以很想知道是否有人知道解决方案。这是代码:

import spotipy
from spotipy.oauth2 import SpotifyOAuth
import spotipy.util as util
import json

scope = 'playlist-modify-public ugc-image-upload'
username = 'myusername'


token = util.prompt_for_user_token(username,scope,client_id='myclientid',client_secret='myclientsecret',redirect_uri='myredirect')
spotifyObject = spotipy.Spotify(auth=token)

playlist_name = "myplaylist"
playlist_description = "my description"
id = "spotify:playlist:myid"
image = 'bit64image'

spotifyObject.user_playlist_change_details(user=username,playlist_id=id,name=playlist_name,public=True,collaborative=None,description=playlist_description)
spotifyObject.playlist_upload_cover_image(playlist_id=id,image_b64=image)


print("Playlist updated")

我已经尝试将 util 和 OAuth 与我的 ID、Secret 和 URI 的环境变量一起使用,但似乎都不起作用。也许它与 spotipy 模块有关,但我将其压缩并将其添加到 AWS 层,将其安装在谷歌云上,并且它已经内置到 Wayscript,所以我认为这不是问题。也很奇怪,这似乎是同一个问题,因为脚本从未在所有 3 个服务上完成。如果您有任何建议,请告诉我。这是一个非常烦人的项目,所以如果有人能够帮助我,我会很高兴。谢谢!

标签: amazon-web-servicesapiaws-lambdacloudspotipy

解决方案


所以不知道这是否可行,但您可以尝试将缓存文件复制到脚本所在的远程目录,然后查看它是否有效。

在您运行脚本的本地目录中查找 .cache 文件(如果需要,请勾选“显示隐藏文件”。)

如果您在文本编辑器中打开 .cache 文件,您会看到有关访问令牌、刷新令牌等的信息。认为 Spotipy 需要在本地或远程运行所有这些。

感觉这是您问题的根源,可能是错误的,但请试一试!:)


推荐阅读