Falha ao postar um tópico

tentei postar um tópico com a API, falhou com esta mensagem de erro:
{‘action’: ‘create_post’, ‘errors’: [‘Body is too short (minimum is 1 character)’, ‘Body seems unclear, is it a complete sentence?’]}

  • a mensagem a ser postada tem cerca de 25K, uma lista de notícias
    posso postá-la manualmente sem erro.
    mas quando posto com a API, falha
    o tamanho padrão da postagem é 35K(?), já aumentei (nas configurações) para permitir esta mensagem mais longa.
  • se posto uma frase curta com o código abaixo, funciona bem.

mudei body min entropy para 0, também não ajudou.

pesquisei no fórum, não encontrei uma solução,
alguma ideia/sugestão, obrigado…

aqui está o código python

import requests

# Cabeçalhos de autenticação
headers = {
    "Api-Key": '***',
    "Api-Username": 'newsbot',
}

lines = "algumas notícias, cerca de 25K"

# Dados do tópico
topic_data = {
    "title":"últimas notícias",
    "raw": lines,
    "category": 28,
}

# Enviar uma solicitação POST para criar o tópico
response = requests.post('https://www.mydomain.com/posts.json', json=topic_data, headers=headers)

# Verificar se a solicitação foi bem-sucedida
if response.status_code == 200:
    print("Tópico criado com sucesso!")
    topic_id = response.json().get("id")
    print(f"ID do Tópico: {topic_id}")
else:
    print(response.json())
    print(f"Falha ao criar o tópico. Código de status: {response.status_code}")

a propósito, o conteúdo a ser postado é uma lista de notícias como esta

[grid]
![](https://static01.nyt.com/images/2023/10/16/multimedia/animage.jpg)
![](https://content.api.news/v3/images/bin/image.jpg)
[/grid]

<details>
<summary><b>título da notícia</b></summary>
conteúdo da notícia conteúdo da notícia conteúdo da notícia conteúdo da notícia
conteúdo da notícia conteúdo da notícia conteúdo da notícia conteúdo da notícia conteúdo da notícia
conteúdo da notícia conteúdo da notícia conteúdo da notícia conteúdo da notícia conteúdo da notícia
conteúdo da notícia conteúdo da notícia conteúdo da notícia conteúdo da notícia conteúdo
sobre isso é longo para uma notícia

[A Nova Fonte de Notícias 2023-10-16T21:16:45Z](https://www.newssource.com/live/anews)

Tente adicionar \"skip_validations\": true aos topic_data. (Existem casos em que true precisa estar entre aspas, mas acho que não é o caso com Python.)

O parâmetro skip_validations fará com que o Discourse pule a execução das validações em relação às configurações do site, como min topic title length e body min entropy.

3 curtidas

obrigado @simon

tentei

"skip_validations": True

isso suprimiu o erro, criou um tópico, mas ele está vazio, hmm…
suspeito que talvez a sintaxe html no conteúdo da minha postagem precise ser codificada?

1 curtida

Palpite aleatório… Talvez definir o Content-Type como application/json?

tentou no cabeçalho ou no corpo (topic_data), ele ainda cria uma nova postagem de tópico vazia.

Tentei seu script python (sem especificar o content-type) na minha instância e funcionou perfeitamente:

1 curtida

Tenho que perguntar, mas seu código funciona com um texto curto? Você verificou se realmente passa conteúdo não vazio na API?

1 curtida

sim, funciona para conteúdo curto, mas não para o longo (anexo), 29848 caracteres, não devido ao comprimento,
suspeito que talvez algum caractere especial?

obrigado pela sua ajuda!
test.zip (12,1 KB)

1 curtida

obrigado @Arkshine
sim, mencionado nas postagens acima…

1 curtida

Eu tentei com o seu texto e funcionou:

Você incluiu sua string entre aspas triplas (seja ''' ou \"\"\") para evitar problemas de escape?

Como você carrega o conteúdo da sua postagem em seu script Python (suponho que você pegue seu conteúdo de uma fonte externa)?

1 curtida

O mesmo do meu lado; não tenho problemas com seu conteúdo. Acho que há algo errado com a forma como você recupera/carrega os dados. :thinking:

1 curtida

hmm… obrigado por tentar… interessante…
Carreguei o conteúdo das notícias de um arquivo assim…

with open(sys.argv[1]) as f:
    lines = [line for line in f]
 
print(lines)
print(len(lines))

ele obteve o conteúdo do arquivo corretamente, hmm…

Você tentou passar encoding=\"utf8\" em open()? Isso pode ajudar.

2 curtidas

sim, algo não está certo ao carregar o conteúdo do arquivo…
obrigado… alarme falso… :slight_smile:

1 curtida

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