tweets.jsをjqコマンドで手っ取り早くcsvにしてみる
tweets.jsをcsvにしたときの個人的なメモ。
プログラマーではないので、ネットの情報から、何となく個人的に目的が「ほぼ達成」した記録。(にわかレベル)
上級プログラマーなら、もっと良い方法はあると思う。
まえがき
2023-07-03に、twitterから公式の全ツイート履歴をダウンロードとzip解凍(展開)をしてみた。
およそ16年間で16100件くらいのつぶやき。(zip圧縮で約186MB、tweets.jsは約23MB。データ量は人によって違う)
以前は「tweet.js」だったらしいが、「tweets.js」になっている。(2023年7月現在、ファイル名でsの有無)
仕様が変更されているので「tweet.js loader - 全ツイート履歴 表示er」などは、すぐに使うことが出来なかった。(2023年7月3日現在)
環境
- パソコン: X230(Lenovo ThinkPad)
- OS: Linux Mint 20.3 Una(Xfce)
jq -V
jq --version
jq-1.6
tweets.jsから取り出したいデータ
基本的な「ID番号」「投稿日時」「投稿したつぶやき」の3項目
- id
- created_at
- full_text
tweets.jsをcsvにする流れ
jq インストール(Linux Mint 20.3にjqをインストール)
sudo apt install jq
公式の全ツイート履歴をダウンロードが前提
tweets.js、最初の部分を削除して保存(Xedテキストエディタなど)
window.YTD.tweets.part0 =
jqコマンド
cat tweets.js | jq -r '.[] | map({id: .id, created_at: .created_at, full_text: .full_text})' > base.json
cat base.json | jq -r '.[] | [.id,.created_at,.full_text] | @csv' > base.csv
ここまでで、ひとまずjsonとcsvが生成される。(個人的な目的は達成)
- jqコマンドで生成された base.json は、[ [{hoge}][{hoge}] ]形式なので、[ {hoge},{hoge} ]形式に置換などで対処するとベター。
追記)続編: tweets.jsの日付をPythonで変換する方法
補足
csvで「上に行を挿入」から項目を付けるなど。(以下は、tab区切り)
id created_at full_text
日付のフォーマット
- 変換するには何かプログラムは必要
- とりあえず「Sat Jun 24 14:07:01 +0000 2023」でも、2023年6月24日の土曜日 23:07(14+9時間)ごろは脳内変換できる
created_atのフォーマット(tweets.js、少し特殊)
%a %b %d %H:%M:%S %z %Y
変換したい日付のフォーマット
%Y-%m-%d %H:%M
追記)続編: tweets.jsの日付をPythonで変換する方法
現状として
個人的な使い方として、テキストデータなので軽量化はできた。(テキストエディタの検索で「いつごろ」「何をつぶやいた」を知ることができる)
- およそレベルで、tweets.js:23MBが、2-3MBになった。(json,csv)
tweet.js loaderのcsvデータと違う可能性がある。(全検証をしていないけれど、jqで生成したcsvデータは、つぶやき数が5つ少なかった模様。約16100件に対して)
tweets.jsの日付表示(created_at)が少し特殊で9時間の誤差あり。(何か変換できるプログラムは必要っぽい)
idの桁数が多すぎて、数字扱いにならない?(Libreoffice calc、idをテキストにするなど)
ソートするには何か必要。(自分のデータは並びが不順でした)
課題
-
日付の変換で、日付順のソート(後日、個人的に解決済み)
-
full_textには、@ユーザー名の「メンション」「リプライ」、「RT」が含まれるので、どうするか?