きっかけ
ツイッターで本人のツイートのみを見たいと思ったことはないだろうか?
多くがリツイートで占められるツイーターアカウントに遭遇することがある。熱心に全部のツイートを読むのではなく、軽く本人のツイートのみを読みたいという需要だ。
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の出力がツイッター社に送信されていないことを祈るばかりだ。