2020/12/28(月)SlackからエクスポートしたJSONをCSVに変換する

2020/12/28 11:30

SlackからエクスポートしたログファイルはJSON形式になっているので、そのまま議事録として保存するにはやや冗長です。

私は普段Notionを使っているのですが、NotionにインポートするためにはCSVあたりに変換するのが手っ取り早いです。最近はこの作業が必要になるたびにJSONフィールド名を調べて無駄な時間を費やしている気がするので、変換スクリプトを載せておくことにします。

……久しぶりにPythonの話をしたような気がする。技術的な新規性は皆無な記事ですけどw

import csv
import datetime
import json
import sys

def main(input_file, output_file):
    with open(input_file, 'r', encoding='utf-8') as f:
        records = [{
            'member': log['user_profile']['display_name'],
            'time': datetime.datetime.fromtimestamp(int(log['ts'].split('.')[0])).strftime('%H:%M:%S'),
            'text': log['text'],
        } for log in json.load(f)]

    with open(output_file, 'w', encoding='utf-8', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=['member', 'time', 'text'])
        writer.writeheader()
        writer.writerows(records)

if __name__ == '__main__':
    main(sys.argv[1], sys.argv[2])