そういや、Mastodon の画像サーバのリバースプロクシを書いて、画像が見つからなかったら PostgreSQL を参照して画像データを再度クロールするみたいな実装を書くと、消したリモートキャッシュの画像も再取得できて便利かもしれんと最近思っています。

そもそも消したリモートキャッシュの画像の再取得の機能が本体に入ってないのかなり意味わかんないので、本当に無いのかから疑っています。

フォロー

@anqou 再取得して、取得後の画像を返すエンドポイントあるよ。

あ、あるんですね。それって特殊なエンドポイントというか、普通に使っていると動かないものですか? 自分のサーバだと tootctl media remove を打って消えた画像を見ようとするとリンク切れの状態になってしまうような挙動をしていて、それを防げるのかを気にしています。(そもそも本当に tootctl media remove で消えたメディアなのかも実のところよくわからないですが。)

@anqou ざっくりいうと、

class MediaAttachment#needs_redownload?
github.com/mastodon/mastodon/b
ここで、remote_urlがあって、fileの実態がないってDBに記録されている場合は再ダウンロードが必要って判断するよ。

で、投稿を表示するときに画像の実態がないってわかっている場合は、画像のurlにproxyのエンドポイントを返す。
github.com/mastodon/mastodon/b

クライアント側が画像を取得しようとしてこのエンドポイントを叩いたら、画像を再取得して、そのurlを返す。

エンドポイントはここ。
/media_proxy/:id

そういう実装です。

とりあえず、エンドポイントを手動で呼んでみるといいかも。

ありがとうございます!! 見てみます。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。