@tnwx/wxmp
Version:
TNWX 微信系开发脚手架之极速开发微信公众号
267 lines • 11.3 kB
JavaScript
"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