Échec de la publication d'un sujet

tentative de publier un sujet avec l’API, cela a échoué avec le message d’erreur suivant :
{‘action’: ‘create_post’, ‘errors’: [‘Body is too short (minimum is 1 character)’, ‘Body seems unclear, is it a complete sentence?’]}

  • le message à publier fait environ 25 Ko, une liste de nouvelles
    peut le publier manuellement sans erreur.
    mais lorsqu’il est publié avec l’API, cela échoue
    la taille par défaut du message est de 35 Ko (?), je l’ai déjà augmentée (dans les paramètres) pour autoriser ce message plus long.
  • si je publie une phrase courte avec le code ci-dessous, cela fonctionne bien.

j’ai changé body min entropy à 0, cela n’a pas non plus aidé.

j’ai cherché sur le forum, je n’ai pas trouvé de solution,
des idées/suggestions, merci…

voici le code python

import requests

# En-têtes d'authentification
headers = {
    "Api-Key": '***',
    "Api-Username": 'newsbot',
}

lines = "quelques nouvelles, environ 25 Ko"

# Données du sujet
topic_data = {
    "title": "dernières nouvelles",
    "raw": lines,
    "category": 28,
}

# Envoyer une requête POST pour créer le sujet
response = requests.post('https://www.mydomain.com/posts.json', json=topic_data, headers=headers)

# Vérifier si la requête a réussi
if response.status_code == 200:
    print("Sujet créé avec succès !")
    topic_id = response.json().get("id")
    print(f"ID du sujet : {topic_id}")
else:
    print(response.json())
    print(f"Échec de la création du sujet. Code d'état : {response.status_code}")

au fait, le contenu à publier est une liste de nouvelles comme celle-ci

[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>titre de la nouvelle</b></summary>
contenu de la nouvelle contenu de la nouvelle contenu de la nouvelle contenu de la nouvelle
contenu de la nouvelle contenu de la nouvelle contenu de la nouvelle contenu de la nouvelle
contenu de la nouvelle contenu de la nouvelle contenu de la nouvelle contenu de la nouvelle
contenu de la nouvelle contenu de la nouvelle contenu de la nouvelle contenu de la nouvelle
longueur d'environ pour une nouvelle

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

Essayez d’ajouter \"skip_validations\": true aux topic_data. (Il y a des cas où true doit être entre guillemets, mais je ne pense pas que ce soit le cas avec Python.)

Le paramètre skip_validations permettra à Discourse d’ignorer les validations par rapport aux paramètres du site tels que min topic title length et body min entropy.

3 « J'aime »

Merci @simon

J’ai essayé

"skip_validations": True

cela a supprimé l’erreur, créé un sujet, mais il est vide, hmm…
Je soupçonne que la syntaxe html dans le contenu de mon message doit être encodée ?

1 « J'aime »

Devinette aléatoire… Peut-être définir le Content-Type sur application/json ?

essayé dans l’en-tête ou le corps (topic_data), cela crée toujours un nouveau message de sujet vide.

J’ai essayé votre script python (sans spécifier le content-type) sur mon instance et cela a parfaitement fonctionné :

1 « J'aime »

Je dois le demander, mais votre code fonctionne-t-il avec un texte court ? Avez-vous vérifié que vous transmettez bien un contenu non vide à l’API ?

1 « J'aime »

oui, ça marche pour du contenu court, mais pas pour du contenu long (joint), 29848 caractères, pas à cause de la longueur,
je suspecte peut-être un caractère spécial ?
merci pour votre aide !
test.zip (12.1 KB)

1 « J'aime »

merci @Arkshine
oui, mentionné dans les posts ci-dessus…

1 « J'aime »

J’ai essayé avec votre texte et cela fonctionne :

Avez-vous entouré votre chaîne de guillemets triples (soit ''' soit \"\"\") pour éviter les problèmes d’échappement ?

Comment chargez-vous le contenu de votre publication dans votre script Python (je suppose que vous prenez votre contenu d’une source externe) ?

1 « J'aime »

Même chose de mon côté ; je n’ai aucun problème avec votre contenu. Je suppose qu’il y a un problème avec la façon dont vous récupérez/chargez les données. :thinking:

1 « J'aime »

hmm… merci d’avoir essayé… intéressant…
J’ai chargé le contenu des actualités à partir d’un fichier comme ceci…

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

print(lines)
print(len(lines))

il a correctement récupéré le contenu du fichier, hmm…

Avez-vous essayé de passer encoding="utf8" dans open() ? Cela pourrait aider.

2 « J'aime »

oui, quelque chose ne va pas avec le chargement du contenu du fichier… merci… fausse alerte… :slight_smile:

1 « J'aime »

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