Impossibile pubblicare un argomento

Ho provato a pubblicare un argomento con l’API, ma ha fallito con questo messaggio di errore:
{‘action’: ‘create_post’, ‘errors’: [‘Il corpo è troppo corto (minimo 1 carattere)’, ‘Il corpo sembra poco chiaro, è una frase completa?’]}

  • il messaggio da pubblicare è di circa 25K, un elenco di notizie
    posso pubblicarlo manualmente senza errori.
    ma quando lo pubblico con l’API, fallisce
    la dimensione predefinita del post è 35K(?), l’ho già aumentata (nelle impostazioni) per consentire questo messaggio più lungo.
  • se pubblico una frase breve con il codice sottostante, funziona bene.

ho cambiato body min entropy a 0, non ha aiutato neanche.

ho cercato nel forum, non ho trovato una soluzione,
qualche idea/suggerimento, grazie…

ecco il codice python

import requests

# Intestazioni di autenticazione
headers = {
    "Api-Key": '***',
    "Api-Username": 'newsbot',
}

lines = "alcune notizie, circa 25K"

# Dati dell'argomento
topic_data = {
    "title":"ultime notizie",
    "raw": lines,
    "category": 28,
}

# Invia una richiesta POST per creare l'argomento
response = requests.post('https://www.mydomain.com/posts.json', json=topic_data, headers=headers)

# Verifica se la richiesta ha avuto successo
if response.status_code == 200:
    print("Argomento creato con successo!")
    topic_id = response.json().get("id")
    print(f"ID argomento: {topic_id}")
else:
    print(response.json())
    print(f"Impossibile creare l'argomento. Codice di stato: {response.status_code}")

tra l’altro, il contenuto da pubblicare è un elenco di notizie come questo

[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>titolo notizia</b></summary>
contenuto notizia contenuto notizia contenuto notizia contenuto notizia
contenuto notizia contenuto notizia contenuto notizia contenuto notizia contenuto notizia
contenuto notizia contenuto notizia contenuto notizia contenuto notizia contenuto notizia
contenuto notizia contenuto notizia contenuto notizia contenuto notizia contenuto
lungo questo per una notizia

[La fonte notizie 2023-10-16T21:16:45Z](https://www.newssource.com/live/anews)

Prova ad aggiungere \"skip_validations\": true ai topic_data. (Ci sono casi in cui true deve essere racchiuso tra virgolette, ma non credo sia questo il caso con Python.)

Il parametro skip_validations farà sì che Discourse salti l’esecuzione delle validazioni rispetto alle impostazioni del sito come lunghezza minima del titolo dell'argomento e entropia minima del corpo.

3 Mi Piace

grazie @simon

provato

"skip_validations": True

ha soppresso l’errore, ha creato un argomento, ma è vuoto, hmm…
sospetto che forse la sintassi html nel contenuto del mio post debba essere codificata?

1 Mi Piace

Indovina a caso… Forse impostare Content-Type come application/json?

provato nell’intestazione o nel corpo (topic_data), crea ancora un nuovo post di argomento vuoto.

Ho provato il tuo script Python (senza specificare il content-type) sulla mia istanza e ha funzionato perfettamente:

1 Mi Piace

Devo chiederlo, ma il tuo codice funziona con un testo breve? Hai verificato di passare effettivamente contenuti non vuoti all’API?

1 Mi Piace

sì, funziona per contenuti brevi, ma non per quelli lunghi (allegati), 29848 caratteri, non a causa della lunghezza,
si sospetta forse qualche carattere speciale?

grazie per il tuo aiuto!
test.zip (12,1 KB)

1 Mi Piace

grazie @Arkshine
sì, menzionato nei post precedenti…

1 Mi Piace

Ho provato con il tuo testo e funziona:

Hai racchiuso la tua stringa tra triple virgolette (o ''' o \"\"\") per evitare problemi di escape?

Come carichi il contenuto del tuo post nel tuo script Python (presumo che tu prenda il tuo contenuto da una fonte esterna)?

1 Mi Piace

Stessa cosa dalla mia parte; non ho problemi con il tuo contenuto. Suppongo ci sia qualcosa che non va nel modo in cui recuperi/carichi i dati. :thinking:

1 Mi Piace

hmm… grazie per averci provato… interessante…
Ho caricato il contenuto delle notizie da un file in questo modo…

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

print(lines)
print(len(lines))

ha ottenuto correttamente il contenuto del file, hmm…

Hai provato a passare encoding="utf8" in open()? Potrebbe aiutare.

2 Mi Piace

sì, qualcosa non va nel caricamento del contenuto del file… grazie… falso allarme… :slight_smile:

1 Mi Piace

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