PythonとExcelを活用したライブ情報の自動化と解析
はじめに
Livelogは、ライブ情報をメモするためのモバイルアプリです。
普段、このアプリでライブの参戦履歴を記録していますが、ExcelやPythonでデータを集計したいので、
内部のテキストデータをもとにPythonでExcelで書き起こすことにしました。
コード
Livelogからエクスポートしたテキストデータをlive_txt.pyというファイルへ貼り付けています。
以下はその例です。
live_txt.py
#ここに貼り付ける
live_txt=r"""{
{
"live534": {
"id": 534,
"title": "札幌リリイベ",
"date": "2022/05/06",
"open": "",
"start": "16:00",
"adv": "",
"door": "",
"area": "",
"place": "タワレコ札幌",
"address": "",
"info": "",
"artists": {
"artist0": {
"name": "でんぱ組",
"setlist": {},
"members": {}
}
},
"type": "",
"genre": "",
"ticket": "",
"attendance": "参加済",
"memo": "",
"report": ""
},
"live378": {
"id": 378,
"title": "アイドルジェネレーション vol.59",
"date": "2019/10/20",
"open": "",
"start": "",
"adv": "",
"door": "",
"area": "",
"place": "渋谷ストリームホール",
"address": "",
"info": "",
"artists": {
"artist0": {
"name": "かみやど",
"setlist": {},
"members": {}
},
"artist1": {
"name": "ちゅーどり",
"setlist": {},
"members": {}
}
},
"type": "",
"genre": "",
"ticket": "",
"attendance": "参加済",
"memo": "",
"report": ""
}
}
"""
def func():
return live_txt
このコードで上記のlive_txt.pyからライブ情報を受け取って、
Excelに書き起こします。
import os
import openpyxl
import live_txt
# 作業ディレクトリを設定
os.chdir(r"path/to/your/folder")
# 新しいExcelワークブックとワークシートを作成
title = "Live info"
wb = openpyxl.Workbook()
ws = wb.worksheets[0]
# 列ヘッダーを設定
ws["A1"].value = "title"
ws["B1"].value = "date"
ws["C1"].value = "place"
ws["D1"].value = "artist"
ws["E1"].value = "artist1"
ws["F1"].value = "artist2"
ws["G1"].value = "artist3"
ws["H1"].value = "artist4"
# 行の追跡のためのカウンタ変数
cnt = 2
# live_txtモジュールからライブ情報を取得
live_list = live_txt.func().split(",")
# 各ライブ情報について繰り返し処理
for info in live_list:
if "title" in info:
ws.cell(cnt, 1).value = info[13:-1]
if "date" in info:
ws.cell(cnt, 2).value = info[12:-1]
if "place" in info:
ws.cell(cnt, 3).value = info[13:-1]
if "artist0" in info:
ws.cell(cnt, 4).value = info[45:-1]
if "artist1" in info:
ws.cell(cnt, 5).value = info[30:-1]
if "artist2" in info:
ws.cell(cnt, 6).value = info[30:-1]
if "artist3" in info:
ws.cell(cnt, 7).value = info[30:-1]
if "report" in info:
cnt += 1
# ワークブックをExcelファイルとして保存
wb.save(title + '.xlsx')
コードの理解
-
まず、ファイル操作に
os
、Excelファイルの操作にopenpyxl
、ライブ情報データを提供するlive_txt
モジュールをインポートします。 -
os.chdir()
を使用して、Excelファイルを保存する場所を設定します。 -
openpyxl.Workbook()
を使用して新しいワークブックとワークシートを作成します。ワークシートはws
変数に代入されます。 -
セルA1からH1にヘッダーを設定します。
-
カウンタ変数として
cnt
を設定します。この変数は、ライブ情報を書き込むExcelシートの行番号を追跡するために使用されます。 -
live_txt.func()
関数を呼び出してライブ情報データを取得し、JSONのような文字列として返します。 -
JSONのような文字列を
split(",")
メソッドを使用してライブ情報のリストに分割します。 -
live_list
内の各info
に対して繰り返し処理を行います。 -
ループ内では、各
info
文字列に特定のキーワードが含まれているかどうかをチェックし、対応する値をExcelシートの該当するセルに代入します。値は、info
文字列の構造に基づいて文字列スライスを使用して抽出されます。 -
キーワード"report"が
info
文字列内で見つかった場合、カウンタ変数cnt
がインクリメントされ、次のライブ情報セットのためにExcelシートの次の行に移動します。 -
最後に、指定されたタイトルと拡張子'.xlsx'でワークブックをExcelファイルとして保存します。
JSONでの読み込み 追記:2023/06/10
いろいろな人からJSONでparseしたら?とアドバイスもらったので、やってみました。
artistsのところがネスト構造とリストを含んでいるので処理が必要ですができそうです。
参考記事
おまけ
ライブ会場の都道府県の情報が欲しかったので、chatGPTに投げてみた。
Place Prefecture
0 ZeppNagoya Aichi
1 日本特殊陶業ホール Aichi
2 名古屋ReNY Aichi
3 イオンモール土浦 Ibaraki
4 ひたちなか Ibaraki
5 水戸light house Ibaraki
6 Kingdam Crazy mama Okinawa
7 にゅーぷれ Okinawa
8 沖縄 Okinawa
9 那覇市内 Okinawa
10 美ら海水族館 Okinawa
11 オフィスゴコマチ Hiroshima
12 広島 Hiroshima
13 広島JMSアステールプラザ Saitama
14 HMVイオンモール浦和美園店 Saitama
15 SPINNS大宮 Saitama
16 イオンモール北戸田 Saitama
17 イオン越谷レイクタウン Saitama
18 スタジオサンパティック Tokyo
19 ボートレース戸田 Tokyo
20 メットライフドーム Tokyo
21 ららぽーと富士見 Tokyo
ローカルな会場は厳しいようです。
まとめ
このブログ記事では、Pythonとopenpyxl
ライブラリを使用して、ライブ情報を収集し、Excelファイルに整理する自動化プロセスについて探求しました。提供されたコードでは、live_txt
というカスタムモジュールを使用して、JSONのような形式でライブイベントのデータを取得します。
このコードを理解し、ライブイベントデータに合わせてカスタマイズすることで、ライブ情報を簡単に管理・分析する強力なツールを作成できます。データをExcelファイルとして保存できるため、必要に応じてデータをさらに処理・可視化することができます。