fumiaki-yoshida / ytdlp-json2csv

convert yt-dlp's json to csv.
MIT License
0 stars 0 forks source link

jsonをpandasに変換する際に、KeyErrorでコメントが取れない場合がある #1

Closed fumiaki-yoshida closed 4 months ago

fumiaki-yoshida commented 9 months ago

生じている現象

jsonから必要なデータだけを抜き出してDataFrameを作ろうとした際にエラーが生じている。 具体的には、jsonからtextを取り出すときにKeyError が起きてコメントが取れないため途中で終了する。

理由と解決案

actions にはコメント以外のものも含まれているため、条件ではじく必要がある。
src/json2csv.pymake_dataframeのfor文の中でコメントがあるかどうかを判定する条件を書けばいいと思う。

以下はエラーの例。

KeyError                                  Traceback (most recent call last)
Cell In[5], line 1
----> 1 df = json2csv.make_dataframe(sample_path)
      2 df.to_csv("./sample_live_chat.csv")

File E:\Document\12_ytdlp-json2csv\notebooks\..\src\json2csv.py:59, in make_dataframe(file_path)
     54 message_dict["offset_time"].append(extractor.extract_offset_time(dat))
     55 message_dict["timestamp_text"].append(
     56     extractor.extract_timestamp_text(message_render)
     57 )
     58 message_dict["message_text"].append(
---> 59     extractor.extract_message_text(message_render)
     60 )
     61 message_dict["author_ch_id"].append(
     62     extractor.extract_author_ch_id(message_render)
     63 )
     64 message_dict["author_name"].append(
     65     extractor.extract_author_name(message_render)
     66 )

File E:\Document\12_ytdlp-json2csv\notebooks\..\src\converter\extractor.py:16, in extract_message_text(message_render)
     15 def extract_message_text(message_render: dict) -> str:
---> 16     return message_render["message"]["runs"][0]["text"]

KeyError: 'text'
fumiaki-yoshida commented 4 months ago

https://github.com/fumiaki-yoshida/ytdlp-json2csv/blob/eb3a49e36cc9b8a4dbb92e7c9d58d139d8f9b201/src/converter/extractor.py#L15C1-L21C1

for文使って取り出して、結果をつなげるという方法でとりあえず動いている。