当前位置: 首页 > 知识库问答 >
问题:

在Python中一个endpoint与另一个endpoint互补时,如何使用两个spotifyendpoint?

狄富
2023-03-14

我正在学习使用Python和Flask的API,我目前正在使用Spotify API,我想从一位艺术家那里获得具有此endpoint的热门曲目:https://api.spotify.com/v1/artists/{id}/Top-tracks,如您所见,我需要艺术家的id来获取他们的Top-tracks,为此我使用了搜索endpointhttps://api.spotify.com/v1/search?q=name

我的问题是,现在,我如何使用Top-Tracks终结点,与ID我从搜索终结点?我创建了一个名为“ide”的变量来存储艺术家的id,并能够将其连接到endpoint的URL中,但现在我不知道在我的代码中,Top-Tracks URL在哪里,或者如果我需要制作另一个函数,如何用存储的id调用我的变量。

这是我的代码:

from flask import Flask, request, render_template, jsonify
import requests

app = Flask(__name__)

@app.route("/api/artist/<artist>")
def api_artist(artist):
    params = get_id(artist)
    return jsonify(params)

@app.route("/api/track/<artist>")
def api_track(artist):
    params = get_track(artist)
    return jsonify(params)

def get_id(artist):
    headers = { 
        "client_id": "xXxXx",
        "client_secret": "XxXxX"
    }

    response = requests.get("https://api.spotify.com/v1/search?q=" + artist +"&type=artist", headers=headers)

    if response.status_code == 200:
        print(response.text)
        list=[]
        response_dict = response.json()
        results = response_dict["artists"]
        items = results ["items"]
        for value in items:
            list.append(value["id"])

    params = {
        "id": list[0]
    }

    return list[0]

这是我尝试获得顶级曲目的方法,但它不起作用。

def get_track(artist):
    ide = list[0]
    can = requests.get("https://api.spotify.com/v1/artists/"+ ide + "/top-tracks?country=ES", headers=headers)
    return can

共有1个答案

翟卓君
2023-03-14

看起来学习更多关于python范围的知识可能会有所帮助。list[0]get_track中未定义的原因是,它只能在您定义的get_id中访问。get_track中的一个小变化将允许您访问get_track中的id:

def get_track(artist):
    # get the ID here so that you have access to it
    ide = get_id(artist)
    can = requests.get("https://api.spotify.com/v1/artists/"+ ide + "/top-tracks?country=ES", headers=headers)
    return can

希望有帮助!

 类似资料:
  • 我正在为未来的公共API编写一个招摇过市的规范,它需要非常详细和干净的文档。是否有方法在swagger中的其他位置引用/链接/指向另一个endpoint。yml文件? 例如,这是我正在努力实现的目标: 我发现没有帮助,因为它只是用引用的内容替换自己。 斯威格能做这种事吗?

  • 让我们假设我们有两个微服务:Companys API和accounts API。 我们还有一个仪表板,显示一些关于accounts的数据和可视化。 小部件2-一个piechart,它按帐户的属性之一显示帐户的细分。 小部件3--另一个显示公司账户细分的图表。 理论上,仪表板中的所有小部件都显示关于相同实体-帐户的数据。 现在,我想问一下在UI中获取和显示帐户的两种方法: null null 我的问

  • 我正在构建一个spring boot rest API,其中。我想通过HTTP将文件从一个spring rest API应用程序发送到另一个rest API应用程序,并获得文件是否成功发送的响应。 关于上述场景的更多解释 我有2个spring rest API。一个在本地机器上的端口4000上运行,另一个在5000上运行。我想通过post请求将一个文件从4000端口rest API发送到5000端

  • 我正在使用Spring boot开发应用程序,我只想在返回客户端时忽略一个字段,但一个endpoint除外。 如何仅为一个endpoint向客户端公开jwt?谢谢

  • 我们使用Camel fluent构建器来设置一系列复杂的路由,其中我们使用RecipientList功能使用动态路由。 我们遇到过这样的问题:在某些情况下,收件人列表包含不存在的消息传递endpoint(例如,之类的东西)。 一个简单的例子是这样的: 我如何配置路由,以便如果交换机尝试路由到一个不存在的endpoint,就会抛出错误? 我正在使用Camel 2.9. x,并且我已经尝试了死信通道和