Rimozione di indirizzi email dai post importati

Ciao a tutti,

Sto configurando un’istanza di Discourse per un’organizzazione che attualmente utilizza una mailing list. Abbiamo importato le email (20.000 messaggi) senza problemi maggiori, ma ci sono molti post in cui gli indirizzi email delle persone appaiono a causa di citazioni, firme delle email, ecc.

Sono abbastanza pratico con la riga di comando rake/rails, ma faccio fatica a capire come rimuovere questi indirizzi email. Ho provato varie forme di questo (regex e non regex), ma non trova mai nessun post.

rake posts:remap["<vincent@domain\\.com>","[rimosso]","regex"]
rake posts:remap["\\<vincent@domain\\.com\\>","[rimosso]","regex"]

Esiste un modo migliore per farlo? Ho iniziato con una semplice regex per trovare il mio indirizzo (e sì, ho un backup!).

Dato che si tratta di una nuova istanza di Discourse, non mi preoccupa rimuovere eventuali menzioni @.

Grazie.

Ecco uno script veloce scritto per noi da @pfaffman. Le parti scadenti sono quelle che ho modificato io. Include alcune funzioni extra che potresti non aver bisogno, ad esempio una data di taglio per rimuovere gli indirizzi email solo dai post precedenti a tale data.

Ho scoperto che è meglio sostituire gli indirizzi con ‘email@removed.com’, piuttosto che rimuoverli completamente. Non ricordo il motivo, ma credo che si integrasse meglio con le parentesi circostanti.

def remove_email_addresses
  n=0 
  test_mode=false 
  dt=DateTime.new(2019, 1, 1, 0, 0, 0) 
  no_emails="email@removed." 
  Post.where("raw like '%@%'").find_each do |post| 
    sleep 0.1 
    if post.created_at < dt 
      post.raw.gsub!(/[a-z0-9+-_.]+@[a-z0-9+-]+[. ,;\\]/i,no_emails) 
      if test_mode 
        puts post.raw 
        sleep 10 
      end 
      post.save unless test_mode 
      post.rebake! unless test_mode 
      puts "saved" 
      n+=1 
      puts n.to_s 
    else 
      puts "nuovo post, lasciato invariato" 
    end 
  end 
  nil 
end

> remove_email_addresses
2 Mi Piace

Ottimo, grazie. Proverò.