Szenario:
- Ein kostenloser Image-Hoster (
foo-hostin diesem Beispiel) ist ausgefallen, und ein Discourse-Forum hat derzeit eine Reihe von Bildern in seinen Beiträgen, die direkt verlinkt sind. - Die Bilder wurden manuell gesichert, bevor sie verrotteten, und existieren auf dem lokalen Dateisystem.
- Es gibt eine Zuordnung zwischen der Bild-URL und dem lokalen Dateipfad:
get_paths_from_hotlinked_urls()
Wie kann ich:
- Für jedes dieser Bilder einen Anhang in Rails erstellen und
- Sie korrekt zum Beitrag hinzufügen?
image_host_domain = 'foo-host.com'
hotlink_posts = Post.where('cooked ~ ?', image_host_domain)
puts "found #{hotlink_posts.length} posts with hotlinked images..."
hotlink_posts.each do |p|
# Alle URLs im Beitrag abrufen, die image_host_domain enthalten
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) 'upload' local_paths[i] als Anhang
# und korrekt mit dem Beitrag verknüpfen
# ***** TODO: 2) Hotlink durch Anhang ersetzen
# new_raw = new_raw...
end
p.update(raw: new_raw)
end
Entschuldigung für den Beitrag mit geringem Aufwand. Ich fühle mich heute etwas gestresst, lol.
Kann mir jemand in die richtige Richtung weisen? Eine vollständige Lösung ist nicht erforderlich, wenn es zu viel Aufwand ist. Danke.