Skip to content

Commit

Permalink
增加 发布能力 相关接口 (#719)
Browse files Browse the repository at this point in the history
* init freepublish

* add delete

* add getarticle and batchget

* update wechat work

* optimize import

* black
  • Loading branch information
ldsink committed Mar 27, 2022
1 parent c02f169 commit 318e909
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 18 deletions.
6 changes: 4 additions & 2 deletions wechatpy/client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,16 @@ class WeChatClient(BaseWeChatClient):
API_BASE_URL = "https://api.weixin.qq.com/cgi-bin/"

card = api.WeChatCard()
cloud = api.WeChatCloud()
customservice = api.WeChatCustomService()
datacube = api.WeChatDataCube()
device = api.WeChatDevice()
draft = api.WeChatDraft()
freepublish = api.WeChatFreePublish()
group = api.WeChatGroup()
invoice = api.WeChatInvoice()
jsapi = api.WeChatJSAPI()
marketing = api.WeChatMarketing()
material = api.WeChatMaterial()
media = api.WeChatMedia()
menu = api.WeChatMenu()
Expand All @@ -39,8 +43,6 @@ class WeChatClient(BaseWeChatClient):
user = api.WeChatUser()
wifi = api.WeChatWiFi()
wxa = api.WeChatWxa()
marketing = api.WeChatMarketing()
cloud = api.WeChatCloud()

def __init__(
self,
Expand Down
8 changes: 5 additions & 3 deletions wechatpy/client/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,21 @@


from wechatpy.client.api.card import WeChatCard # NOQA
from wechatpy.client.api.cloud import WeChatCloud # NOQA
from wechatpy.client.api.customservice import WeChatCustomService # NOQA
from wechatpy.client.api.datacube import WeChatDataCube # NOQA
from wechatpy.client.api.device import WeChatDevice # NOQA
from wechatpy.client.api.draft import WeChatDraft # NOQA
from wechatpy.client.api.freepublish import WeChatFreePublish # NOQA
from wechatpy.client.api.group import WeChatGroup # NOQA
from wechatpy.client.api.invoice import WeChatInvoice # NOQA
from wechatpy.client.api.jsapi import WeChatJSAPI # NOQA
from wechatpy.client.api.marketing import WeChatMarketing # NOQA
from wechatpy.client.api.material import WeChatMaterial # NOQA
from wechatpy.client.api.media import WeChatMedia # NOQA
from wechatpy.client.api.menu import WeChatMenu # NOQA
from wechatpy.client.api.merchant import WeChatMerchant # NOQA
from wechatpy.client.api.message import WeChatMessage # NOQA
from wechatpy.client.api.merchant import WeChatMerchant # NOQA
from wechatpy.client.api.misc import WeChatMisc # NOQA
from wechatpy.client.api.poi import WeChatPoi # NOQA
from wechatpy.client.api.qrcode import WeChatQRCode # NOQA
Expand All @@ -24,5 +28,3 @@
from wechatpy.client.api.user import WeChatUser # NOQA
from wechatpy.client.api.wifi import WeChatWiFi # NOQA
from wechatpy.client.api.wxa import WeChatWxa # NOQA
from wechatpy.client.api.marketing import WeChatMarketing # NOQA
from wechatpy.client.api.cloud import WeChatCloud # NOQA
70 changes: 70 additions & 0 deletions wechatpy/client/api/freepublish.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
from wechatpy.client.api.base import BaseWeChatAPI


class WeChatFreePublish(BaseWeChatAPI):
def submit(self, media_id: str) -> dict:
"""
发布接口
详情请参考:
https://developers.weixin.qq.com/doc/offiaccount/Publish/Publish.html
:param media_id: 要发布的草稿的media_id
:return: 返回的 JSON 数据包
"""
return self._post("freepublish/submit", data={"media_id": media_id})

def get(self, publish_id: str) -> dict:
"""
发布状态轮询接口
开发者可以尝试通过下面的发布状态轮询接口获知发布情况。
详情请参考:
https://developers.weixin.qq.com/doc/offiaccount/Publish/Get_status.html
:param publish_id: 发布任务id
:return: 返回的 JSON 数据包
"""
return self._post("freepublish/get", data={"publish_id": publish_id})

def delete(self, article_id: str, index: int = 0) -> dict:
"""
删除发布
发布成功之后,随时可以通过该接口删除。此操作不可逆,请谨慎操作。
详情请参考:
https://developers.weixin.qq.com/doc/offiaccount/Publish/Delete_posts.html
:param article_id: 成功发布时返回的 article_id
:param index: 要删除的文章在图文消息中的位置,第一篇编号为1,该字段不填或填 0 会删除全部文章
:return: 返回的 JSON 数据包
"""
return self._post("freepublish/delete", data={"article_id": article_id, "index": index})

def getarticle(self, article_id: str) -> dict:
"""
通过 article_id 获取已发布文章
开发者可以通过 article_id 获取已发布的图文信息。
详情请参考:
https://developers.weixin.qq.com/doc/offiaccount/Publish/Get_article_from_id.html
:param article_id: 要获取的草稿的article_id
:return: 返回的 JSON 数据包
"""
return self._post("freepublish/getarticle", data={"article_id": article_id})

def batchget(self, offset: int, count: int, no_content: int = 0) -> dict:
"""
获取成功发布列表
开发者可以获取已成功发布的消息列表。
详情请参考:
https://developers.weixin.qq.com/doc/offiaccount/Publish/Get_publication_records.html
:param offset: 从全部素材的该偏移位置开始返回,0表示从第一个素材返回
:param count: 返回素材的数量,取值在1到20之间
:param no_content: 1 表示不返回 content 字段,0 表示正常返回,默认为 0
:return: 返回的 JSON 数据包
"""
return self._post("freepublish/batchget", data={"offset": offset, "count": count, "no_content": no_content})
11 changes: 0 additions & 11 deletions wechatpy/client/api/material.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,6 @@


class WeChatMaterial(BaseWeChatAPI):
def submit(self, media_id):
"""
发布图文消息,前置条件是先将其存为草稿(使用add_drafts方法)
详情请参考:
https://developers.weixin.qq.com/doc/offiaccount/Publish/Publish.html
:param media_id: 图文素材ID
:type media_id: str
:return: 返回的 JSON 数据包
"""
return self._post("freepublish/submit", data={"media_id": media_id})

def add(self, media_type, media_file, title=None, introduction=None):
"""
新增其它类型永久素材
Expand Down
6 changes: 4 additions & 2 deletions wechatpy/work/client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,20 @@ class WeChatClient(BaseWeChatClient):
email = api.WeChatEMail()
external_contact = api.WeChatExternalContact()
external_contact_group_chat = api.WeChatExternalContactGroupChat()
invoice = api.WeChatInvoice()
jsapi = api.WeChatJSAPI()
kf = api.WeChatKF()
kf_message = api.WeChatKFMessage()
media = api.WeChatMedia()
menu = api.WeChatMenu()
message = api.WeChatMessage()
misc = api.WeChatMisc()
oa = api.WeChatOA()
oauth = api.WeChatOAuth()
schedule = api.WeChatSchedule()
service = api.WeChatService()
tag = api.WeChatTag()
user = api.WeChatUser()
oa = api.WeChatOA()
invoice = api.WeChatInvoice()

def __init__(
self,
Expand Down

0 comments on commit 318e909

Please sign in to comment.