UNPKG

@tnwx/wxmp

Version:

TNWX 微信系开发脚手架之极速开发微信公众号

267 lines 11.3 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const util = require("util"); const accesstoken_1 = require("@tnwx/accesstoken"); const kits_1 = require("@tnwx/kits"); /** * @author Javen * @copyright javendev@126.com * @description 素材管理 */ class MediaApi { /** * 新增临时素材 * @param filePath * @param mediaType * @param accessToken */ static uploadMedia(filePath, mediaType, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.uploadUrl, accessToken.getAccessToken, mediaType); return kits_1.HttpKit.getHttpDelegate.upload(url, filePath); }); } /** * 获取临时素材 * @param mediaId * @param accessToken */ static getMedia(mediaId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.getUrl, accessToken.getAccessToken, mediaId); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * 高清语音素材获取接口 * 公众号可以使用本接口获取从JSSDK的uploadVoice接口上传的临时语音素材,格式为speex,16K采样率。 * 该音频比上文的临时素材获取接口(格式为amr,8K采样率)更加清晰,适合用作语音识别等对音质要求较高的业务。 * @param mediaId * @param accessToken */ static getJssdkMedia(mediaId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.get_jssdk_url, accessToken.getAccessToken, mediaId); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * 新增永久图文素材 * @param mediaId * @param accessToken */ static uploadNews(mediaArticles, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.add_news, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ articles: mediaArticles })); }); } /** * 修改永久图文素材 * @param mediaId 要修改的图文消息的id * @param index 要更新的文章在图文消息中的位置(多图文消息时,此字段才有意义),第一篇为0 * @param mediaArticles * @param accessToken */ static updateNews(mediaId, index, mediaArticles, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.update_news, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ media_id: mediaId, index: index, articles: mediaArticles })); }); } /** * 上传图文消息内的图片获取URL * 本接口所上传的图片不占用公众号的素材库中图片数量的5000个的限制。 * 图片仅支持jpg/png格式,大小必须在1MB以下。 * @param filePath * @param accessToken */ static uploadImg(filePath, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.uploadImgUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.upload(url, filePath); }); } /** * 新增其他类型永久素材 * 如果是添加视频请使用 addVideoMaterial * * @param filePath * @param mediaType * @param accessToken */ static addMaterial(filePath, mediaType, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.addMaterialUrl, accessToken.getAccessToken, mediaType); return kits_1.HttpKit.getHttpDelegate.upload(url, filePath); }); } /** * 新增 video 类型永久素材 * @param filePath * @param title * @param introduction * @param accessToken */ static addVideoMaterial(filePath, title, introduction, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.addMaterialUrl, accessToken.getAccessToken, MediaType.VIDEO); return kits_1.HttpKit.getHttpDelegate.upload(url, filePath, JSON.stringify({ title: title, introduction: introduction })); }); } /** * 获取永久素材 * @param mediaId * @param accessToken */ static getMaterial(mediaId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.getMaterialUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ media_id: mediaId })); }); } /** * 删除永久素材 * @param mediaId * @param accessToken */ static delMaterial(mediaId, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.delMaterialUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ media_id: mediaId })); }); } /** * 获取素材总数 * @param accessToken */ static getMaterialCount(accessToken) { return __awaiter(this, void 0, void 0, function* () { if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.getMaterialCountUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpGet(url); }); } /** * 获取素材列表 * @param mediaType 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news) * @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 * @param count 返回素材的数量,取值在1到20之间 * @param accessToken */ static batchGetMaterial(mediaType, offset = 0, count = 1, accessToken) { return __awaiter(this, void 0, void 0, function* () { if (offset < 0) offset = 0; if (count > 20) count = 20; if (count < 1) count = 1; if (!accessToken) { accessToken = yield accesstoken_1.AccessTokenApi.getAccessToken(); } let url = util.format(this.batchGetMaterialUrl, accessToken.getAccessToken); return kits_1.HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ type: mediaType, offset: offset, count: count })); }); } } exports.MediaApi = MediaApi; MediaApi.uploadUrl = 'https://api.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s'; MediaApi.getUrl = 'https://api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=%s'; MediaApi.get_jssdk_url = 'https://api.weixin.qq.com/cgi-bin/media/get/jssdk?access_token=%s'; MediaApi.add_news = 'https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=%s'; MediaApi.update_news = 'https://api.weixin.qq.com/cgi-bin/material/update_news?access_token=%s'; MediaApi.uploadImgUrl = 'https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=%s'; MediaApi.addMaterialUrl = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=%s&type=%s'; MediaApi.getMaterialUrl = 'https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=%s'; MediaApi.delMaterialUrl = 'https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=%s'; MediaApi.getMaterialCountUrl = 'https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token=%s'; MediaApi.batchGetMaterialUrl = 'https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=%s'; /** * 上传临时素材的格式、大小限制与公众平台官网一致 * 图片(image): 2M,支持PNG\JPEG\JPG\GIF格式 * 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式 * 视频(video):10MB,支持MP4格式 * 缩略图(thumb):64KB,支持JPG格式 */ var MediaType; (function (MediaType) { MediaType["IMAGE"] = "image"; MediaType["VOICE"] = "voice"; MediaType["VIDEO"] = "video"; MediaType["THUMB"] = "thumb"; MediaType["NEWS"] = "news"; })(MediaType = exports.MediaType || (exports.MediaType = {})); class MediaArticles { constructor(title, thumb_media_id, show_cover_pic, content, content_source_url, author, digest, need_open_comment, only_fans_can_comment) { this.title = title; this.thumb_media_id = thumb_media_id; this.author = author; this.digest = digest; this.show_cover_pic = show_cover_pic; this.content = content; this.content_source_url = content_source_url; this.need_open_comment = need_open_comment; this.only_fans_can_comment = only_fans_can_comment; } } exports.MediaArticles = MediaArticles; //# sourceMappingURL=MediaApi.js.map