# -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals from library.wechatpy.client.api.base import BaseWeChatAPI class WeChatMedia(BaseWeChatAPI): def upload(self, media_type, media_file): """ 上传临时素材 详情请参考 http://mp.weixin.qq.com/wiki/5/963fc70b80dc75483a271298a76a8d59.html :param media_type: 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb) :param media_file: 要上传的文件,一个 File-object :return: 返回的 JSON 数据包 """ return self._post( url='media/upload', params={ 'type': media_type }, files={ 'media': media_file } ) def download(self, media_id): """ 获取临时素材 详情请参考 http://mp.weixin.qq.com/wiki/10/78b15308b053286e2a66b33f0f0f5fb6.html :param media_id: 媒体文件 ID :return: requests 的 Response 实例 """ return self._get( 'media/get', params={ 'media_id': media_id } ) def get_url(self, media_id): """ 获取临时素材下载地址 :param media_id: 媒体文件 ID :return: 临时素材下载地址 """ parts = ( 'https://api.weixin.qq.com/cgi-bin/media/get', '?access_token=', self.access_token, '&media_id=', media_id ) return ''.join(parts) def upload_video(self, media_id, title, description): """ 群发视频消息时获取视频 media_id 详情请参考 http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html :param media_id: 需通过基础支持中的上传下载多媒体文件 :func:`upload` 来得到 :param title: 视频标题 :param description: 视频描述 :return: 返回的 JSON 数据包 """ return self._post( url='media/uploadvideo', data={ 'media_id': media_id, 'title': title, 'description': description } ) def upload_articles(self, articles): """ 上传图文消息素材 详情请参考 http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html :param articles: 图文消息数组 :return: 返回的 JSON 数据包 """ articles_data = [] for article in articles: articles_data.append({ 'thumb_media_id': article['thumb_media_id'], 'title': article['title'], 'content': article['content'], 'author': article.get('author', ''), 'content_source_url': article.get('content_source_url', ''), 'digest': article.get('digest', ''), 'show_cover_pic': article.get('show_cover_pic', 0) }) return self._post( 'media/uploadnews', data={ 'articles': articles_data } ) def upload_image(self, media_file): """ 上传群发消息内的图片 详情请参考 http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html :param media_file: 要上传的文件,一个 File-object :return: 上传成功时返回图片 URL """ res = self._post( url='media/uploadimg', files={ 'media': media_file }, result_processor=lambda x: x['url'] ) return res upload_mass_image = upload_image