1
0

More than 1 year has passed since last update.

LivelogからPythonによるテキストデータ抽出

Last updated at Posted at 2023-06-09

PythonとExcelを活用したライブ情報の自動化と解析

はじめに

Livelogは、ライブ情報をメモするためのモバイルアプリです。

image.png

普段、このアプリでライブの参戦履歴を記録していますが、ExcelやPythonでデータを集計したいので、
内部のテキストデータをもとにPythonでExcelで書き起こすことにしました。
IMG_8015.png

IMG_8014.png

コード

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')

出力結果はこんな感じです。
image.png

コードの理解

  1. まず、ファイル操作にos、Excelファイルの操作にopenpyxl、ライブ情報データを提供するlive_txtモジュールをインポートします。

  2. os.chdir()を使用して、Excelファイルを保存する場所を設定します。

  3. openpyxl.Workbook()を使用して新しいワークブックとワークシートを作成します。ワークシートはws変数に代入されます。

  4. セルA1からH1にヘッダーを設定します。

  5. カウンタ変数としてcntを設定します。この変数は、ライブ情報を書き込むExcelシートの行番号を追跡するために使用されます。

  6. live_txt.func()関数を呼び出してライブ情報データを取得し、JSONのような文字列として返します。

  7. JSONのような文字列をsplit(",")メソッドを使用してライブ情報のリストに分割します。

  8. live_list内の各infoに対して繰り返し処理を行います。

  9. ループ内では、各info文字列に特定のキーワードが含まれているかどうかをチェックし、対応する値をExcelシートの該当するセルに代入します。値は、info文字列の構造に基づいて文字列スライスを使用して抽出されます。

  10. キーワード"report"がinfo文字列内で見つかった場合、カウンタ変数cntがインクリメントされ、次のライブ情報セットのためにExcelシートの次の行に移動します。

  11. 最後に、指定されたタイトルと拡張子'.xlsx'でワークブックをExcelファイルとして保存します。

JSONでの読み込み 追記:2023/06/10

いろいろな人からJSONでparseしたら?とアドバイスもらったので、やってみました。
artistsのところがネスト構造とリストを含んでいるので処理が必要ですができそうです。

image.png

参考記事

おまけ

ライブ会場の都道府県の情報が欲しかったので、chatGPTに投げてみた。
image.png

image.png

                    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ファイルとして保存できるため、必要に応じてデータをさらに処理・可視化することができます。

1
0
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
0