ツイッターで本人のツイートのみをJavaScriptで見る方法


きっかけ

ツイッターで本人のツイートのみを見たいと思ったことはないだろうか?

多くがリツイートで占められるツイーターアカウントに遭遇することがある。熱心に全部のツイートを読むのではなく、軽く本人のツイートのみを読みたいという需要だ。

JavaScriptでリツイートを非表示にすることを思いついた。

ツイッターで本人のツイートのみを見る方法が分かりません。
例えば、「堀江貴文(Takafumi Horie) @takapon_jp」は見たい。
しかし、「堀江貴文(Takafumi Horie)さんがリツイート」は見たくないという場合です。

出典: Yahoo!知恵袋

とあるように、ニッチな需要があるようだ。

JavaScriptで非表示に

ChromeではデベロッパーツールのConsole(Firefoxではウェブコンソール)を開いて次のJavaScriptを実行する。

target_name=document.querySelector("b.u-linkComplex-target").textContent
document.querySelectorAll("#stream-items-id>li").forEach(l=>{if(l.getElementsByClassName("tweet")[0].getAttribute("data-screen-name")!==target_name){l.style.display="none"}})

元に戻すには

document.querySelectorAll("#stream-items-id>li").forEach(l=>{if(l.getElementsByClassName("tweet")[0].getAttribute("data-screen-name")!==target_name){l.style.display=""}})

console.logがundefinedになる不具合

ツイッターにはconsole.logの出力がundefinedになる不具合があるようだ。ツイッターを閲覧中にデベロッパーツールかウェブコンソールを開いてconsole.logを実行するとundefinedのみが表示された。ツイッター以外の場所では正常にconsole.logの出力が表示された。この不具合のおかげでツイッターでJavaScriptを書くのが大変だった。

console.logのように使用頻度の高い関数を悪意のある関数と置き換えて、任意のスクリプトを実行させる攻撃があるらしいが、まさかツイッターのような大企業が姑息な技を使うとは思わなかった。console.logの出力がツイッター社に送信されていないことを祈るばかりだ。