wechatpy.client.api.tag 源代码

# -*- coding: utf-8 -*-
from operator import itemgetter

from wechatpy.utils import to_text
from wechatpy.client.api.base import BaseWeChatAPI


[文档]class WeChatTag(BaseWeChatAPI):
[文档] def create(self, name): """ 创建标签 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html :param name: 标签名(30个字符以内) :return: 返回的 JSON 数据包 """ name = to_text(name) return self._post( "tags/create", data={"tag": {"name": name}}, result_processor=itemgetter("tag"), )
[文档] def get(self): """ 获取公众号已创建的标签 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html :return: 所有标签列表 """ return self._get("tags/get", result_processor=itemgetter("tags"))
[文档] def update(self, tag_id, name): """ 编辑标签 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html :param tag_id: 标签id,由微信分配 :param name: 标签名字(30个字符以内) :return: 返回的 JSON 数据包 """ name = to_text(name) return self._post("tags/update", data={"tag": {"id": int(tag_id), "name": name}})
[文档] def delete(self, tag_id): """ 删除标签 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html :param tag_id: 标签 ID :return: 返回的 JSON 数据包 """ return self._post("tags/delete", data={"tag": {"id": tag_id}})
[文档] def tag_user(self, tag_id, user_id): """ 批量为用户打标签 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html :param tag_id: 标签 ID :param user_id: 用户 ID, 可以是单个或者列表 :return: 返回的 JSON 数据包 """ data = {"tagid": tag_id} if isinstance(user_id, (tuple, list)): data["openid_list"] = user_id else: data["openid_list"] = [ user_id, ] return self._post("tags/members/batchtagging", data=data)
[文档] def untag_user(self, tag_id, user_id): """ 批量为用户取消标签 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html :param tag_id: 标签 ID :param user_id: 用户 ID, 可以是单个或者列表 :return: 返回的 JSON 数据包 """ data = {"tagid": tag_id} if isinstance(user_id, (tuple, list)): data["openid_list"] = user_id else: data["openid_list"] = [ user_id, ] return self._post("tags/members/batchuntagging", data=data)
[文档] def get_user_tag(self, user_id): """ 获取用户身上的标签列表 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html :param user_id: 用户 ID, 可以是单个或者列表 :return: 返回的 JSON 数据包 """ return self._post( "tags/getidlist", data={"openid": user_id}, result_processor=itemgetter("tagid_list"), )
[文档] def get_tag_users(self, tag_id, first_user_id=None): """ 获取标签下粉丝列表 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/User_Tag_Management.html :param tag_id: 标签 ID :param first_user_id: 可选。第一个拉取的 OPENID,不填默认从头开始拉取 :return: 返回的 JSON 数据包 """ data = { "tagid": tag_id, } if first_user_id: data["next_openid"] = first_user_id return self._post("user/tag/get", data=data)
[文档] def iter_tag_users(self, tag_id, first_user_id=None): """ 获取标签下粉丝 openid 的生成器 :return: 返回一个迭代器,可以用 for 进行循环,得到 openid 使用示例:: >>> from wechatpy import WeChatClient >>> >>> client = WeChatClient('appid', 'secret') >>> for openid in client.tag.iter_tag_users(0): >>> print(openid) """ while True: follower_data = self.get_tag_users(tag_id, first_user_id) if "data" not in follower_data: return for openid in follower_data["data"]["openid"]: yield openid first_user_id = follower_data.get("next_openid") if not first_user_id: return
[文档] def get_black_list(self, begin_openid=None): """ 获取公众号的黑名单列表 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/Manage_blacklist.html :param begin_openid: 起始的 OpenID,传空则默认从头开始拉取 :return: 返回的 JSON 数据包 :rtype: dict """ data = {} if begin_openid: data["begin_openid"] = begin_openid return self._post( "tags/members/getblacklist", data=data, )
[文档] def batch_black_list(self, openid_list): """ 批量拉黑用户 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/Manage_blacklist.html :param openid_list: 批量拉黑用户的 OpenID list, 最多20个 :type openid_list: list """ return self._post( "tags/members/batchblacklist", data={ "openid_list": openid_list, }, )
[文档] def batch_unblack_list(self, openid_list): """ 批量取消拉黑 详情请参考 https://developers.weixin.qq.com/doc/offiaccount/User_Management/Manage_blacklist.html :param openid_list: 批量取消拉黑的 OpenID list, 最多20个 :type openid_list: list """ return self._post( "tags/members/batchunblacklist", data={ "openid_list": openid_list, }, )