scénario :
- un hébergeur d’images gratuit (
foo-hostdans cet exemple) a cessé d’exister, et un forum discourse contient un tas d’images hotlinkées dans ses publications - les images ont été sauvegardées manuellement avant qu’elles ne pourrissent et existent sur le système de fichiers local
- une correspondance existe entre l’URL de l’image et le chemin du fichier local :
get_paths_from_hotlinked_urls()
comment puis-je :
- créer une pièce jointe dans rails pour chacune de ces images et
- les ajouter correctement à la publication ?
image_host_domain = 'foo-host.com'
hotlink_posts = Post.where('cooked ~ ?', image_host_domain)
puts "trouvé #{hotlink_posts.length} publications avec des images hotlinkées..."
hotlink_posts.each do |p|
# obtenir toutes les URL dans la publication contenant image_host_domain
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) 'télécharger' local_paths[i] en tant que pièce jointe
# et l'associer correctement à la publication
# ***** TODO : 2) remplacer le hotlink par la pièce jointe
# new_raw = new_raw...
end
p.update(raw: new_raw)
end
désolé pour la publication à faible effort. je me sens juste un peu stressé aujourd’hui, lol
quelqu’un peut-il m’indiquer la bonne direction ? une solution complète n’est pas requise si c’est trop compliqué. merci