二手产品经理

二手产品经理

THIS IS RENO

スポティファイAPI -93日- オンラインでPythonを学ぶ100日

#レコード

  1. 今日のコーディングの練習は少し難しかったですが、Spotify からデータを取得しました。
  2. まず、キーを使用してトークンを取得し、次にトークンを使用してデータを取得します。
  3. 取得したデータを再構成し、ページで再生します。
  4. 異なるパラメータを使用してリクエストポストし、対応する応答データを取得します。
    #コード

main.py#

import requests, json, os
from requests.auth import HTTPBasicAuth
from flask import Flask, request

clientID = os.environ['client_id']
clientSecret = os.environ['client_scrent']

def searchmusic(arist):
  url = "https://accounts.spotify.com/api/token"
  data = {"grant_type":"client_credentials"}
  auth = HTTPBasicAuth(clientID, clientSecret)
  
  response = requests.post(url, data=data, auth=auth)
  accessToken = response.json()["access_token"]
  
  #arist = input("Artist: ").lower()
  arist = arist.replace(" ", "%20")
  
  url = "https://api.spotify.com/v1/search"
  headers = {'Authorization': f'Bearer {accessToken}'}
  search = f"?q=artist%3A{arist}&type=track&limit=5"
  
  fullURL = f"{url}{search}"
  #print(fullURL)
  musiclist=[]
  response = requests.get(fullURL, headers=headers)
  data = response.json()
  #print(json.dumps(data, indent=2))  
  for track in data["tracks"]["items"]:
    musiclist1 ={"name":track["name"],"url":track["preview_url"]}
    musiclist.append(musiclist1)
  return musiclist



app = Flask(__name__)
@app.route("/", methods=["GET"])
def index():
  f=open("index.html","r")
  page=f.read()
  f.close
  musiclist = "NONE"
  page = page.replace("{musiclist}",musiclist)
  return page


@app.route("/", methods=["POST"])
def search():
  f=open("index.html","r")
  page=f.read()
  f.close
  text=''
  year = request.form["year"]
  musiclist = searchmusic(year)
  #print(json.dumps(musiclist, indent=2))
  for music in musiclist:
    name = music["name"]
    url = music["url"]
    text1=f"""
    <h2>{name}</h2>
    <audio controls>
    <source src="{url}" type="audio/mpeg">
  </audio>
    """
    text += text1
    
  page = page.replace("{musiclist}",text)
  return page


app.run(host='0.0.0.0', port=81)

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。