Fehlgeschlagen, ein Thema zu posten

Bei dem Versuch, ein Thema über die API zu posten, ist folgender Fehler aufgetreten:
{‘action’: ‘create_post’, ‘errors’: [‘Body is too short (minimum is 1 character)’, ‘Body seems unclear, is it a complete sentence?’]}

  • Die zu postende Nachricht ist etwa 25.000 Zeichen lang, eine Liste von Nachrichten.

  • Manuell kann ich sie ohne Fehler posten.

  • Wenn ich sie jedoch über die API poste, schlägt sie fehl.

  • Die Standard-Postgröße beträgt 35.000 Zeichen (?), ich habe sie bereits (in den Einstellungen) erhöht, um diese längere Nachricht zuzulassen.

  • Wenn ich mit dem folgenden Code einen kurzen Satz poste, funktioniert es einwandfrei.

  • Ich habe body min entropy auf 0 gesetzt, aber das hat auch nicht geholfen.

  • Ich habe das Forum durchsucht, aber keine Lösung gefunden.

  • Hat jemand eine Idee/Vorschläge? Vielen Dank…

Hier ist der Python-Code:

import requests

# Authentifizierungsheader
headers = {
    "Api-Key": '***',
    "Api-Username": 'newsbot',
}

lines = "einige Nachrichten, etwa 25.000 Zeichen"

# Thema-Daten
topic_data = {
    "title": "neueste Nachrichten",
    "raw": lines,
    "category": 28,
}

# Senden einer POST-Anfrage zum Erstellen des Themas
response = requests.post('https://www.mydomain.com/posts.json', json=topic_data, headers=headers)

# Prüfen, ob die Anfrage erfolgreich war
if response.status_code == 200:
    print("Thema erfolgreich erstellt!")
    topic_id = response.json().get("id")
    print(f"Thema-ID: {topic_id}")
else:
    print(response.json())
    print(f"Fehler beim Erstellen des Themas. Statuscode: {response.status_code}")

Übrigens, der zu postende Inhalt ist eine Liste von Nachrichten wie diese:

[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>Nachrichtentitel</b></summary>
NachrichteninhaltNachrichteninhaltNachrichteninhaltNachrichteninhaltNachrichten
inhaltNachrichteninhaltNachrichteninhaltNachrichteninhaltNachrichteninhalt
NachrichteninhaltNachrichteninhaltNachrichteninhaltNachrichteninhaltNachrichteninhalt
NachrichteninhaltNachrichteninhaltNachrichteninhaltNachrichteninhaltNachrichten
Dies ist für eine Nachricht lang.

[Die neue Quelle 2023-10-16T21:16:45Z](https://www.newssource.com/live/anews)

Versuchen Sie, \"skip_validations\": true zu den topic_data hinzuzufügen. (Es gibt Fälle, in denen true in Anführungszeichen eingeschlossen werden muss, aber ich glaube nicht, dass dies bei Python der Fall ist.)

Der Parameter skip_validations veranlasst Discourse, die Validierungen gegen Website-Einstellungen wie min topic title length und body min entropy zu überspringen.

3 „Gefällt mir“

Danke @simon

versucht

"skip_validations": True

Es hat den Fehler unterdrückt, ein Thema erstellt, aber es ist leer, hmm…
Ich vermute, vielleicht muss die HTML-Syntax in meinem Post-Inhalt kodiert werden?

1 „Gefällt mir“

Zufälliger Tipp… Vielleicht Content-Type als application/json festlegen?

versucht im Header oder Body (topic_data), es wird immer noch ein neuer leerer Thema-Post erstellt.

Ich habe Ihr Python-Skript (ohne Angabe des Content-Type) auf meiner Instanz ausprobiert und es hat perfekt funktioniert:

1 „Gefällt mir“

Ich muss es fragen, aber funktioniert Ihr Code mit einem kurzen Text? Haben Sie überprüft, ob Sie tatsächlich nicht leere Inhalte an die API übergeben?

1 „Gefällt mir“

Ja, es funktioniert für kurze Inhalte, aber nicht für die langen (angehängt), 29848 Zeichen, nicht wegen der Länge,
vermutlich vielleicht ein Sonderzeichen?

Danke für deine Hilfe!
test.zip (12,1 KB)

1 „Gefällt mir“

Danke @Arkshine
Ja, in den obigen Beiträgen erwähnt…

1 „Gefällt mir“

Ich habe es mit Ihrem Text versucht und es funktioniert:

Haben Sie Ihre Zeichenkette in dreifache Anführungszeichen (entweder ''' oder \"\"\") eingeschlossen, um Probleme mit Escape-Zeichen zu vermeiden?

Wie laden Sie den Inhalt Ihres Beitrags in Ihr Python-Skript (ich nehme an, Sie beziehen Ihren Inhalt aus einer externen Quelle)?

1 „Gefällt mir“

Auf meiner Seite dasselbe; ich habe keine Probleme mit Ihren Inhalten. Ich vermute, es gibt ein Problem damit, wie Sie die Daten abrufen/laden. :thinking:

1 „Gefällt mir“

hmm… danke für den Versuch… interessant…
Ich habe den Nachrichteninhalt auf diese Weise aus einer Datei geladen…

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

print(lines)
print(len(lines))

es hat den Dateiinhalt korrekt erhalten, hmm…

Haben Sie versucht, encoding="utf8" in open() zu übergeben? Das könnte helfen.

2 „Gefällt mir“

Ja, etwas stimmt nicht mit dem Laden des Dateiinhalts… danke… Fehlalarm… :slight_smile:

1 „Gefällt mir“

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