123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- # -*- 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
|