Twitterの投稿日時をURLからJavaScriptで求める。
2411 ワード
tl;dr
- 年に3度くらい、ツイートの投稿日時ってどこを見ればよいんだっけ、と悩むため忘備録として記事にする
- URLからJavaScriptを使って求めるものとする
はじめに
- Twitterは閲覧環境によって米西海岸の時刻で表示されるなどして、実際の投稿日時を勘違いする問題が稀によくあった。※ 既に改善されていたらすみません。
- 情報リークやデマなどのイベントを追っかけるのに、一刻も早く正しい時系列で事態を把握したいのに、えーっと、、となってしまうのがイヤ。
- 以前はhtmlタグのなかにepochが埋め込まれていたこともあったように思うが今は無さげ。こういう事があるためHTMLは当てにしたくない。
- Twitterはだいぶ前から、Snowflakeという時刻情報を組み込んだIDを使っており、今回はこれを利用する。
やりかた
- ブラウザ(筆者はChrome v79で確認)で、任意のツイートページを開く。
- Developer Consoleを開き、下記のJavaScriptを実行すると、ツイート投稿日時が日本時間で表示される。
alert(new Date(Number((BigInt(window.document.URL.split("/")[5])>>22n) + 1288834974657n)).toLocaleString('ja-JP'))
説明
- Snowflakeでは64bit整数のうち、timestampで42 bit、worker-idで10 bit、sequenceで12 bitをアサインしている。
- URLからツイートのIDを取り出す( URLを
/
でスプリットして5番目の数値)。
- timestampを22bitシフトして取り出したのち、オフセット値である
1288834974657
を加算して、日本語ロケールの時刻として表示する。
- よく使う人はBookmarkletにすれば便利だと思います。
補足
- なおIEやEdgeといったBigInt(ES2020)に対応していないブラウザでは使えない。
- Snowflake採用以前の、大昔のツイートは今回の方法は使えない。
- Snowflakeのオープンな開発は大分前から止まっており、IDの仕様は既に変わっている可能性もあるが、観測できる範囲では時刻情報は正確そう。
- Twitterは閲覧環境によって米西海岸の時刻で表示されるなどして、実際の投稿日時を勘違いする問題が稀によくあった。※ 既に改善されていたらすみません。
- 情報リークやデマなどのイベントを追っかけるのに、一刻も早く正しい時系列で事態を把握したいのに、えーっと、、となってしまうのがイヤ。
- 以前はhtmlタグのなかにepochが埋め込まれていたこともあったように思うが今は無さげ。こういう事があるためHTMLは当てにしたくない。
- Twitterはだいぶ前から、Snowflakeという時刻情報を組み込んだIDを使っており、今回はこれを利用する。
やりかた
- ブラウザ(筆者はChrome v79で確認)で、任意のツイートページを開く。
- Developer Consoleを開き、下記のJavaScriptを実行すると、ツイート投稿日時が日本時間で表示される。
alert(new Date(Number((BigInt(window.document.URL.split("/")[5])>>22n) + 1288834974657n)).toLocaleString('ja-JP'))
説明
- Snowflakeでは64bit整数のうち、timestampで42 bit、worker-idで10 bit、sequenceで12 bitをアサインしている。
- URLからツイートのIDを取り出す( URLを
/
でスプリットして5番目の数値)。
- timestampを22bitシフトして取り出したのち、オフセット値である
1288834974657
を加算して、日本語ロケールの時刻として表示する。
- よく使う人はBookmarkletにすれば便利だと思います。
補足
- なおIEやEdgeといったBigInt(ES2020)に対応していないブラウザでは使えない。
- Snowflake採用以前の、大昔のツイートは今回の方法は使えない。
- Snowflakeのオープンな開発は大分前から止まっており、IDの仕様は既に変わっている可能性もあるが、観測できる範囲では時刻情報は正確そう。
alert(new Date(Number((BigInt(window.document.URL.split("/")[5])>>22n) + 1288834974657n)).toLocaleString('ja-JP'))
- Snowflakeでは64bit整数のうち、timestampで42 bit、worker-idで10 bit、sequenceで12 bitをアサインしている。
- URLからツイートのIDを取り出す( URLを
/
でスプリットして5番目の数値)。 - timestampを22bitシフトして取り出したのち、オフセット値である
1288834974657
を加算して、日本語ロケールの時刻として表示する。 - よく使う人はBookmarkletにすれば便利だと思います。
補足
- なおIEやEdgeといったBigInt(ES2020)に対応していないブラウザでは使えない。
- Snowflake採用以前の、大昔のツイートは今回の方法は使えない。
- Snowflakeのオープンな開発は大分前から止まっており、IDの仕様は既に変わっている可能性もあるが、観測できる範囲では時刻情報は正確そう。
Author And Source
この問題について(Twitterの投稿日時をURLからJavaScriptで求める。), 我々は、より多くの情報をここで見つけました https://qiita.com/uniqode/items/d50c8065ef551c27f30e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .