Spotify API를 사용한 2020년 트렌드 차트화

19808 단어 SpotifyPython
코로나 바이러스가 된 해인 2020년에는 음악이 무엇을 필요로 하는지 알기 위해 2020년 가장 많이 들은 50곡에서 스포티파이 API를 사용해 그 특징을 살펴봤다.
저는 일본 음악을 잘 듣지 않지만 듣는 사람은 이 노래를 들을 때 이런 생각을 할 수 있습니다재생 목록. 음악에 대한 자신의 요구에 따라 생각하면서 읽어주세요.
출력 결과를 보면 각 곡의 특징이 아니라 전체적인 특징이다.그냥 좀 신경쓰여서 깊이 분석하고 설명하지 않아요.먼저 결과적으로 기술적인 일은 간단하기 때문에 후반부에 둔다.

결실


순위, 어쿠스틱, 무용, 에너지, 적극, 박자의 특징을 축으로 도표화하다.
순위와 속도 이외 0.0~1.0이 1.0에 가깝다면 그 특징은'강함'이다.
각자의 결과를 간단히 고찰하는 형식으로 보다.이것은 단지 임의의 억측일 뿐이니, 대추를 통째로 삼키지 마십시오.

전체도


2020년 가장 많이 들었던 노래의 특징을 살펴보면 전자악기를 사용하는 에너지 넘치는 노래를 많이 들은 것 같다.그러나 정력은 왕성하지만 곡조는 적극적이지 않고 리듬도 높지 않다.목소리만으로 정신적으로 변할 수 있는 곡이 아니라 가사를 주체로 한 곡이 많은 사람에게 지지를 받는다고 생각한다.일관재앙 속에서 음악은 즐거움과 마음을 더욱 즐겁게 하는'소리'가 아니라 소극적인 기분에 가까운'언어'를 추구할지도 모른다.

하위


전체 그림에서 받은 특징의 편차는 26위 이하의 곡으로 구성된 것 같다.어쿠스틱 감각이 높은 것은 다소 보이는 것의 태반이 낮은 쪽이다.그러나 다른 특징은 균형감각이 좋고 어떤 특징이 강한 곡이 적어 보인다는 것이다.균형감각이 잘 잡혀 곡에 요구되는 특징이 있기 때문에 골라듣지 않은 사람이 설명하면 순위에 들었다는 것도 이해할 수 있다.

상좌


상위와 하위에 비해 특징적인 극단적인 수치에 비해 많은 것이 있다.그러나 춤의 정도는 0이나 1이 아닌 0.55에 집중됐다.처음 들었어, "이거 좋아!"이렇게 생각하는 특징은 아마도 춤 정도일 것이다.또 적극도가 낮은 것 같은데 곡조와 자신의 정신 상태가 결합된 것인가.
조금, 상위면 하위보다 어쿠스틱 감각이 있는 곡이 많다.

어쿠스틱 센 15위~


어쿠스틱 감각이 강한 곡이 15위 이상으로 진입했다.무용도, 에너지, 긍정도는 상위권자들이 보는 경향과 비슷하기 때문에 강한 어쿠스틱 감각이 있어도 순위에 영향을 주지 않는다.최근 곡들은 모두 전자악기를 사용하는데, 듣는 곡이 어쿠스틱 감각이 없는 사람에 치우친다는 것은 이해할 수 있다.그럼에도 기타리스트 싱어송라이터들의 노래도 인기를 끌고 있어 어쿠스틱 감각과 순위가 크게 상관이 없어 아무래도 인상적일 것 같다.

하지만!!
5위 압도적인 어쿠스틱 사운드와 댄스!그리고 에너지가 거의 없는 무기력!
플레이리스트를 보면 제목이'향수/영인'이다.
그렇구나!별로 들어본 적은 없지만 정신 없이 기타 치고 노래할 때 봤잖아!확실히 소극적인 느낌이 든다!응!나도 모르게 춤추고 싶다!
향수로 춤추는 사람 못 봤는데...
단락 같은 곡이네.이렇게 말하기보다는 단자로 나온 곡이지만 가장 많이 듣는 곡 5위에 오를 줄은 몰랐다.유행하는 곡조와 가사를 완전히 무시하고 재밌는 곡을 만들어서 팔면 순전히 대단하다고 생각해요.하지만 난 널 특별히 원하지 않아()

Best4


네 번째 곡은 다음과 같다.
수염남dism
2. 밤을 달려라 - YOASOBI
3. I LOVE... - 수염남dism
4. 낮-킹 그누
5.(5위 향수 수치가 정규가 아니어서 보기 힘들어서 생략했습니다. 영태씨한테는 안 돼요)

후드남은 프리텐더에서 압도적인 인기를 누리고 있다.I LOVE...화백일도 드라마에서 기용됐으니 차트에 올랐겠지.잘 팔리는 드라마의 주제곡 파급력이 큰지, 아니면 곡이 좋아서 드라마가 잘 팔리는지 모르겠지만 곡의 장점, 드라마의 장점, 매주 듣는 3가지가 서로 영향을 주고 있다.그중에서도 드라마로 기용되지 않고 데뷔 후 잘 팔린 앞선 두 곡은 대단했다(샤오푸통감).
향수를 포함한 베스트5는 전반적인 성향과 비슷한 것이 있지만 완전히 부합하는 특징은 아니다.지금까지의 고찰을 배신하는 특징이 나타나 흥미롭다.하지만 플렌더는 무도가 편파적인 부분의 중앙에 있기 때문에 무도가 인기의 어떤 요소를 감당하고 있다고 생각한다.나는 항상 어쿠스틱 감각이 환영을 받지 못한다고 생각하지만 에너지와 적극도의 상관성이 강하지 않다고 생각한다.

잡담


홍련화는 9위다.
초전자음!인기수치 안무도 0.55!초에너지!초소극적!리듬 한가운데!이런 느낌이야.

기술적


재생 목록의 노래 특징을 정리한 csv를 여기.에서 다운로드할 수 있다.
API 획득 방법 등은 설명하지 않습니다.

컨디션


Python 3.7.6
pipenv 2018.11.26
spotipy 2.16.1
pandas 0.24.2
plotly 4.14.3

코드


main.py
from module import config
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import pandas as pd
import plotly.express as px


class Spotify:
    def __init__(self):
        self.sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id=config.ClientID,
                                                                        client_secret=config.ClientSecret))

    def get_playlist(self, ID):
        playlist = self.sp.playlist(ID)
        return playlist

    def get_song_ids(self, playlist):
        return [song_id['track']['id'] for song_id in playlist['tracks']['items']]

    def get_playlist_info(self, IDs):
        data = list()
        trucks_info = self.sp.tracks(IDs)['tracks']
        for i, id in enumerate(IDs):
            features = self.sp.audio_features(id)[0]
            rank = i + 1
            artist = trucks_info[i]['artists'][0]['name']
            album = trucks_info[i]['album']['name']
            name = trucks_info[i]['name']
            length = trucks_info[i]['duration_ms']
            popularity = trucks_info[i]['popularity']
            acousticness = features['acousticness']
            danceability = features['danceability']
            energy = features['energy']
            instrumentalness = features['instrumentalness']
            key = features['key']
            liveness = features['liveness']
            loudness = features['loudness']
            mode = features['mode']
            speechiness = features['speechiness']
            tempo = features['tempo']
            time_signature = features['time_signature']
            valence = features['valence']
            data.append([rank, artist, album, name, length, popularity, acousticness, danceability, energy,
                         instrumentalness, key, liveness, loudness, mode, speechiness, tempo, time_signature, valence])
        return data

    def get_df(self, two_dimensional_array):
        dataframe = pd.DataFrame(two_dimensional_array,
                                 columns=['rank', 'artist', 'album', 'name', 'length', 'popularity', 'acousticness',
                                          'danceability', 'energy', 'instrumentalness', 'key', 'liveness', 'loudness',
                                          'mode', 'speechiness', 'tempo', 'time_signature', 'valence'])
        return dataframe

    def draw(self, dataframe):
        fig = px.parallel_coordinates(dataframe,
                                      dimensions=['rank', 'acousticness', 'danceability', 'energy', 'valence', 'tempo'],
                                      labels={'rank': '順位',
                                              'acousticness': 'アコースティック感',
                                              'danceability': 'ダンス度',
                                              'energy': 'エネルギー',
                                              'valence': 'ポジティブ度',
                                              'tempo': 'テンポ'},
                                      color='rank',
                                      range_color=[1, 50],
                                      color_continuous_scale='Bluered_r',
                                      color_continuous_midpoint=2)
        fig.show()


if __name__ == '__main__':
    spotify = Spotify()
    playlist = spotify.get_playlist('37i9dQZF1DWYYQb2mqFd5I')
    IDs = spotify.get_song_ids(playlist)
    data = spotify.get_playlist_info(IDs)
    df = spotify.get_df(data)
    spotify.draw(df)

spotify API를 통해 재생 목록에 있는 곡을 가져오고 곡마다 특징을 얻으며 for 회전으로 데이터 프레임을 만들고 plotly로 도표를 만든다.낙서라 난잡하고 통용성이 낮습니다.코드를 쓰지 않은 지 거의 1년이 지났습니다. 용서해 주십시오()

후기


기술은 목적을 위해 존재하기 때문에 나는 목적에 초점을 맞추는 글을 쓴다. 그러면 기술 보도가 적합하지 않다.그러나 기술은 여전히 목적을 위해 존재한다...순례 결과와 코딩 중 어느 것이 앞에서 묘사되었는지 헷갈렸습니다. 하지만 제목적인 결과를 원하기 때문에 자연 코드를 먼저 하겠습니다. 뒤에서 해 주세요.
나는 아무리 어려운 코드를 쓸 수 있어도 기술 내용 위주로 쓰지 않는다. 코드를 쓸 줄 모르는 사람이 이 글을 읽을 때도 이런 일을 할 수 있다!재밌겠다!나는 이런 보도를 쓰고 싶다.(기술적인 것은 쓰지 않으면 사라지기 때문에 당연히 쓴다)
읽어주셔서 감사합니다.

좋은 웹페이지 즐겨찾기