76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
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
|
||
|