はじめに
Spotify、音楽を聴く際に愛用している方も多いことと思います。機能としては非常に便利なのですが、残念なことに再生回数を見ることができません。
その代わりに、Spotifyには再生履歴などの個人データをダウンロードできるサービスがあります。今回はこの個人データを利用して再生回数を集計し、Excelに保存してみたいと思います。OpenPyXL
というライブラリを使うので、インストールしていない方はあらかじめインストールしておいてください。
なお、今回使用するコードは以下の記事を参考に作成しています。以下の記事を参考に、あらかじめ個人データをダウンロードしておいてください。
コード
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位までとしていますが、ここは必要に応じて変更してください。
実行結果
全体検索の場合は全体の順位が、指定検索の場合は指定したアーティストの順位がエクセルのシートに記録されていれば成功です。