Come risolvere problemi di formattazione? - markdown mal migrato in HTML

Siamo riusciti a migrare da flarum.amybo.org a discourse forum.amybo.org ma il forum è ora pieno di problemi di formattazione. Ad esempio:

@\"Gerrit\"#p174 Mi piace l'idea di un liquido a base acquosa (proprio come quello di Rabaey), quindi ho controllato gli ingredienti di [Nutrisorb Trace Minerals](https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml):
1. Acqua purificata,
2. Borato di sodio,
3. Conservante (acido citrico),

Diventa:

<r>
<p>
<POSTMENTION discussionid="25" displayname="Gerrit" id="174" number="8">@\"Gerrit\"#p174</POSTMENTION> Mi piace l'idea di un liquido a base acquosa (proprio come quello di Rabaey), quindi ho controllato gli ingredienti di <URL url="https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml"><s>[</s>Nutrisorb Trace Minerals](https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml)<s></s></URL>
</p>
<LIST type="decimal">
<LI><s>1.</s> Purified Water, </LI>
<LI><s>2.</s> Sodium Borate, </LI>
<LI><s>3.</s> Preservative (Citric Acid), </LI>
</LIST>

C’è un modo consigliato per risolvere questi problemi?

Sarebbe fantastico se potesse essere automatizzato sull’intero forum (senza mostrare ogni post come modificato), ma, in caso contrario, una correzione semi-automatizzata che potremmo applicare post per post sarebbe meglio che dover rimuovere manualmente ogni tag HTML per tornare al markdown.

Il momento di correggerli era quando hai fatto l’importazione. Come qualcuno che fa molte migrazioni, il lancio di un forum con una formattazione errata come questa è una delle mie maggiori preoccupazioni. Sarebbe stato abbastanza facile correggere lo script di importazione, e molto più difficile correggerlo a posteriori ora che hai lanciato. Sarebbe stato forse un’ora o due allora, e ora è 2-5 volte tanto lavoro.

Sì, si potrebbe scrivere uno script che ripulisca le cose sul forum attivo e o (spaventoso) non mantenere le modifiche (quindi non ci sarebbero modifiche, né notifiche), o fare la modifica e dire di non aggiornare/notificare. Sono abbastanza sicuro di averlo già fatto. Faresti qualcosa del genere:

fixes = Post.where("raw like '%something broken%'")
fixes.each do |p|
   new_raw = p.raw.gsub!(some stuff)
   PostRevisor.new(p).revise!({raw: new_raw, edit_reason: 'post fixer!'}, {bypass_bump: true)
end

Il raw contiene tutto quell’HTML?

2 Mi Piace

Credo che tu possa usare il comando rake posts:remap (vedi Replace a string in all posts per ottenerlo); non dovresti avere una modifica con quel comando.

1 Mi Piace

Quel rake task va bene per semplici sostituzioni, ma diventa rapidamente ingestibile.

Cosa intendi? Come se volessi gestire espressioni regolari complesse, non fosse pratico?

Giusto. Stai chiamando il task in una shell, quindi capire rapidamente se stai sfuggendo a Bash, Ruby o all’espressione regolare diventa difficile o impossibile. Inoltre, sembra che le correzioni non saranno semplici sostituzioni.

2 Mi Piace

Sono nuovo a Discourse, ma ora ho scoperto come accedere al codice sorgente e sì, contiene tutto l’HTML:
https://forum.amybo.org/raw/56/9

Hai usato lo script flarum_import.rb esistente? È difficile immaginare che l’HTML sia nel campo p.content di Flarum (che è ciò che finisce in raw nello script di importazione). Sono abbastanza sicuro che Flarum utilizzi il markdown, quindi non capisco perché dovresti avere HTML in raw. O forse lo script è semplicemente così rotto.

Ma il barrato è ciò che si trova nell’HTML. Forse puoi semplicemente correggerlo con CSS.

Correggere \u003cPOSTMENTION\u003e è un po’ più complicato poiché Discourse ha citazioni, ma non menzioni. La soluzione facile sarebbe semplicemente cambiarle in un semplice @${displayname} (e sperare che il nome utente sia lo stesso di prima dell’importazione, o fare una ricerca in user_custom_fields per trovare il nome utente aggiornato. Un’altra cosa che potresti fare sarebbe includere un link simile a @mention ha detto [qui](/t/-/\u003cID di Discourse per l'argomento 25\u003e/\u003c8\u003e).

Una soluzione folle sarebbe scrivere uno script che estragga il markdown dal database di Flarum e aggiorni il campo raw per includerlo. Dovrebbe comunque essere ripulito un po’ (per quanto riguarda menzioni e POSTMENTIONS), ma risolverebbe molte cose.

Un’altra idea sarebbe quella di bloccare il tuo sito, eseguire una cancellazione di massa di tutti i dati importati, correggere lo script di importazione ed eseguirlo di nuovo.

Ma non hai molti nuovi post da quando ti sei trasferito, quindi forse potresti salvarli in qualche modo, fare una nuova importazione su un database vuoto e poi aggiungerli di nuovo. Gestire i nuovi utenti sarebbe un po’ più difficile.

Se hai un budget, puoi contattarmi o pubblicare in Marketplace.

2 Mi Piace

Grazie Jay, non ho eseguito io la migrazione, quindi non so quale script sia stato utilizzato. Il membro che l’ha fatto è malato influenzato, ma gli segnalerò il tuo eccellente consiglio qui, quando tornerà.

1 Mi Piace