JavaScript
Togetter

Togetterでキーワード検索をしてもツイートが出てこない場合のまとめ方法

  • 2018/01/29追記:トゥギャッター株式会社がNTTデータ提供の検索APIを使用することになったとアナウンスがあったことで、今記事のような「あるはずのツイートが出てこない」現象は少なくなると思われます。 https://twitter.com/togetter_jp/status/957812833609170944

Toggetter(トゥギャッター)でツイートまとめを作成する際、ハッシュタグ等でキーワード検索をしますが、直近多くのツイートがあったにも関わらず検索が全くヒットしない場合があります。

スクリーンショット 2017-12-12 15.29.19.png

「RTを除く」であるとか「日本語のみ」のオプションを外して広域に検索しても同様の場合があります。

Twitter公式ウェブ、Twitter公式アプリでの検索はひっかかるんだけど…」という場合は、Twitter が提供している REST API の制限もしくは不具合の類であることが考えられます。Togetter も(たぶん)これを使って内部的にツイートを検索しているからです。

この場合、どうやって Togetter でツイートをまとめるとよいでしょうか。

ツイートURLをTogetterに読ませる方法

上記キャプチャ画面にも見られますが、Togetter のまとめ画面にはスクリーンショット 2017-12-12 15.37.02.pngというボタンがあり、このボタンを押すとツイートのURLを指定して一括読み込みが行えます。

スクリーンショット 2017-12-12 15.37.49.png

あとはTwitter公式ウェブから検索して引っかかった個別ツイートのURL群をここに貼り付ければよいことになります。

Twitter公式ウェブの検索画面からツイートURLを抜き出す

「一つずつ右クリックしてリンクURLをコピー」といった原始的な方法はツイート数が多くなればなるほど現実的ではないでしょう。もちろんここは Qiita なので簡単なプログラミングで解決しましょう。「何も設定されていない Google Chrome があるだけ」という状態であれば、デベロッパーコンソールに簡単な JavaScript を入力するのが簡単です。

まずはTwitterの検索で「すべてのツイート」を選択した状態で、読みたいツイートが出尽くすまで下にスクロールします。あまりに多すぎる場合にはうまくいかない場合もあったり、Twitter の検索機能の制限などでこちらでも出てこない場合があります。

スクリーンショット_2017-12-12_15_40_55.png

この状態で Google Chrome であれば「デベロッパーツール」「JavaScriptコンソール」を開き、JavaScriptが入力可能な状態にします。

そこで

urls=""; $("a.tweet-timestamp").each((idx, el)=>{urls+=el.href+"\n"}); urls;

と打つことで、ツイートURLが抜き出せます(2017年12月現在)。

スクリーンショット_2017-12-12_15_51_37.png

やることの方針は以下のような感じ。

  • 個別ツイートへのリンクは tweet-timestamp クラスを持った a 要素となっているので、それを指定するCSSセレクタは a.tweet-timestamp となり、その href 属性の値をひたすら集めれば良いことになる
  • Twitter公式ウェブでは jQuery を読み込んでいるので、$("a.tweet-timestamp).each(...) といったショートカットが書ける

もちろんこの仕様は2017年12月現在のTwitter公式ウェブです。もし、年月が経って仕様が変わっている、このテクニックを応用したい場合は、日付文字列がリンクになっているツイートURLリンク部分を右クリックして「検証」を選択してみると、HTMLの該当部分がデベロッパーコンソールで表示されるので、色々とヒントが得られます。

スクリーンショット 2017-12-12 16.04.21.png