Dieser Artikel stammt aus dem Django Adventskalender 2019. Die Zielgruppe ist für diejenigen, die neu in Django sind.
Der vorherige Artikel befasste sich mit dem 500-Fehler von @ yuu-eguci. https://qiita.com/yuu-eguci/items/a1e4b0a2f238d5ccc985
In diesem Artikel wird die Spotify-API auf Django ausgeführt.
Ich muss ein Spotify-Benutzerkonto erstellen, aber der folgende Artikel nach Klassenmethode ist sehr hilfreich. https://dev.classmethod.jp/etc/about-using-of-spotify-api/
Wenn Sie den Beispielcode des Artikels ausführen möchten, laden Sie die Diagrammdaten im CSV-Format aus dem Folgenden herunter. https://spotifycharts.com/regional/jp/daily/latest
Es sind sehr schlechte Manieren, aber ich möchte, dass Sie den Vorgang einfach überprüfen, also habe ich alles in views.py zusammengefasst. Es tut mir leid, wenn Sie sich dadurch unwohl fühlen. .. ..
class SpotifySong:
def __init__(self, song_name, uri):
self.song_name = song_name
self.uri = uri
def spotify(request) :
#Spotify Client ID,Erzwingen Sie die Autorisierung mit Secret
client_id = ''
client_secret = ''
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
#Erstellen Sie eine Spotify-Instanz
spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
#Lesen Sie die von Spotify heruntergeladene CSV-Datei
songs = pd.read_csv(BASE_DIR + '/regional-jp-daily-latest.csv', index_col=0, header=1)
#Holen Sie sich Song-Informationen von Spotify
spotify_songs_list = []
for url in songs['URL']:
spotify_songs_list.extend(spotify.audio_features(url))
#Songtitel anhängen
response_list = []
for i,spotify_song in enumerate(spotify_songs_list):
response_list.append(SpotifySong(songs.iat[i,0],spotify_song['uri']))
#Vorlage angeben
template = loader.get_template('spotify/spotify_base.html')
context = {
'response_list': response_list,
}
return HttpResponse(template.render(context, request))
Die Antwort von spotify.audio_features finden Sie im Folgenden. Nicht nur die Spielzeit und die Tasten, sondern auch Indikatoren wie die Akustik des Songs und die Menge, die Sie tanzen können, werden zurückgegeben. Ich werde es in diesem Artikel weglassen, aber es scheint, dass ich einen Dienst leisten kann, um die Tendenz von Liedern zu lernen, die je nach Jahreszeit bevorzugt werden! https://developer.spotify.com/documentation/web-api/reference/tracks/get-audio-features/
{% if response_list %}
<h1>tägliches Ranking</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>Musik von Spotify konnte nicht abgerufen werden.</p>
{% endif %}
Obwohl es sich um ein einfaches HTML handelt, können Sie ein tägliches Ranking wie das folgende erstellen. Es ist ein einfacher Bildschirm, auf den Sie klicken können, um zur Spotify-Song-Seite zu springen, aber ich denke, es wäre großartig für Anfänger, ihn zu erstellen.
Bei der Arbeit mit Vorlagen in Django sind einige Dinge zu beachten. Klicken Sie hier für das Handbuch. https://docs.djangoproject.com/en/2.2/ref/templates/language/#templates
Sie müssen es erhalten, indem Sie {{variable | length}} schreiben. Sie können die Variable .length nicht schreiben.
Sie können es nur erhalten, indem Sie die Indexnummer direkt angeben, z. B. {{Variable .0}}. Sie können keine {{Variable [[0]]}} schreiben.
Aus den oben genannten Gründen definiert dieser Beispielcode eine eigene Klasse, um den Songtitel zu erhalten. Es ist möglich, den Rückgabewert von SpotifyAPI und das Ergebnis des CSV-Lesens zu übergeben, es ist jedoch schwierig, ihn mithilfe der Indexnummer abzurufen. Daher ist es schwierig, die Daten in einem Zustand zu verarbeiten, in dem die Objekte getrennt sind.
Wenn Sie den folgenden Befehl eingeben, kann der Fehler "Port wird verwendet" auftreten.
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.
Der einfachste Weg, das oben genannte Problem zu lösen, besteht darin, den Prozess zu beenden, indem Sie die folgenden Schritte ausführen.
lsof -i -P | grep 8000
Python 71504 user 4u IPv4 0x2cdb3e922e88888 0t0 TCP localhost:8000 (LISTEN)
kill -9 71504
Die Hürden für das endgültige Erscheinungsdatum von Django 3.0 wurden nicht überschritten, aber ich hoffe, es hilft jemandem. .. .. Der Django-Adventskalender von morgen lautet @ shimayu22. Vielen Dank!!
Recommended Posts