Molti gruppi Yahoo sono stati colpiti dalla decisione di Yahoo di eliminare i contenuti caricati e stanno cercando fornitori alternativi. L’opzione più ovvia è groups.io, che offre una funzionalità equivalente e migrerà automaticamente tutto il contenuto del gruppo, ma (1) costa 220 $ per il primo anno per eseguire la migrazione (dopo di che è gratuito se i requisiti di archiviazione sono < 1 GB) e (2) utilizza ancora lo stesso formato incentrato sull’e-mail di Yahoo Groups. Ho visto menzionato in un altro argomento (Yahoo Groups to Discourse migration?) che esiste uno script di migrazione, ma da quanto riesco a vedere (ammetto che al momento non molto) migra solo i messaggi.
Poiché il cambiamento di Yahoo che spingerà i gruppi a trasferirsi è la perdita dello storage per file e foto, restano due domande:
Esiste un modo automatizzato per spostare i contenuti caricati da un gruppo Yahoo a un’istanza Discourse?
Quali opzioni offre Discourse per rendere tale contenuto disponibile/visibile agli altri utenti? L’unica che vedo è che i contenuti caricati da un utente vengano inseriti in uno o più topic creati da quell’utente, probabilmente in categorie distinte. Per le foto sarebbe abbastanza semplice; per altri documenti caricati nel gruppo (principalmente PDF, alcuni file .doc e .xls) sembra che siano necessarie alcune modifiche alla configurazione, ma nulla di troppo serio. Ma esiste un’altra opzione?
Interessante… non sapevo che Yahoo Groups stesse eliminando i contenuti caricati. Ho un vecchio gruppo Yahoo che gestisco ancora per il mio quartiere e mi è venuto in mente di migrarlo su un’istanza di Discourse… forse è il momento.
Secondo me, il modo più semplice per migrare sarebbe esportare l’elenco degli abbonati in CSV e poi utilizzarlo per creare la base utenti in Discourse: dovrebbe essere abbastanza diretto.
Per quanto riguarda i contenuti, hai una cronologia completa dei messaggi inviati alla lista nella tua email? Se sì, potresti usare un’app come Thunderbird per scaricare tutti i messaggi e salvarli in formato MBOX. Una volta ottenuto questo, esistono degli script per l’importazione. Credo che questa guida ti possa essere d’aiuto: Migrate a mailing list to Discourse (mbox, Listserv, Google Groups, etc)
Non sono sicuro di cosa tu intenda per contenuti caricati: io non ho mai usato Yahoo Groups in quel modo. Non conosco le tue opzioni per estrarre quei contenuti da Yahoo e prepararli per Discourse. Potrebbe essere un processo manuale… e forse un’ottima opportunità per organizzarsi ed eliminare ciò che non è più necessario.
Ma sì, Discourse è orientato alle discussioni, quindi tutti i contenuti sono organizzati in argomenti. È possibile impostare gli argomenti come wiki, così da poterli mantenere in gruppo, incluso aggiungere o rimuovere allegati. Ci sono anche i messaggi privati, che potrebbero essere usati per parlare con se stessi o con una selezione specifica di altre persone; immagino che in questo modo si possano conservare alcuni contenuti. Potrebbe essere più semplice per te valutare un altro strumento con SSO per la condivisione di file. Nella mia comunità usiamo WordPress, che ha un plugin per gestire l’SSO, il quale funziona in modo molto fluido. Se stai parlando di molti file, potresti configurare un’istanza di Nextcloud.
Buon divertimento!
Aggiornamento: wow… sembra davvero che sia il momento di trasferirsi. Stanno adottando misure drastiche per limitare l’utilità di Yahoo Groups, e molto presto. Nessun nuovo contenuto dal 28 ottobre, tra due giorni! E i contenuti verranno rimossi il 14 dicembre.
Yahoo Groups forniva (bene, forniva) spazio di archiviazione per le foto (100 GB) e altri file (2 GB) per il gruppo. I gruppi a cui partecipo li utilizzano per le foto dei membri del gruppo e per oggetti di interesse per il gruppo, nonché per vari altri file. Qualsiasi cosa inviata privatamente tra i membri di un gruppo Y sarebbe probabilmente passata come email, e Y non avrebbe alcun record di ciò; non penso che la migrazione di tali contenuti sia nemmeno possibile, figuriamoco una priorità. Ma c’è molta informazione archiviata lì in molti gruppi, che vorrebbero preservare durante una migrazione.
Potrebbe essere. Ancora una volta, c’è un sito (e solo uno, per quanto ne so) che sembra essere una sostituzione pronta all’uso, ma mantiene il vecchio formato dei gruppi Y con solo lievi modifiche. Penso che, se un gruppo deve migrare comunque, potrebbe essere bello migrare verso qualcosa di più moderno, e Discourse si integra ancora molto bene con l’email (cosa che molti altri pacchetti di forum non fanno), il che significa che le persone della vecchia scuola come me, abituate a ricevere le email e a rispondere via email, possono continuare a farlo così. E risparmiare qualche euro sarebbe comunque un vantaggio.
sembra funzionare molto bene nel scaricare in blocco i contenuti di un gruppo: recupera tutti i messaggi, i file, gli allegati, ecc. I messaggi vengono scaricati in due file .json ciascuno, uno “raw” e l’altro in HTML. Il primo appare così:
{
"userId": 185744666,
"authorName": "vhsproducts@aol.com",
"from": "vhsproducts@...",
"profile": "vhsproducts",
"replyTo": "LIST",
"senderId": "fc-T6L4xNaFRDleu_7gutRzgA_WWujKXanij68LOf7iz0WXh-BolDsmiqlo19adwRPTjwe0FpCYycg",
"spamInfo": {
"isSpam": false,
"reason": "0"
},
"subject": "Re: [MicroTrak] Mint-Trak300 completed",
"postDate": "1181013131",
"msgId": 4,
"canDelete": false,
"contentTrasformed": false,
"systemMessage": false,
"headers": {
"messageIdInHeader": "PGM3ZC5lNWZlOTFjLjMzOTYyZThiQGFvbC5jb20+"
},
"prevInTopic": 3,
"nextInTopic": 6,
"prevInTime": 3,
"nextInTime": 5,
"topicId": 3,
"numMessagesInTopic": 4,
"msgSnippet": "Outstanding work! I see you have the first gen of the Micro-Trak ( although we still sell them for people with TT3 SMT s) How long will a 9 volt run your GPS? ",
"rawEmail": "Return-Path: <VHSProducts@...>\r\nX-Sender: VHSProducts@...\r\nX-Apparently-To: MicroTrak@yahoogroups.com\r\nReceived: (qmail 18487 invoked from network); 5 Jun 2007 03:13:19 -0000\r\nReceived: from unknown (66.218.67.36)\n by m50.grp.scd.yahoo.com with QMQP; 5 Jun 2007 03:13:19 -0000\r\nReceived: from unknown (HELO imo-m23.mx.aol.com) (64.12.137.4)\n by mta10.grp.scd.yahoo.com with SMTP; 5 Jun 2007 03:13:19 -0000\r\nReceived: from VHSProducts@...\n\tby imo-m23.mx.aol.com (mail_out_v38_r9.2.) id r.c7d.e5fe91c (29679)\n\t for <MicroTrak@yahoogroups.com>; Mon, 4 Jun 2007 23:12:11 -0400 (EDT)\r\nMessage-ID: <c7d.e5fe91c.33962e8b@...>\r\nDate: Mon, 4 Jun 2007 23:12:11 EDT\r\nTo: MicroTrak@yahoogroups.com\r\nMIME-Version: 1.0\r\nContent-Type: multipart/alternative; boundary="-----------------------------1181013131"\r\nX-Mailer: 9.0 Security Edition for Windows sub 5365\r\n(snip)"
}
…mentre il secondo appare così:
{
"userId": 185744666,
"authorName": "vhsproducts@aol.com",
"from": "vhsproducts@...",
"profile": "vhsproducts",
"replyTo": "LIST",
"senderId": "oChpSVZSELyeHvFRyDX_nG5dfpdVZTLBKFMDvOg33fSsrDk5l-zpPohl42rhz6OhM9tFfSjAxxGsRg",
"spamInfo": {
"isSpam": false,
"reason": "0"
},
"subject": "Re: [MicroTrak] Mint-Trak300 completed",
"postDate": "1181013131",
"msgId": 4,
"canDelete": false,
"contentTrasformed": false,
"systemMessage": false,
"headers": {
"messageIdInHeader": "PGM3ZC5lNWZlOTFjLjMzOTYyZThiQGFvbC5jb20+"
},
"prevInTopic": 3,
"nextInTopic": 6,
"prevInTime": 3,
"nextInTime": 5,
"topicId": 3,
"numMessagesInTopic": 4,
"msgSnippet": "Outstanding work! I see you have the first gen of the Micro-Trak ( although we still sell them for people with TT3 SMT s) How long will a 9 volt run your GPS? ",
"messageBody": "<div id=\"ygrps-yiv-810547383\">\n<html><head>\n \n</head> \n\n<font id=\"ygrps-yiv-810547383role_document\"\n face=\"Arial\" color=\"#000000\" size=\"2\">\n<div>Outstanding work! I see you have the first gen of the Micro-Trak ( although \nwe still sell them for people with TT3 SMT's) How long will a 9 volt run your \nGPS?</div>\n(snip)",
"specialLinks": []
}
A seconda del gruppo, possono esserci decine o addirittura centinaia di migliaia di questi file. Yahoo, essendo Yahoo, maschera gli indirizzi email per gli utenti “normali”: i proprietari del gruppo possono vederli, e forse anche i moderatori, ma gli altri no. Ora vediamo se esiste un modo relativamente semplice per importare in blocco questi dati in un’istanza di Discourse, o se sia meglio utilizzare gli strumenti che ho menzionato sopra.
Anche i file e le foto vengono scaricati da questo strumento, insieme a sondaggi, calendari e altre cose che a me non interessano molto, ma che senza dubbio altri troverebbero utili.
Un’altra precisazione: una lettura più attenta del messaggio di Yahoo indica che non solo stanno eliminando file e foto, ma stanno anche abolendo gli archivi dei messaggi. Questo li renderà davvero inutili per qualsiasi scopo.
Abbiamo bisogno di più siti web indipendenti e di meno persone che dipendono dalle grandi piattaforme monopolistiche.
Voglio solo dire che ho migrato la mia comunità locale da un gruppo Yahoo a Discourse anni fa e non ci siamo mai più pentiti. I tocchi personali che puoi aggiungere alla tua risorsa di comunicazione condivisa valgono da soli la pena, ma le funzionalità aggiuntive sono la ciliegina sulla torta.
Purtroppo non posso offrirti un’esperienza utile sulla migrazione, poiché abbiamo semplicemente ricominciato da capo, tranne per la lista di posta elettronica. Perché non lasciare attivo il vecchio sito del gruppo Yahoo e fornire un link? Quanti allegati ti servono davvero da conservare? Punta sui più importanti?
Non è una decisione che spetta direttamente a me, ma ho delle inclinazioni in quella direzione. E per il gruppo che mi preoccupa di più, non mi aspetto che i file e le foto siano un grosso problema: ora li ho tutti scaricati e sono così pochi che trascinarli manualmente nei topic non dovrebbe essere un grosso problema.
Sì, perché stiamo vedendo proprio ora uno dei rischi legati a ciò.
Perché tra sei settimane tutti i dati spariranno da lì.
Posso scrivere un importatore per leggere quei file JSON, ma non posso competere con 200 $. Di solito chiedo 10 volte tanto per scrivere un importatore e migrare un forum di dimensioni moderate (qualche centinaio di migliaia di post).
(modifiche importanti di seguito–secondo tentativo)
Sto lavorando al processo di importazione dei messaggi, seguendo le istruzioni disponibili su Migrate from another forum to Discourse. Come le ho comprese, il processo dovrebbe essere il seguente:
Su quel sistema, con lo stesso utente non privilegiato che esegue Discourse, git clone lo script yahoo-group-export
Con lo stesso utente, eseguire gem install mechanize e gem install mongo. Quindi modificare .config.yaml per inserire le credenziali Yahoo e il nome del gruppo, ed eseguire ruby bin/yg-export.rb.
Prendere una tazza (o due) della tua bevanda preferita.
Una volta completato yg-export, nella directory di Discourse, dare un’occhiata a script/import_scripts/yahoogroup.rb. Modificarlo per puntare al corretto MONGODB_HOST (localhost).
Nella directory di Discourse, eseguire bundle exec ruby script/import_scripts/yahoogroup.rb
Verificare che l’importazione sia avvenuta correttamente
Eseguire il backup e il ripristino su un server live
I passaggi 2-4 sono dedotti. Ma questi sembrano i passaggi corretti da seguire? Credendo di sì, ho proceduto. Tutto è andato bene fino al passaggio 4: yg-export.rb è stato eseguito per circa un’ora, segnalando SUCCESSO per tutto e salvando circa 38k messaggi. Il database syncro è presente con circa 85 MB di dati. A quel punto, ho creato uno snapshot della VM.
Sto avendo problemi con lo script di importazione. Quando eseguo bundle exec ruby script/import_scripts/yahoogroup.rb, ottengo questo:
dan@ubuntu:~/discourse$ bundle exec ruby script/import_scripts/yahoogroup.rb
Traceback (most recent call last):
script/import_scripts/yahoogroup.rb: Bootsnap::LoadPathCache::FallbackScan
7: from script/import_scripts/yahoogroup.rb:4:in `<main>'
6: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/zeitwerk-2.1.10/lib/zeitwerk/kernel.rb:23:in `require'
5: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:26:in `require'
4: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:40:in `rescue in require'
3: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
2: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:89:in `register'
1: from /home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/home/dan/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require': cannot load such file -- mongo (LoadError)
Strano, pensavo di aver già installato il gem mongo. Bene, lo installerò di nuovo:
dan@ubuntu:~/discourse$ gem install mongo
Successfully installed mongo-2.10.2
Parsing documentation for mongo-2.10.2
Done installing documentation for mongo after 4 seconds
1 gem installed
Eseguo di nuovo lo script di importazione, stesso risultato. Fa differenza se lo installo a livello di sistema?
dan@ubuntu:~/discourse$ sudo apt install ruby-mongo
[sudo] password for dan:
Reading package lists... Done
Building dependency tree
Reading state information... Done
ruby-mongo is already the newest version (2.5.1-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
È necessario aggiungere i gem al file Gemfile ed eseguire bundle install, altrimenti l’esecuzione di bundle exec ruby script/import_scripts/yahoogroup.rb non troverà i gem.
Era proprio il pezzo che mi mancava; ora l’importazione sta procedendo speditamente. Grazie!
Modifica: OK, il processo di importazione è durato 75 minuti e i post sono ora presenti. Ottimo. Ha anche creato gli utenti, cosa che mi ponevo il dubbio. Tuttavia, sto notando alcuni problemi con gli utenti:
Sembra che tutti i nomi utente di Yahoo siano stati importati correttamente (ne riconosco molti, dato che facevo parte della mailing list), ma sono stati associati ai messaggi sbagliati. Lo hanno fatto in modo coerente: tutti i messaggi pubblicati da me ora appaiono come se fossero stati pubblicati dallo stesso altro utente. Tuttavia, si tratta di un errore significativo che sarebbe molto laborioso correggere manualmente.
Tutti gli utenti importati sono sospesi per i prossimi 200 anni.
Sospetto che entrambi i problemi derivino dalla mancanza di indirizzi email validi nei dati scaricati da Yahoo, il che è dovuto al fatto che non sono un amministratore del gruppo. Questo è esplicitamente indicato come causa del secondo problema, ma non so se possa causare anche il primo. Pareri?
Se questo è il problema, mi dà qualcosa da indagare, ma pone anche un potenziale ostacolo: so che ci sono due moderatori viventi per il gruppo, ma il proprietario è deceduto nell’ultimo anno. Spero che qualcuno abbia accesso a quelle informazioni…
A quel punto si è presentato il problema degli utenti duplicati o errati.
Con questo plugin: Merge Users Plugin
puoi unire facilmente gli utenti di Yahoo con quelli di Discourse.
Ora abbiamo solo il problema dei file allegati provenienti da Yahoo.
Non fa esattamente ciò di cui ho bisogno: gli unici utenti presenti su questa istanza, oltre all’amministratore, sono quelli importati da Yahoo. Il problema è che il nome utente sbagliato è associato ai post sbagliati: i miei post sono collegati (in modo coerente, per quanto ne so) al nome utente di qualcun altro, e i post di qualcun altro sono collegati al mio.
Ora mi è stato dato l’accesso da moderatore a questo gruppo, il che è sufficiente per scaricare i messaggi con gli indirizzi email reali allegati. Ricomincerò da capo (le VM sono perfette per questo), rifarò l’importazione e vedrò se questo risolve il problema.
Ehi, ok, non è la stessa cosa che ho scoperto io. Nella mia community, nessuno dei post importati era collegato a nessuno degli utenti esistenti della community.
Se ho importato la categoria come descritto nell’argomento collegato, allora ho solo avuto utenti duplicati (o nuovi) nell’elenco degli utenti.
L’importatore ha assegnato i post all’utente sbagliato, ma lo ha fatto nel modo corretto. Voglio dire, se i post che ho scritto io su Yahoo! sono assegnati a “Hans”, allora tutti i miei post sono stati assegnati a “Hans”.
Ho l’ID utente 1 nella mia community, ma non è lo stesso nome del forum Discourse per lo sviluppo che ho configurato. Quindi il mio account non è stato sovrascritto, ma c’era un altro account con lo stesso nome. Tuttavia, questo account è collegato ai post sbagliati.
Ora uso il plugin collegato per unire separatamente tutti gli utenti alla persona corretta nel mio forum. Non richiede molto tempo, ma è difficile capire a quale utente appartiene ciascun post.
OK, ho scaricato i messaggi del gruppo includendo gli indirizzi email completi. Dopo alcuni problemi con l’ambiente di sviluppo, sono riuscito a riprendere il lavoro sull’importazione. Tuttavia, noto ancora alcuni problemi:
Il problema dei nomi utente errati associati ai post sbagliati persiste.
Probabilmente come causa (o “una delle cause”) del punto precedente, la maggior parte degli utenti importati risulta avere indirizzi email non validi. Nel database Mongo generato dallo script yahoo-export, il campo From (da cui lo script di importazione sembra tentare di leggere gli indirizzi email) appare per la maggior parte degli utenti nel formato:
Nome Cognome <user@domain.com>
…che Discourse rifiuta come indirizzo email non valido. Di conseguenza, alla maggior parte degli utenti viene assegnato un indirizzo email del tipo 5dc3e1b4f4d821bd7de3ce456eaf26d5@email.invalid—le eccezioni sembrano essere gli utenti che hanno inviato email senza il nome completo.
I messaggi importati contengono diverse entità HTML, in particolare per le virgolette e i simboli maggiore di e minore di.
Molti, ma non tutti, i messaggi importati includono il nome del gruppo nell’oggetto: Re: [SpareOom] qualche oggetto. Sarebbe utile rimuoverli.
Per gli ultimi tre punti, mi chiedo se una semplice ricerca/sostituzione in tutto il database possa risolvere il problema e, in tal caso, come procedere, tenendo presente che non ho mai toccato MongoDB prima d’ora.
Una questione separata riguarda l’importazione dei messaggi in una categoria designata. I commenti in cima a yahoogroup.rb indicano che è possibile impostare export CATEGORY_ID=<CATEGORY_ID> prima di eseguire lo script per farlo, ma non specificano a cosa si riferisca <CATEGORY_ID>. Ho provato con il nome regolare della categoria, nonché con lo “slug della categoria” (entrambi sono uguali tranne per la capitalizzazione), ma in entrambi i casi lo script di importazione fallisce con:
1: from /home/dan/discourse/lib/topic_creator.rb:36:in `create'
/home/dan/discourse/lib/topic_creator.rb:115:in `setup_topic_params': category (Discourse::InvalidParameters)
Sembra molto simile alla mia prima importazione mbox. Ci sono voluti un paio di mesi.
Sì, probabilmente puoi correggere alcune cose con alcuni sostituti.
Se aggiungi .json alla fine dell’URL di una categoria, puoi trovare l’ID della categoria. È un numero intero.
Dovrai verificare quale identificatore sta usando l’utente creatore e cosa viene utilizzato dalla funzione post per trovare gli utenti. O forse semplicemente non corrispondono.
Analizzando yahoogroup.rb, è evidente che ci si aspetta che il campo From nel messaggio sia un indirizzo email puro. Poiché la maggior parte degli utenti configura i propri client di posta per inviare anche un nome (ad esempio,
Fred Flintstone <fred@flintstone.com>
), questo è il problema n. 1. Una rapida ricerca su Google suggerisce che questo può essere risolto utilizzando il gem Mail, il che cambierebbe quella riga nello script di importazione in:
…il quale estrarrebbe solo l’indirizzo email. Ma come notato sopra, le parentesi angolate sono memorizzate come entità HTML, il che interrompe questo metodo. Ulteriori ricerche su Google mi hanno portato al gem HTMLEntities, che risolverebbe il problema, portandomi a provare quanto segue:
Ma questo fallisce a causa della mancanza del metodo downcase.
Modifica: Ho cercato di evitarlo prendendo una strada diversa; ho visto molte suggerimenti per Nokogiri. Ma per quanto utile sia, i suggerimenti che ho trovato non decodificavano le entità delle parentesi angolate, che era (ed è) la mia necessità più immediata. Quindi sono tornato a HTMLEntities. Ho aggiunto require 'mail' e require 'htmlentities' all’inizio dello script di importazione Yahoo e ho modificato la riga 75 (che era la riga 73 prima di aggiungere i require) come indicato sopra. Sto ancora ricevendo un errore, ma ciò che mi ero perso in precedenza è che in realtà analizza e importa correttamente un utente prima di fermarsi:
dan@ubuntu:~/discourse$ bundle exec ruby script/import_scripts/yahoogroup.rb
Loading existing groups...
Loading existing users...
Loading existing categories...
Loading existing posts...
Loading existing topics...
(snip)
connected to db....
Importing from Mongodb....
Importing users
User created: user@host.tld
Traceback (most recent call last):
8: from script/import_scripts/yahoogroup.rb:163:in `<main>'
7: from /home/dan/discourse/script/import_scripts/base.rb:47:in `perform'
6: from script/import_scripts/yahoogroup.rb:39:in `execute'
5: from script/import_scripts/yahoogroup.rb:58:in `import_users'
4: from /home/dan/discourse/script/import_scripts/base.rb:247:in `create_users'
3: from /home/dan/discourse/script/import_scripts/base.rb:247:in `each'
2: from /home/dan/discourse/script/import_scripts/base.rb:259:in `block in create_users'
1: from /home/dan/discourse/script/import_scripts/base.rb:290:in `create_user'
/home/dan/discourse/script/import_scripts/base.rb:385:in `find_existing_user': undefined method `downcase' for #<Mail::ToField:0x00005575597e63b8> (NoMethodError)
(l’indirizzo email in questo output è mascherato, ma è presente nel database sorgente con il nome completo e le entità per le parentesi angolate, quindi sembra che le mie modifiche allo script abbiano avuto esattamente l’effetto desiderato). Questo mi ha lasciato un po’ confuso, poiché credevo che downcase fosse disponibile di default.
Modifica 2: Bene, analizza l’utente, ma non importa effettivamente l’utente nell’istanza di Discourse.
La questione delle email mi lascia ancora perplesso, ma ho deciso di lasciarla da parte per il momento e vedere se potevo applicare HTMLEntitles al titolo dell’argomento e al testo del messaggio. Nel script yahoogroup.rb, ho modificato la riga 110 in modo che leggesse:
(entrambi i numeri di riga sono +2 rispetto allo script originale, a causa dell’aggiunta delle due righe require che ho menzionato sopra). Ha funzionato perfettamente. L’output del terminale non è cambiato (questo sarebbe stato sulla riga 105, che non ho notato fino a quando non ho avviato l’esecuzione), ma i titoli degli argomenti e il testo nell’istanza importata sono belli e puliti.
Quindi questo metodo sembra funzionare perfettamente nel pulire i titoli degli argomenti e i corpi dei messaggi, ma non funziona per gli indirizzi email. Hai qualche idea su cosa dovrei cercare in quel settore? Sono un po’ bloccato lì.
Potrebbe essere più semplice utilizzare Migrate a mailing list to Discourse (mbox, Listserv, Google Groups, etc) per importare dati da Yahoo Groups. Potresti farlo tramite file mbox o, forse, convertendo i file JSON che hai menzionato in singoli file MSG contenenti il testo grezzo delle email.
Lo script di importazione mbox gestisce sia i file mbox che le email archiviate in file individuali e potrebbe già aver risolto tutti i problemi che stai riscontrando attualmente.