API vs. Formulário: Incompatibilidade de Conteúdo ao Editar

Olá,

Acabei de notar que quando posto conteúdo HTML usando a API posts.json e depois edito a postagem, vejo o HTML no conteúdo da postagem.

Como a postagem é exibida:

Quando clico em editar:

Requisição da API:

Quando posto diretamente pelo formulário, nenhum HTML aparece na edição (a exibição é a mesma):

Como posso evitar ter HTML no conteúdo quando a postagem é editada?

Obrigado :slight_smile:

1 curtida

Olá Luicid :wave:
O conteúdo bruto, que é exibido no editor, aceita uma matriz de tags HTML, assim exibirá em texto simples.

Se você quiser adicionar uma quebra de linha sem usar uma tag <br>, use \n em vez disso. :slight_smile:

Primeira linha\nNova linha

Se você quiser ter dois parágrafos, você precisa adicionar uma quebra de linha adicional:

Primeira linha\n\nNova linha

Editar estas mensagens não mostrará nenhuma tag <br>.

Observação: os parágrafos são criados automaticamente dependendo do contexto quando a postagem é processada, portanto, não há necessidade de adicionar essas tags à sua entrada bruta de consulta.

4 curtidas

Oi novamente Canapin :slight_smile:

Ok, entendi. Então a única opção para ter uma exibição limpa quando os usuários editarem suas postagens HTML migradas via API é substituir todas as tags <p> e <br> por \n, se eu entendi corretamente?

Obrigado

2 curtidas

Se você tentar higienizar algum conteúdo HTML importado, suponho que você também possa substituir parágrafos por quebras de linha, assim você terá certeza de que há quebras de linha e a postagem será processada corretamente.

<p>some text</p><p>some other text</p>

tornar-se-ia:

\nsome text\n\nsome other text\n

E será renderizado como:


some text

some text


3 curtidas

Ok, obrigado :slight_smile:
Última pergunta:
Existe alguma maneira de me dizer como adicionar uma menção, como esta: @Canapin, em uma postagem via API? Tentei usar @username no campo raw, mas não funcionou.

Certifique-se de enviar um payload JSON.

{
    "raw": "Menção de teste: @canapin",
    "topic_id": 86,
    "reply_to_post_number": 3
}

O resultado é uma menção funcional:

Se você estiver importando um monte de dados, deve usar um script de importação. Muitos deles têm exemplos de remoção de HTML e tratamento de aspas e menções.

Se você quiser adicionar dados continuamente a um site existente, use a API.

1 curtida

Ah, entendi meu erro! Eu estava testando com um nome de usuário em minúsculas em vez de usar o nome de usuário exato, pois a menção diferencia maiúsculas de minúsculas. Peço desculpas.

Obrigado por dedicar seu tempo para me ajudar! :wink:

Tenha um bom dia!

Sinceramente, criei um POC com um script de importação em Ruby, mas como preciso sincronizar dados por vários dias entre uma solução antiga e o Discourse, prefiro executar um script Python simples. É muito mais rápido de configurar e manter. Além disso, é consistente, pois extraio os dados antigos com Python. O provedor anterior não nos concederá acesso ao banco de dados, então extraí todo o conteúdo para um banco de dados.

Mas, é claro, é uma solução melhor se for uma migração simples :slight_smile:

Menções devem funcionar mesmo se alterarmos a capitalização:

image

A captura de tela em sua primeira postagem usa form-data. Você deve usar um campo raw com formatação JSON. :slight_smile:

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.