そういや、Mastodon の画像サーバのリバースプロクシを書いて、画像が見つからなかったら PostgreSQL を参照して画像データを再度クロールするみたいな実装を書くと、消したリモートキャッシュの画像も再取得できて便利かもしれんと最近思っています。
Conversation
Notices
-
Ushitora Anqou (anqou@mstdn.anqou.net)'s status on Tuesday, 24-Sep-2024 20:05:31 JST Ushitora Anqou -
Ushitora Anqou (anqou@mstdn.anqou.net)'s status on Tuesday, 24-Sep-2024 20:05:31 JST Ushitora Anqou そもそも消したリモートキャッシュの画像の再取得の機能が本体に入ってないのかなり意味わかんないので、本当に無いのかから疑っています。
-
のえる (noellabo@fedibird.com)'s status on Tuesday, 24-Sep-2024 20:05:31 JST のえる @anqou 再取得して、取得後の画像を返すエンドポイントあるよ。
-
Ushitora Anqou (anqou@mstdn.anqou.net)'s status on Tuesday, 24-Sep-2024 20:18:31 JST Ushitora Anqou @noellabo あ、あるんですね。それって特殊なエンドポイントというか、普通に使っていると動かないものですか? 自分のサーバだと tootctl media remove を打って消えた画像を見ようとするとリンク切れの状態になってしまうような挙動をしていて、それを防げるのかを気にしています。(そもそも本当に tootctl media remove で消えたメディアなのかも実のところよくわからないですが。)
-
のえる (noellabo@fedibird.com)'s status on Tuesday, 24-Sep-2024 20:18:31 JST のえる @anqou ざっくりいうと、
class MediaAttachment#needs_redownload?
https://github.com/mastodon/mastodon/blob/7c61533111a7046126a93580e744f99f1b72337e/app/models/media_attachment.rb#L226-L228
ここで、remote_urlがあって、fileの実態がないってDBに記録されている場合は再ダウンロードが必要って判断するよ。で、投稿を表示するときに画像の実態がないってわかっている場合は、画像のurlにproxyのエンドポイントを返す。
https://github.com/mastodon/mastodon/blob/7c61533111a7046126a93580e744f99f1b72337e/app/serializers/rest/media_attachment_serializer.rb#L16-L24クライアント側が画像を取得しようとしてこのエンドポイントを叩いたら、画像を再取得して、そのurlを返す。
エンドポイントはここ。
/media_proxy/:idそういう実装です。
とりあえず、エンドポイントを手動で呼んでみるといいかも。
-