トピックの投稿に失敗しました

APIを使用してトピックを投稿しようとしましたが、このエラーメッセージで失敗しました。
{‘action’: ‘create_post’, ‘errors’: [‘Body is too short (minimum is 1 character)’, ‘Body seems unclear, is it a complete sentence?’]}

  • 投稿するメッセージは約25Kで、ニュースのリストです。
  • 手動で投稿するとエラーなく投稿できます。
  • APIで投稿すると失敗します。
  • デフォルトの投稿サイズは35K(?)で、この長いメッセージを許可するために(設定で)すでに増やしました。
  • コードで短い文を投稿すると、正常に動作します。

body min entropy を0に変更しましたが、効果はありませんでした。

フォーラムで検索しましたが、解決策が見つかりませんでした。
何かアイデアや提案はありますか?よろしくお願いします。

以下はPythonコードです。

import requests

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

lines = "some news, around 25K"

# Topic data
topic_data = {
    "title":"latest news",
    "raw": lines,
    "category": 28,
}

# Send a POST request to create the topic
response = requests.post('https://www.mydomain.com/posts.json', json=topic_data, headers=headers)

# Check if the request was successful
if response.status_code == 200:
    print("Topic created successfully!")
    topic_id = response.json().get("id")
    print(f"Topic ID: {topic_id}")
else:
    print(response.json())
    print(f"Failed to create the topic. Status code: {response.status_code}")

ちなみに、投稿するコンテンツは以下のようなニュースのリストです。

[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>news title</b></summary>
news conentnews conentnews conentnews conentnews
conent news conentnews conentnews conentnews conentnews
conentnews conentnews conentnews conentnews conentnews
conentnews conentnews conentnews conentnews conent
about this long for one news

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

topic_data"skip_validations": true を追加してみてください。(true が引用符で囲む必要がある場合もありますが、Python の場合はそうではないと思います。)

skip_validations パラメータを使用すると、Discourse は min topic title lengthbody min entropy のようなサイト設定に対する検証をスキップします。

「いいね!」 3

@simonさん、ありがとうございます。

"skip_validations": True

を試したところ、エラーは抑制され、トピックは作成されましたが、空でした。うーん…

投稿コンテンツのHTML構文をエンコードする必要があるのかもしれません。

「いいね!」 1

推測ですが… Content-Typeapplication/json に設定してみてはどうでしょうか?

ヘッダーまたは本文(topic_data)で試しましたが、新しい空のトピック投稿が作成されます。

インスタンスで(content-typeを指定せずに)Pythonスクリプトを試したところ、完璧に動作しました。

「いいね!」 1

聞かなければならないのですが、あなたのコードは短いテキストでも動作しますか?APIに空でないコンテンツを実際に渡しているか確認しましたか?

「いいね!」 1

はい、短いコンテンツでは機能しますが、長いコンテンツ(添付)では機能しません。29848 文字です。長さによるものではなく、特殊文字が原因の可能性がありますか?

ご協力ありがとうございます!
test.zip (12.1 KB)

「いいね!」 1

@Arkshine ありがとうございます。
はい、上記の投稿で言及されています…

「いいね!」 1

テキストで試したところ、うまくいきました。

エスケープの問題を回避するために、文字列をトリプルクォート('''または""")で囲みましたか?

Pythonスクリプトで投稿のコンテンツをどのようにロードしていますか(外部ソースからコンテンツを取得していると仮定します)?

「いいね!」 1

私の側でも同じです。コンテンツに問題はありません。データを取得/読み込む方法に何か問題があるのだと思います。:thinking:

「いいね!」 1

うーん…試してくれてありがとう…興味深い…
このようにファイルからニュースコンテンツを読み込みました…

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

print(lines)
print(len(lines))

ファイルの内容は正しく取得できましたが、うーん…

open()encoding="utf8" を渡してみましたか? それで解決するかもしれません。

「いいね!」 2

はい、ファイルの内容の読み込みに問題があるようです…
ありがとうございます… ただの誤報でした… :slight_smile:

「いいね!」 1

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