mp_chajian/upload_draft.py
2025-10-15 16:46:31 +08:00

76 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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