Icy Cellar 4

TwitterのTL

2023年1月19日にTwitterのサードパーティクライアントが正式に禁止されたのでTLはWebブラウザで見ているが、Twitterを開いているタブは長時間放置した後にアクティブにすると勝手にリロードされてしまう。

そこで、定期的に「n分前〜現在時刻のTLを再現したもの」をWebブラウザの新規タブで開くようにして勝手にリロードされた時の被害を軽減することにした。

まず「filter:follows -filter:replies since:[n分前] until:[現在時刻]」でツイート検索した結果をGoogle Chromeで開くスクリプトを作成する。

my-timeline.rb

#!/usr/bin/env ruby

FORMAT = '%Y-%m-%d_%H:%M:00_JST'

if ARGV.length > 0 && ARGV[0] =~ /\A\d+\z/

min = ARGV[0].to_i

now = Time.now

time_until = now.strftime(FORMAT)

time_since = (now - min * 60).strftime(FORMAT)

url = "https://twitter.com/search?q=filter:follows+-filter:replies+since:#{time_since}+until:#{time_until}&f=live&qf=off"

system "open -a 'Google Chrome' '#{url}'"

end

なお、これだと実際のTLとは異なり公式RTが含まれなくなってしまうが、クエリに“include:nativeretweets”を加えると今度はRTを非表示にしているユーザのRTも表示されてしまう。

わざわざ特定のユーザからのRTを非表示にしているのは基本的にその数が尋常でなく多いからであるため、この点については妥協した。

次にこのスクリプトをcrontabで自動起動させるようにした。

crontab -l

0 * * * * /path/to/my-timeline.rb 60

この例では常に1時間おきに起動しているが、実際は流速に応じて間隔を切り替えている。

とりあえず現状はこれでTLを追っているが、投稿の方は無料APIが使えなくなると大幅に頻度が落ちそう。


(2023年6月15日追記)

2023年6月6日頃から“filter:follows”による検索が「最新」タブではエラーが出て一切検索ができなくなったので、今後は他のSNSで見かけたツイートを見る以外は完全に投稿専用になりそう。


(2023年6月26日追記)

2023年6月24〜25日あたりには“list:[リストのID]”による検索ができるようになっていたので、フォローしているアカウント全てを登録した公開リストを作成して「list:[リストのID] -filter:replies since:[n分前] until:[現在時刻]」でツイート検索した結果を開くスクリプトに変更した。

my-timeline-list.rb

#!/usr/bin/env ruby

FORMAT = '%Y-%m-%d_%H:%M:00_JST'

LIST_ID = '[リストのID]'

if ARGV.length > 0 && ARGV[0] =~ /\A\d+\z/

min = ARGV[0].to_i

now = Time.now

time_until = now.strftime(FORMAT)

time_since = (now - min * 60).strftime(FORMAT)

url = "https://twitter.com/search?q=list:#{LIST_ID}+-filter:replies+since:#{time_since}+until:#{time_until}&f=live&qf=off"

system "open -a 'Google Chrome' '#{url}'"

end

2023年2月8日