🐦

全ツイート履歴(tweet.js)から、お気に入り数が一定以上のツイートIDのみ取得する

2021/05/17に公開

自分のツイートの中で、fav 数が一定数以上のツイートのIDを集めたいと思った時、Twitter 検索で min_faves:10 のようなクエリを使って検索することもできるが、検索結果からいちいち ID を集めるのは大変だし、そもそも自分のツイートがインデックスされていないこともある。

そこで、Twitter から全ツイートデータをダウンロードし、そこから抽出する方法を試す。

https://help.twitter.com/ja/managing-your-account/how-to-download-your-twitter-archive


ダウンロードされたデータのうち、ツイート本体は data/tweet.js に格納されている。ここからお気に入り数が一定以上のツイートIDを抽出するのに一手間必要である。

まず、冒頭の行の window.YTD.tweet.part0 = の部分を削除する。これは、ブラウザ上で全ツイートを Your archive.html から確認する時だけに必要な箇所なので、そうでなければ消して問題ない。

tweet.js
- window.YTD.tweet.part0 = [ {
+ [ {
    "tweet" : {

これで、このファイルを JSON ファイルとして読み出せるようになった。
あとはお好きな言語で処理を書けばよいのだが、例えば Node.js でやってみよう。

const fs = require("fs");
const tweets = JSON.parse(fs.readFileSync('path/to/tweet.js', 'utf8'));

for (const tweet of tweets) {
  if (tweet.tweet.favorite_count >= 10) {
    console.log(tweet.tweet.id_str);
  }
}


ちなみに Python 版での似たような処理の方法は既に奥村先生が記述されているので、そちらもどうぞご参照ください。

https://oku.edu.mie-u.ac.jp/~okumura/python/tweetdata.html

Discussion