読者です 読者をやめる 読者になる 読者になる

Twitterで特定のツイートからそのユーザーの前後一日のツイートを検索するスクリプト(Webブラウザ)

なんだか分かりにくいタイトルになってしまいましたが。Twitterで特定のツイートから、そのユーザーの前後一日のツイートを検索するスクリプトを書きました。

特定のツイートの「詳細」を開いてスクリプトを実行すると

f:id:splicom:20150707150542j:plain

検索結果のページが表示されます。

f:id:splicom:20150707150600j:plain

スクリプトがこちら

// ユーザー名の取得 @は除く
var username = document.getElementsByClassName("username").item(1);
var username = username.childNodes.item(1).innerText;

// 日付の取得
// 例: 00:00 - 2015年7月7日 から 2015/7/7に変換 → 2015-07-06 と 2015-07-08 を取得
var tweetdate  = document.getElementsByClassName("metadata").item(1).innerText;
var datestring = tweetdate.substring(tweetdate.lastIndexOf(" ") + 1);
datestring = datestring.replace("年","/");
datestring = datestring.replace("月","/");
datestring = datestring.replace("日","");

// 前後の日付の算出
tweetdate = new Date(datestring);
var prev  = new Date(tweetdate.setDate(tweetdate.getDate()-1));
var next  = new Date(tweetdate.setDate(tweetdate.getDate()+2));

// 前後の日付をyyyy-mm-dd形式にする
prev = prev.getFullYear() + "-" + ('0' + (prev.getMonth()+1)).slice(-2) + "-" + ('0' + prev.getDate()).slice(-2);
next = next.getFullYear() + "-" + ('0' + (next.getMonth()+1)).slice(-2) + "-" + ('0' + next.getDate()).slice(-2);

// 検索結果の表示
// from: ユーザー名 since: 期間の開始 until: 期間の終了 src=typed (詳細不明、無しでもよさそう) f=tweets 「ライブ」のタブを表示?
var search_url = "https://twitter.com/search?q=from%3A" + username + "%20since%3A" + prev + "%20" + "until%3A" + next + "&src=typd&f=tweets";
window.open(search_url);

ブックマークレット(長い…)

javascript:(function(){ var username = document.getElementsByClassName("username").item(1); var username = username.childNodes.item(1).innerText; var tweetdate  = document.getElementsByClassName("metadata").item(1).innerText; var datestring = tweetdate.substring(tweetdate.lastIndexOf(" ") + 1); datestring = datestring.replace("年","/"); datestring = datestring.replace("月","/"); datestring = datestring.replace("日","");  tweetdate = new Date(datestring); var prev = new Date(tweetdate.setDate(tweetdate.getDate()-1)); var next = new Date(tweetdate.setDate(tweetdate.getDate()+2));  prev = prev.getFullYear() + "-" + ('0' + (prev.getMonth()+1)).slice(-2) + "-" + ('0' + prev.getDate()).slice(-2); next = next.getFullYear() + "-" + ('0' + (next.getMonth()+1)).slice(-2) + "-" + ('0' + next.getDate()).slice(-2); var search_url = "https://twitter.com/search?q=from%3A" + username + " since%3A" + prev + " " + "until%3A" + next + "&src=typd&f=tweets"; window.open(search_url); })();

だいたいのことはコメントに書いてますが、ツイートの詳細からユーザー名(@xxxから@を除く)、日付(時間 - 日付)をそれぞれ取得して、前後の日付をDateを使って計算、検索結果のURLにあてはめています。src=typedのパラメータの意味はよくわかりませんでした。*1 また、検索結果で「トップ」だと表示されないツイートがあったりするので、「ライブ」のタブを表示するようにしています。

他のユーザーだけでなく、自分がした古いツイートに対して何かリアクションがあったときも「あのときは何を考えてたんだっけ?」の確認ができそうです。実行した日やユーザー名によっては正しく表示されないことがあるかもしれません。

sprint-life.hatenablog.com

*1:無しでも表示されましたが念の為