fbpbdmin
(deepblue)
2023 年 10 月 17 日午前 1:06
1
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]


[/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)
simon
2023 年 10 月 17 日午前 1:39
2
deepblue:
{‘action’: ‘create_post’, ‘errors’: [‘Body is too short (minimum is 1 character)’, ‘Body seems unclear, is it a complete sentence?’]}
topic_data に "skip_validations": true を追加してみてください。(true が引用符で囲む必要がある場合もありますが、Python の場合はそうではないと思います。)
skip_validations パラメータを使用すると、Discourse は min topic title length や body min entropy のようなサイト設定に対する検証をスキップします。
「いいね!」 3
fbpbdmin
(deepblue)
2023 年 10 月 17 日午前 11:31
3
@simonさん 、ありがとうございます。
"skip_validations": True
を試したところ、エラーは抑制され、トピックは作成されましたが、空でした。うーん…
投稿コンテンツのHTML構文をエンコードする必要があるのかもしれません。
「いいね!」 1
Canapin
(Coin-coin le Canapin)
2023 年 10 月 17 日午前 11:39
4
推測ですが… Content-Type を application/json に設定してみてはどうでしょうか?
fbpbdmin
(deepblue)
2023 年 10 月 17 日午後 12:03
5
ヘッダーまたは本文(topic_data)で試しましたが、新しい空のトピック投稿が作成されます。
Canapin
(Coin-coin le Canapin)
2023 年 10 月 17 日午後 12:22
6
インスタンスで(content-typeを指定せずに)Pythonスクリプトを試したところ、完璧に動作しました。
「いいね!」 1
聞かなければならないのですが、あなたのコードは短いテキストでも動作しますか?APIに空でないコンテンツを実際に渡しているか確認しましたか?
「いいね!」 1
fbpbdmin
(deepblue)
2023 年 10 月 17 日午後 1:52
8
はい、短いコンテンツでは機能しますが、長いコンテンツ(添付)では機能しません。29848 文字です。長さによるものではなく、特殊文字が原因の可能性がありますか?
ご協力ありがとうございます!
test.zip (12.1 KB)
「いいね!」 1
fbpbdmin
(deepblue)
2023 年 10 月 17 日午後 1:53
9
@Arkshine ありがとうございます。
はい、上記の投稿で言及されています…
「いいね!」 1
Canapin
(Coin-coin le Canapin)
2023 年 10 月 17 日午後 2:05
10
テキストで試したところ、うまくいきました。
エスケープの問題を回避するために、文字列をトリプルクォート('''または""")で囲みましたか?
Pythonスクリプトで投稿のコンテンツをどのようにロードしていますか(外部ソースからコンテンツを取得していると仮定します)?
「いいね!」 1
私の側でも同じです。コンテンツに問題はありません。データを取得/読み込む方法に何か問題があるのだと思います。
「いいね!」 1
fbpbdmin
(deepblue)
2023 年 10 月 17 日午後 3:43
12
うーん…試してくれてありがとう…興味深い…
このようにファイルからニュースコンテンツを読み込みました…
with open(sys.argv[1]) as f:
lines = [line for line in f]
print(lines)
print(len(lines))
ファイルの内容は正しく取得できましたが、うーん…
open() で encoding="utf8" を渡してみましたか? それで解決するかもしれません。
「いいね!」 2
fbpbdmin
(deepblue)
2023 年 10 月 18 日午後 7:28
14
はい、ファイルの内容の読み込みに問題があるようです…
ありがとうございます… ただの誤報でした…
「いいね!」 1
system
(system)
クローズされました:
2023 年 11 月 17 日午後 7:28
15
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.