mp_chajian/upload_draft.py

76 lines
2.1 KiB
Python
Raw Permalink Normal View History

2025-10-15 16:46:31 +08:00
import requests
import json
def upload_article_draft(access_token, title, content, cover_media_id, author, digest=None, show_cover_pic=1):
"""
上传文章草稿到微信公众号草稿箱
参数:
access_token (str): 公众号的access_token
title (str): 文章标题
content (str): 文章内容HTML格式
cover_media_id (str): 封面图片的media_id
author (str): 作者
digest (str, optional): 文章摘要默认为None
show_cover_pic (int, optional): 是否显示封面0不显示1显示默认为1
返回:
str: 成功时返回草稿的media_id
None: 失败时返回None
"""
# 验证必填参数
if not all([access_token, title, content, cover_media_id, author]):
return None
# 微信上传草稿接口
url = f"https://api.weixin.qq.com/cgi-bin/draft/add?access_token={access_token}"
# 构造请求数据
article_data = {
"articles": [
{
"title": title,
"content": content,
"thumb_media_id": cover_media_id,
"author": author,
"show_cover_pic": show_cover_pic
}
]
}
# 添加可选参数
if digest:
article_data["articles"][0]["digest"] = digest
try:
# 发送POST请求
response = requests.post(
url,
data=json.dumps(article_data, ensure_ascii=False).encode('utf-8'),
headers={'Content-Type': 'application/json'},
timeout=15
)
# 解析响应结果
result = json.loads(response.text)
# 检查是否有错误
if "errcode" in result and result["errcode"] != 0:
return None
# 返回草稿的media_id
media_id = result.get("media_id")
if media_id:
return media_id
else:
return None
except requests.exceptions.RequestException:
return None
except json.JSONDecodeError:
return None
except Exception:
return None