zoukankan      html  css  js  c++  java
  • 订阅号服务开发02-素材资源管理

    @

    wechatpy 介绍

    在章节《订阅号开发环境》中,已经安装了wechatpy,wechatpy 是一个微信 (WeChat) 的第三方 Python SDK, 实现了微信公众号、企业微信和微信支付等 API。
    参考文档:https://wechatpy.readthedocs.io/zh_CN/master/index.html

    class WeChatClient(BaseWeChatClient):
    
        """
        微信 API 操作类
        通过这个类可以操作微信 API,发送主动消息、群发消息和创建自定义菜单等。
        """
    

    在本章节中,先以素材资源管理为例,先掌握对素材资源的管理,为后面章节中应答消息,主动发送消息等场景中使用素材资源做准数据准备。

    实例化WechatClient

    from wechatpy.client import WeChatClient
    app = {
        "appid": "wx3a07084cc1a11915",
        "appsecret": "8f9a6bb1f66b59aa705ecd9938a3874c"
    }
    wx = WeChatClient(app.get("appid"), app.get("appsecret"))
    

    上传临时媒体素材接口 media

    公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。通过本接口,公众号可以新增临时素材(即上传临时多媒体文件)。

    上传临时图片

    resp = wx.media.upload("image", open("D://666.png", "rb"))
    print(resp)
    {
    	'type': 'image',
    	'media_id': '1pnGyv1G8nGdT2A9Thm70I-n7_cQ9CuE-6Jj3tTGdWxpE6IFU5q1GNS6JHEDynqL',
    	'created_at': 1557050593
    }
    

    上传临时缩略图

    resp = wx.media.upload("thumb", open("D://wx.jpg", "rb"))
    print(resp)
    {
    	'type': 'thumb',
    	'thumb_media_id': 'StquJqb_PqfYLtE1hwy4UcZGNlncMggH_DreS0YEI8uDCywvPzfQg8yYdsPpi1Tc',
    	'created_at': 1557051046
    }
    

    上传临时视频

    resp = wx.media.upload("video", open("D://hello.mp4", "rb"))
    print(resp)
    {
    	'type': 'video',
    	'media_id': 'jCMhWTXbm90l0zWFirVwHPzWi_SO6A4lnqqcj_91fxKWkHdQnyZY14uFJQYJHLcC',
    	'created_at': 1557050806
    }
    

    上传永久媒体素材接口 material

    对于常用的素材,开发者可通过本接口上传到微信服务器,永久使用。新增的永久素材也可以在公众平台官网素材管理模块中查询管理。

    上传永久图片

    resp = wx.material.add("image",open("D://666.png","rb"))
    print(resp)
    {
    	'media_id': 'BzzIfj9NcYYTuaPR_j133jbk4KxYuPvhoZx68usaDi0',
    	'url': 'http://mmbiz.qpic.cn/mmbiz_png/QuFmLYzPJ2BbITcU1VNpEhH8XUsXbtcibQejDaVQMIicE6Wa6v3O5EUsfA3CNumdQAdsx2HrCDrmX6f6zaPk4reg/0?wx_fmt=png'
    }
    

    上传永久缩略图

    resp = wx.material.add("thumb",open("D://wx.jpg","rb"))
    print(resp)
    {
    	'media_id': 'BzzIfj9NcYYTuaPR_j133nS16LBGp7_ZcN5o9ihrBDw',
    	'url': 'http://mmbiz.qpic.cn/mmbiz_jpg/QuFmLYzPJ2BbITcU1VNpEhH8XUsXbtcibqwCkTuX97EFSfqqbzYVfK8Em7WdHCicMta8sMoUJCLSTLoMjUJkpYsw/0?wx_fmt=jpeg'
    }
    

    上传永久视频

    resp = wx.material.add("video",open("D://hello.mp4","rb"),title="视频标题...",introduction="视频简介...")
    print(resp)
    {'media_id': 'BzzIfj9NcYYTuaPR_j133ietkr1Oy2009whI6vdTLR8'}
    

    上传图文消息(群发消息)内的图片

    resp = wx.media.upload_image(open("D://666.png","rb"))
    print(resp)
    http://mmbiz.qpic.cn/mmbiz_png/QuFmLYzPJ2BbITcU1VNpEhH8XUsXbtcibQejDaVQMIicE6Wa6v3O5EUsfA3CNumdQAdsx2HrCDrmX6f6zaPk4reg/0
    

    新增永久图文素材

    resp = wx.material.add_articles(articles=[
            {
                "thumb_media_id": "%s" % wx.material.add("thumb", open("D://wx.jpg", "rb")).get("media_id"),  # 图文消息的封面图片素材id(必须是永久mediaID)
                "author": "观小鱼",
                "title": "Python实战",
                "content": "python实战总结<br><img src=%s>" % wx.media.upload_image(open("D://666.png", "rb")),  # 图文消息的具体内容,支持HTML标签
                "digest": "通过python实战项目,快速掌握python开发",  # 图文消息的摘要
                "content_source_url": "https://www.kancloud.cn/@guanfuchang",  # 图文消息的原文地址
                "show_cover_pic": 1,  # 显示封面
                "need_open_comment": 1,  # 打开评论
                "only_fans_can_comment": 1  # 粉丝才可以评论
            }
        ])
    print(resp)
    {
    'media_id': 'BzzIfj9NcYYTuaPR_j133mW-veyn3sNRANnduEtdnss'
    }
    

    获取素材

    获取临时素材下载地址

    公众号可以使用本接口获取临时素材(即下载临时的多媒体文件),注意:媒体文件在微信后台保存时间为3天,即3天后media_id失效。

    resp = wx.media.get_url("1pnGyv1G8nGdT2A9Thm70I-n7_cQ9CuE-6Jj3tTGdWxpE6IFU5q1GNS6JHEDynqL")
    print(resp)
    https://api.weixin.qq.com/cgi-bin/media/get?access_token=21_yblTNnELBMPr73XmbLOaeVNjSKsruUGFv9Y4amhVVrbelomKcFbKb0wfLrJvrpoX-7K-vt8i-nWs9zCmEx7FVV4T9oq8xAV3n7TndwNzWa_kkVPGdzbq_yj8hbQCYWgAIAVRP&media_id=1pnGyv1G8nGdT2A9Thm70I-n7_cQ9CuE-6Jj3tTGdWxpE6IFU5q1GNS6JHEDynqL
    
    

    批量获取永久素材列表 "image","voice","video","news"

    在新增了永久素材后,开发者可以分类型获取永久素材的列表。

    resp = wx.material.batchget(media_type="news",offset=0,count=2)
    print(resp)
    {
    	'item': [{
    		'media_id': 'BzzIfj9NcYYTuaPR_j133mW-veyn3sNRANnduEtdnss',
    		'content': {
    			'news_item': [{
    				'title': 'Python实战',
    				'author': '观小鱼',
    				'digest': '通过python实战项目,快速掌握python开发',
    				'content': 'python实战总结<br  /><img data-src="http://mmbiz.qpic.cn/mmbiz_png/QuFmLYzPJ2BbITcU1VNpEhH8XUsXbtcibQejDaVQMIicE6Wa6v3O5EUsfA3CNumdQAdsx2HrCDrmX6f6zaPk4reg/0%3E">',
    				'content_source_url': 'https://www.kancloud.cn/@guanfuchang',
    				'thumb_media_id': 'BzzIfj9NcYYTuaPR_j133keapTcjqt-9xZQkkN0qQ9Q',
    				'show_cover_pic': 1,
    				'url': 'http://mp.weixin.qq.com/s?__biz=MzA3NzgzMzA5Nw==&mid=100000028&idx=1&sn=01235aff2dee3ba7941ee3ff0be73444&chksm=1f4ab7fa283d3eec80b03af52b3b51a3affa140830a8dcb4baba7ec1c480055acab98a4e610f#rd',
    				'thumb_url': 'http://mmbiz.qpic.cn/mmbiz_jpg/QuFmLYzPJ2BbITcU1VNpEhH8XUsXbtcibqwCkTuX97EFSfqqbzYVfK8Em7WdHCicMta8sMoUJCLSTLoMjUJkpYsw/0?wx_fmt=jpeg',
    				'need_open_comment': 1,
    				'only_fans_can_comment': 1
    			}],
    			'create_time': 1557115885,
    			'update_time': 1557115885
    		},
    		'update_time': 1557115885
    	}, {
    		'media_id': 'BzzIfj9NcYYTuaPR_j133kSfaJsfBYCH8seLSfKaXGg',
    		'content': {
    			'news_item': [{
    				'title': 'Happy Day',
    				'author': 'xxx',
    				'digest': 'digest',
    				'content': 'content',
    				'content_source_url': 'http://www.qq.com',
    				'thumb_media_id': 'BzzIfj9NcYYTuaPR_j133h2JwAhVA-Z-fLxFgOBY-Nw',
    				'show_cover_pic': 1,
    				'url': 'http://mp.weixin.qq.com/s?__biz=MzA3NzgzMzA5Nw==&mid=100000004&idx=1&sn=6ed39350fdb884b51d997ef04ed36b43&chksm=1f4ab7e2283d3ef417e4855ed52c88927a3a8ad0301289b8e0dfcb1f65fef9c412b6eb768b1b#rd',
    				'thumb_url': 'http://mmbiz.qpic.cn/mmbiz_png/QuFmLYzPJ2DK93uoeUAibJSqQBmgeR1uhdicrQKxT3QzZVdfWUIHa6fmFfuaibLNibqYGVHQcwyzCbsbPWTN82Vs9g/0?wx_fmt=png',
    				'need_open_comment': 1,
    				'only_fans_can_comment': 1
    			}],
    			'create_time': 1556162229,
    			'update_time': 1556162229
    		},
    		'update_time': 1556162229
    	}],
    	'total_count': 2,
    	'item_count': 2
    }
    
    

    获取永久素材

    在新增了永久素材后,开发者可以根据media_id通过本接口下载永久素材。公众号在公众平台官网素材管理模块中新建的永久素材,可通过"获取素材列表"获知素材的media_id。

    resp = wx.material.get(media_id="BzzIfj9NcYYTuaPR_j133mW-veyn3sNRANnduEtdnss")
    print(resp)
    [{
    	'title': 'Python实战',
    	'author': '观小鱼',
    	'digest': '通过python实战项目,快速掌握python开发',
    	'content': 'python实战总结<br  /><img data-src="http://mmbiz.qpic.cn/mmbiz_png/QuFmLYzPJ2BbITcU1VNpEhH8XUsXbtcibQejDaVQMIicE6Wa6v3O5EUsfA3CNumdQAdsx2HrCDrmX6f6zaPk4reg/0%3E">',
    	'content_source_url': 'https://www.kancloud.cn/@guanfuchang',
    	'thumb_media_id': 'BzzIfj9NcYYTuaPR_j133keapTcjqt-9xZQkkN0qQ9Q',
    	'show_cover_pic': 1,
    	'url': 'http://mp.weixin.qq.com/s?__biz=MzA3NzgzMzA5Nw==&mid=100000028&idx=1&sn=01235aff2dee3ba7941ee3ff0be73444&chksm=1f4ab7fa283d3eec80b03af52b3b51a3affa140830a8dcb4baba7ec1c480055acab98a4e610f#rd',
    	'thumb_url': 'http://mmbiz.qpic.cn/mmbiz_jpg/QuFmLYzPJ2BbITcU1VNpEhH8XUsXbtcibqwCkTuX97EFSfqqbzYVfK8Em7WdHCicMta8sMoUJCLSTLoMjUJkpYsw/0?wx_fmt=jpeg',
    	'need_open_comment': 1,
    	'only_fans_can_comment': 1
    }]
    
    

    [warning] 更多接口信息,请参考源码WeChatClient


    :-:
    微信扫一扫,关注“python测试开发圈”,获取更多测试开发分享!

  • 相关阅读:
    EditText之边框颜色
    Android之drawable state各个属性详解
    Android-第三天
    Android 问题
    ios VS android
    Android-第二天(2)
    collapse
    2020/3/7
    2020/3/6
    P3825 [NOI2017]游戏
  • 原文地址:https://www.cnblogs.com/guanfuchang/p/10840967.html
Copyright © 2011-2022 走看看