Cet article est tiré du calendrier de l'avent Django 2019. Le public cible est pour ceux qui sont nouveaux sur Django.
L'article précédent portait sur l'erreur 500 de @ yuu-eguci. https://qiita.com/yuu-eguci/items/a1e4b0a2f238d5ccc985
Cet article traite de l'exécution de l'API de Spotify sur Django.
J'ai besoin de créer un compte utilisateur Spotify, mais l'article suivant par méthode de classe est très utile. https://dev.classmethod.jp/etc/about-using-of-spotify-api/
Si vous souhaitez exécuter l'exemple de code de l'article, téléchargez les données du graphique au format CSV à partir de ce qui suit. https://spotifycharts.com/regional/jp/daily/latest
Ce sont de très mauvaises manières, mais je veux que vous vérifiiez l'opération facilement, j'ai donc tout résumé dans views.py. Je suis désolé si cela vous met mal à l'aise. .. ..
class SpotifySong:
def __init__(self, song_name, uri):
self.song_name = song_name
self.uri = uri
def spotify(request) :
#ID client Spotify,Appliquer l'autorisation à l'aide de Secret
client_id = ''
client_secret = ''
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
#Créer une instance Spotify
spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
#Lisez le fichier CSV téléchargé depuis Spotify
songs = pd.read_csv(BASE_DIR + '/regional-jp-daily-latest.csv', index_col=0, header=1)
#Obtenir des informations sur les chansons de Spotify
spotify_songs_list = []
for url in songs['URL']:
spotify_songs_list.extend(spotify.audio_features(url))
#Joindre les titres des chansons
response_list = []
for i,spotify_song in enumerate(spotify_songs_list):
response_list.append(SpotifySong(songs.iat[i,0],spotify_song['uri']))
#Spécifiez le modèle
template = loader.get_template('spotify/spotify_base.html')
context = {
'response_list': response_list,
}
return HttpResponse(template.render(context, request))
Veuillez vous référer à ce qui suit pour la réponse renvoyée par spotify.audio_features. Non seulement le temps de jeu et les touches, mais également des indicateurs tels que l'acoustique de la chanson et combien vous pouvez danser sont renvoyés. Je vais l'omettre dans cet article, mais il semble que je puisse faire un service pour apprendre la tendance des chansons qui sont préférées selon la saison! https://developer.spotify.com/documentation/web-api/reference/tracks/get-audio-features/
{% if response_list %}
<h1>classement quotidien</h1>
<ul>
{% for response in response_list %}
<li><a href="https://embed.spotify.com/?uri={{ response.uri }}"> {{response.song_name}} </a></li>
{% endfor %}
</ul>
{% else %}
<p>Échec de l'obtention de la chanson sur Spotify.</p>
{% endif %}
Bien qu'il s'agisse d'un simple HTML, vous pouvez faire un classement quotidien comme suit. C'est un écran simple sur lequel vous pouvez cliquer pour accéder à la page de la chanson Spotify, mais je pense que ce serait génial pour les débutants de le faire.
Il y a quelques points à garder à l'esprit lorsque vous travaillez avec des modèles dans Django. Cliquez ici pour le manuel. https://docs.djangoproject.com/en/2.2/ref/templates/language/#templates
Vous devez l'obtenir en écrivant {{variable | length}}. Vous ne pouvez pas écrire la variable .length.
Vous ne pouvez l'obtenir qu'en spécifiant directement le numéro d'index, tel que {{variable .0}}. Vous ne pouvez pas écrire {{variable [[0]]}}.
Pour les raisons ci-dessus, cet exemple de code définit sa propre classe pour obtenir le titre de la chanson. Il est possible de transmettre la valeur de retour de SpotifyAPI et le résultat de la lecture CSV, mais il est difficile de l'obtenir en utilisant le numéro d'index, il est donc difficile de gérer les données dans un état où les objets sont séparés.
Si vous tapez la commande suivante, l'erreur Port est utilisé peut se produire.
python3 manage.py runserver
Django version 2.2.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Error: That port is already in use.
Le moyen le plus simple de résoudre ce qui précède est de tuer le processus en suivant les étapes ci-dessous.
lsof -i -P | grep 8000
Python 71504 user 4u IPv4 0x2cdb3e922e88888 0t0 TCP localhost:8000 (LISTEN)
kill -9 71504
Les obstacles pour la date de sortie finale de Django 3.0 n'ont pas été dépassés, mais j'espère que cela aidera quelqu'un. .. .. Le calendrier de l'avent Django de demain est @ shimayu22. Je vous remercie!!
Recommended Posts