Aiuto azione di massa: sostituisci immagini hotlinked con file immagine locali

scenario:

  • un servizio di hosting di immagini gratuito (foo-host in questo esempio) è diventato obsoleto e un forum di discourse ha un sacco di immagini hotlinked nei suoi post
  • le immagini sono state salvate manualmente prima che andassero perse e esistono sul file system locale
  • esiste una mappatura tra l’url dell’immagine e il percorso del file locale: get_paths_from_hotlinked_urls()

come posso:

  1. creare un allegato in rails per ciascuna di queste immagini e
  2. aggiungerle correttamente al post?
image_host_domain = 'foo-host.com'

hotlink_posts = Post.where('cooked ~ ?', image_host_domain)
puts "trovati #{hotlink_posts.length} post con immagini hotlinked..."

hotlink_posts.each do |p|
  # ottieni tutti gli URL nel post contenenti 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) 'carica' local_paths[i] come allegato
    #                e associalo correttamente al post

    # ***** TODO: 2) sostituisci l'hotlink con l'allegato
    # new_raw = new_raw...
  end

  p.update(raw: new_raw)
end

scusa per il post di basso sforzo. mi sento solo un po’ stressato oggi, lol

qualcuno può indicarmi la giusta direzione? soluzione completa non richiesta se è troppo complicato. grazie

1 Mi Piace

Puoi consultare gli script di importazione per esempi su come caricare file e inserire l’HTML per tali caricamenti.

2 Mi Piace