風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

【librtrt】Twitterで公式RT直後の発言を取得するためのPythonモジュールを更新(0.0.2)

【librtrt】Twitterで公式RT直後の発言を取得するためのPythonモジュールを試作 - 風柳メモ
GitHub - furyutei/librtrt: Twitterで公式RT直後の発言を取得するためのPythonモジュール

更新内容

  • Rtrt#get_rtrt()の引数に
    limit_rtrt_wait:公式RTされた時点から次のツイートまでの最大待ち時間(分)
    を追加(デフォルト5)。
    これにより、statuses/user_timelineのmax_idを指定できるようになり、APIコール回数を削減可能に。
  • 同、use_search_api引数追加。
    use_search=True 時に、use_search_api=Falseを併用することで、search/tweets API を使用しない方法でツイート検索を行うことが可能に。
    現状、search/tweets よりも若干ヒット率が高くなる模様。ただし、3200ツイート以内なら、use_timeline=Trueの方が優位なため、あまり使う意味はないかも。

Twitter のツイートID(ステータスID)の増え方について

調べていたら、おもしろいことが分かった。
もっとも、Twitter関連開発者の方には常識かも知れないけれど。


まず、@ や @ 等の、時報をツイートするアカウントを利用して、一定時間内のツイートIDの増分を実際に調査してみたところ、

  • 2010年11月04日22時(UTC・日本時間だと11月5日07時)頃を境に、30,000,000,000以下だったツイートIDが、300,000,000,000,000以上に切り替わっている
  • 以来、毎秒約42億ずつ IDが増加している

らしいことがわかった。


約42億→0xFA000000という意味ありげな数字なのが気になって、ネットで検索してみると…

snowflake
•64bitのlong値でIDを表現 (※先頭1bitは0)
•3つの要素で構成
 •timestamp (41 bit) : 現在のunixtime(ms)から、ある時点のunixtimeを引いた値
 •machine id (10 bit): 生成器に割り当てられたID。datacenter id + worker id。
 •sequence (12 bit): 生成器ごとに採番するsequence番号

Twitterのsnowflakeについて

改行は引用者による

ということらしい。
なるほど、ms の位置は 2^22 になるから、1秒だと、(2^22)*1000 = 4194304000 = 0xFA000000 になるわけか。
ある時点の unixtime(Twitter epoch Time)=1288834974657ms
ツイートID→時刻変換ブックマークレットも載せておく


そんなわけで、ある特定のツイートのIDがわかれば、その一定時間後のツイートIDはどれくらいになっているか、予測しやすくなっているようだ。

謝辞

S治 えすじさん( id:esuji5 / @ )に有用なコメントをいただいたおかげでおもしろいことがわかった。感謝。