게시글 작성 실패

API로 토픽을 게시하려고 했는데 다음 오류 메시지와 함께 실패했습니다:
{‘action’: ‘create_post’, ‘errors’: [‘본문이 너무 짧습니다 (최소 1자)’, ‘본문이 불분명합니다. 완전한 문장인가요?’]}

  • 게시할 메시지는 약 25K 크기의 뉴스 목록입니다.
  • 수동으로 게시하면 오류 없이 가능합니다.
  • 하지만 API로 게시하면 실패합니다.
  • 기본 게시글 크기는 35K(?입니다) 이미 이 긴 메시지를 허용하도록 설정에서 늘려두었습니다.
  • 아래 코드로 짧은 문장을 게시하면 정상적으로 동작합니다.

body min entropy를 0으로 변경해 보았지만 도움이 되지 않았습니다.

포럼을 검색해 보았지만 해결책을 찾지 못했습니다.
혹시 아이디어나 제안이 있으시면 알려주세요. 감사합니다…

다음은 파이썬 코드입니다

import requests

# 인증 헤더
headers = {
    "Api-Key": '***',
    "Api-Username": 'newsbot',
}

lines = "some news, around 25K"

# 토픽 데이터
topic_data = {
    "title":"latest news",
    "raw": lines,
    "category": 28,  
}

# 토픽 생성을 위한 POST 요청 전송
response = requests.post('https://www.mydomain.com/posts.json', json=topic_data, headers=headers)

# 요청이 성공했는지 확인
if response.status_code == 200:
    print("토픽이 성공적으로 생성되었습니다!")
    topic_id = response.json().get("id")
    print(f"토픽 ID: {topic_id}")
else:
    print(response.json())
    print(f"토픽 생성에 실패했습니다. 상태 코드: {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>뉴스 제목</b></summary>
뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용  
내용 뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용  
뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용  
뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용 뉴스 내용
하나의 뉴스에 대해 이 정도 길이입니다

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

topic_data에 "skip_validations": true를 추가해 보세요. (Python의 경우 따옴표 없이 true를 사용해도 되는 경우가 있지만, 언어에 따라 따옴표가 필요한 경우도 있습니다.)

skip_validations 파라미터는 Discourse가 min topic title length나 body min entropy와 같은 사이트 설정에 대한 검증을 건너뛰도록 합니다.

감사합니다 @simon

아래와 같이 시도해 봤습니다.

"skip_validations": True

에러는 사라졌고, 토픽도 생성되었지만 내용은 비어 있네요. hmm…
아마 게시글 콘텐츠의 HTML 구문을 인코딩해야 하는 것 같다는 의문이 듭니다.

무작정 추측이지만… Content-Type을 application/json으로 설정해 보는 건 어때요?

헤더나 본문(topic_data)에 적용해 보았지만, 여전히 빈 주제 게시글이 생성됩니다.

인스턴스에서 Python 스크립트(content-type을 지정하지 않은 상태로)를 실행해 봤는데 완벽하게 작동했습니다:

확인해야겠지만, 짧은 텍스트로 코드가 제대로 작동하나요? API에 실제로 비어 있지 않은 콘텐츠를 전달하는지 확인해 보셨나요?

네, 짧은 콘텐츠에는 작동하지만 긴 콘텐츠(첨부)에는 작동하지 않습니다. 29,848자이고, 길이가 원인인 것은 아닌 것 같습니다.
혹시 특수 문자 때문일까요?

도움 주셔서 감사합니다!
test.zip (12.1 KB)

고맙습니다 @Arkshine
네, 위에 있는 게시물들에서 언급했었죠…

작성해주신 텍스트로 시도해 보니 작동합니다:

에스케이프 문제를 피하기 위해 문자열을 삼중 따옴표(''' 또는 """)로 감쌌나요?

Python 스크립트에서 게시글 내용을 어떻게 불러오나요? (외부 소스에서 내용을 가져오는 것으로 추정됩니다)

저도 같은 문제입니다. 작성하신 콘텐츠에는 문제가 없어요. 데이터를 가져오거나 로드하는 방식에 문제가 있는 것 같습니다. :thinking:

음… 시도해줘서 고마워… 흥미롭네…
파일에서 뉴스 내용을 이렇게 불러왔어…

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

파일 내용을 올바르게 가져왔는데, 음…

open()에 encoding="utf8"를 전달해 보셨나요? 도움이 될 수 있습니다.

네, 파일 내용 로딩에 뭔가 문제가 있네요…
고마워요… 오탐이었어요… :slight_smile: