1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Spotifyの再生回数ランキングを集計してエクセルに保存する

Last updated at Posted at 2020-09-04

はじめに

Spotify、音楽を聴く際に愛用している方も多いことと思います。機能としては非常に便利なのですが、残念なことに再生回数を見ることができません。

その代わりに、Spotifyには再生履歴などの個人データをダウンロードできるサービスがあります。今回はこの個人データを利用して再生回数を集計し、Excelに保存してみたいと思います。OpenPyXLというライブラリを使うので、インストールしていない方はあらかじめインストールしておいてください。

なお、今回使用するコードは以下の記事を参考に作成しています。以下の記事を参考に、あらかじめ個人データをダウンロードしておいてください。

参考記事:Spotifyで再生した曲を、再生回数順に並べる

コード

count.py
import json
import collections
import openpyxl

# jsonデータの読み込み
with open('StreamingHistory0.json', 'r', encoding='utf-8') as f:
    d = json.load(f)

list = []

search_all = str(input('Search for all? (y/n) >> '))

# 曲名を取り出してリストに追加
# 全体検索
if search_all == "y":
    for i in d:
        list.append(i['trackName'])
# 指定検索
else:
    artist = str(input('Enter the artist name. >> '))
    for i in d:
        if(i['artistName'] == artist):
            list.append(i['trackName'])

# 出現回数順に要素を取得
c = collections.Counter(list)
c_list = c.most_common()

# ワークブックを作成
book = openpyxl.Workbook()

# シートを取得し名前を変更
sheet = book.active
sheet.title = 'Play Count'

#列の長さを曲名に合わせる
max_length = 0

for index, row in enumerate(c_list):
    if index <= 10: #集計する順位
        sheet.append(row)
        if len(row[0]) > max_length:
            max_length = len(row[0])

sheet.column_dimensions['A'].width = max_length

# ワークブックを保存
book.save('SpotifyCount.xlsx')

エクセルへの出力以外にも、エンコードの指定や整形をいくつか施してみました。上記のコードでは集計する順位を10位までとしていますが、ここは必要に応じて変更してください。

実行結果

全体検索の場合は全体の順位が、指定検索の場合は指定したアーティストの順位がエクセルのシートに記録されていれば成功です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?