シナリオ:
- 無料の画像ホスティングサービス(例:「foo-host」)が廃止され、Discourseフォーラムの投稿に多数のホットリンクされた画像が含まれている
- 画像は、画像が壊れる前に手動でバックアップされ、ローカルファイルシステムに存在する
- 画像URLとローカルファイルパスのマッピングが存在する:
get_paths_from_hotlinked_urls()
どうすればよいですか?
- これらの画像ごとにRailsで添付ファイルを作成し、
- それらを正しく投稿に追加するには?
image_host_domain = 'foo-host.com'
hotlink_posts = Post.where('cooked ~ ?', image_host_domain)
puts "#{hotlink_posts.length} 件のホットリンク画像を含む投稿が見つかりました..."
hotlink_posts.each do |p|
# image_host_domain を含む投稿内のすべてのURLを取得
urls = URI.extract(p.cooked).select { |url| url[/#{Regexp.quote(image_host_domain)}/] }
local_paths = get_paths_from_hotlinked_urls(urls)
new_raw = p.raw
urls.each.with_index do |url, i|
next if local_paths[i].blank?
# ***** TODO: 1) local_paths[i] を添付ファイルとして「アップロード」し、
# 正しく投稿に関連付ける
#
# ***** TODO: 2) ホットリンクを添付ファイルに置き換える
# new_raw = new_raw...
end
p.update(raw: new_raw)
end
低品質な投稿ですみません。今日は少しストレスを感じています、笑
誰か正しい方向を教えてくれませんか?あまりにも面倒でなければ、完全な解決策は必要ありません。ありがとう