import UGCPublish, {ImagePublishParam} from "../index"; import {FileException} from "../utils/ExceptionUtil"; const axios = require("axios"); //const call = require("wlite-avsdk-vod-upload-node-v2"); //const {ImagePublishParam} = require("wlite-avsdk-vod-upload-node-v2"); const fs = require("fs"); const https = require("https"); let token = "eyJhbGciOiJIUzUxMiJ9.eyJhdWQiOiJudWxsIiwiaGVhZEltZyI6Imh0dHBzOi8vb3NzLmRpZGltZXNzYWdlLmNvbS9pbWFnZXMvMjAyMC8xMS8yMy9hNjliYjA1ZS0wNTBhLTRjNjctODk4OC0zYjc5M2IwMTlmZmFfMTAwOHgxMDA4LmpwZyIsIm5pY2tOYW1lIjoi5bqZ6KGM55S15a2Q5ZWG5Yqh56S66IyD5Z-65Zyw5L-d5a6J5p2O5aSn54i3IiwiY291bnRyeUNvZGUiOm51bGwsImludml0ZUNvZGUiOiIxMDEzMzc5OCIsInNleCI6MSwiaXNzIjoiMTA4ODY1OTc3OTA3MDE0NDUxMiIsInVzZXJUeXBlIjowLCJleHAiOjQxOTk2NzIyODEsImlhdCI6MTYwNzY3MjI4MSwiZW1haWwiOm51bGwsImp0aSI6IjcyNWU0ZTFiLTdmM2MtNDlmYi04MTgzLTdjN2Y3NTBjODQzZSJ9.Y_VuAaA5ofWTWA9tu29edR-W7_NoXaWl_cxEje0iRGXQ8TRwvndp7hfmU60RI_w8s9N4xi8kJfOLrieCB5U_cA"; let ffmpegPath = '/Users/macos/Desktop/Documents/ffmpeg-mac'; /** * @breif 初始化对象接口 * @function withAppServerUrl() * @param url 服务器路径 * @function withToken() * @param token 令牌地址 * @function withFFmpeg() * @param ffmpegPath ffmpeg路径 * @return publish 对象接口 */ let publish = new UGCPublish()//new call.default() .withAppServerUrl('https://test500.zhidianjh.com:8228/') //服务器地址 .withToken(token) .withFFmpeg(ffmpegPath); function yvedioMain(file:string) { /** * @breif 上传加密视频 * @param video 视频路径 * @param mark 文件标示 * @return progress 回调函数 用来监控上传进度 * @return ret 返回的所有参数信息 */ publish.PublishVideoAsync({ video: file, mark: 'fdf' }, progress => { console.log(`total--${progress.Total} progress--${progress.Uploaded / progress.Total}`); }).then(ret => { console.log(ret); axios.get(ret.cover, { responseType: "arraybuffer", httpsAgent: new https.Agent({ rejectUnauthorized: false }) }).then((Response) => { fs.writeFile( "/Users/macos/Desktop/laji/" + ret.cover.split("/").pop(), new Uint8Array(Response.data), function (err) { if (err) { return console.log(err); } console.log(file, "File saved successfully!"); //console.log("从阿里云下载的秘闻",cipyttext); }); }); console.log("cover:", ret.url); axios.get(ret.url, { responseType: "arraybuffer", httpsAgent: new https.Agent({ rejectUnauthorized: false }) }).then((Response) => { fs.writeFile( "/Users/macos/Desktop/laji/" + ret.url.split("/").pop(), new Uint8Array(Response.data), function (err) { if (err) { return console.log(err); } console.log(file, "File saved successfully!"); //console.log("从阿里云下载的秘闻",cipyttext); }); }); }); } function yfileMain(file:string){ /** * V2接口信息 * @breif 上传加密文件 * @param file 文件路径 * @param mark 文件标识 * @return progress 回调函数 用来监控上传进度 * @return ret 返回的所有参数信息 * */ publish.PublishFileAsync({ file: file,//,'/Users/macos/Music/网易云音乐/新乐尘符,李思雨-苏绣姑娘.mp3' mark: 'fileme' }, progress => { console.log(progress.Uploaded / progress.Total); }) .then(ret => { console.log("ret",ret); axios.get(ret.url, { responseType: "arraybuffer", httpsAgent: new https.Agent({ rejectUnauthorized: false }) }).then((Response) => { fs.writeFile( "/Users/macos/Desktop/laji/" + ret.url.split("/").pop(), new Uint8Array(Response.data), function (err) { if (err) { return console.log(err); } console.log(file, "File saved successfully!"); //console.log("从阿里云下载的秘闻",cipyttext); }); }); }) .catch(e => { console.error(e); }) } function yimageMain(file:string){ /** * V1兼容接口 * publish.publishImageAsync(param.encrypt = true) == PublishCryptImageAsync() * V2修订格式错误(保留原有接口 都可以使用) * publish.PublishImageAsync(param.encrypt = true) == PublishCryptImageAsync() */ let param = new ImagePublishParam( file, 'mark' ); param.usage = 1; param.duration = -1; param.resolutions = [ {name: 'High', quality: 92, height: 200}, {name: 'Low', quality: 80, scale: 0.3} ]; publish.publishImageAsync(param, progress => { console.log(progress.Uploaded / progress.Total); }).then(ret => { for (let img of ret) { axios.get(img.url, { responseType: "arraybuffer", httpsAgent: new https.Agent({ rejectUnauthorized: false }) }).then((Response) => { fs.writeFile( "/Users/macos/Desktop/laji/" + img.url.split("/").pop(), new Uint8Array(Response.data), function (err) { if (err) { return console.log(err); } console.log(file, "File saved successfully!"); //console.log("从阿里云下载的秘闻",cipyttext); }); }); console.log(`${img.name}: ${img.url} `); } }) .catch(e => { console.error(e); }) } function yimage2Main(file:string){ /** * @breif 上传头 * @param ImagePublishParam(文件路径,文件标识) * @param usage 上传类型 * @param duration 存储时间长度 * @param resolutions 设置分辨率以及压缩比例 * @return progress 回调函数 用来监控上传进度 * @return ret 返回的所有参数信息 */ let param1 = new ImagePublishParam( file, 'mark' ); param1.usage = 0; param1.duration = -1; param1.resolutions = [ {name: 'High', quality: 92, height: 200}, {name: 'Low', quality: 80, scale: 0.3} ]; publish.publishImageAsync(param1, progress => { console.log(progress.Uploaded / progress.Total); }) .then(ret => { for (let img of ret) { axios.get(img.url, { responseType: "arraybuffer", httpsAgent: new https.Agent({ rejectUnauthorized: false }) }).then((Response) => { fs.writeFile( "/Users/macos/Desktop/laji/" + img.url.split("/").pop(), new Uint8Array(Response.data), function (err) { if (err) { return console.log(err); } console.log(file, "File saved successfully!"); //console.log("从阿里云下载的秘闻",cipyttext); }); }); console.log(`${img.name}: ${img.url} : ${img.cryptInfo.fileSize}`); } }) .catch(e => { console.error(e); }) } function yimage3Main(file:string){ /** * @breif 上传表情 * @param ImagePublishParam(文件路径,文件标识) * @param usage 上传类型 * @param duration 存储时间长度 * @param resolutions 设置分辨率以及压缩比例 * @return progress 回调函数 用来监控上传进度 * @return ret 返回的所有参数信息 // */ let param2 = new ImagePublishParam( file, 'mark2' ); param2.usage = 2; param2.duration = 0; publish.publishImageAsync(param2, progress => { ; }).then(ret => { for (let img of ret) { axios.get(img.url, { responseType: "arraybuffer", httpsAgent: new https.Agent({ rejectUnauthorized: false }) }).then((Response) => { fs.writeFile( "/Users/macos/Desktop/laji/" + img.url.split("/").pop(), new Uint8Array(Response.data), function (err) { if (err) { return console.log(err); } console.log(file, "File saved successfully!"); //console.log("从阿里云下载的秘闻",cipyttext); }); }); console.log(`${img.name}: ${img.url}`); } }) .catch(e => { console.error(e); }) } function vedioMain(file:string) { /** * @breif 上传加密视频 * @param video 视频路径 * @param mark 文件标示 * @return progress 回调函数 用来监控上传进度 * @return ret 返回的所有参数信息 */ publish.PushlishCryptVideoAsync({ video: file, mark: 'fdf' }, progress => { console.log(`total--${progress.Total} progress--${progress.Uploaded / progress.Total}`); }).then(ret => { console.log(ret); let data = publish.PublishPathDecrypt(ret.url, ret.cryptInfo.key.toString(), ret.cryptInfo.digest.toString()).then((buffer) => { fs.writeFile( "/Users/macos/Desktop/laji/" + ret.url.split("/").pop(), new Uint8Array(buffer), function (err) { if (err) { return console.log(err); } console.log(file,"File saved successfully!"); }); } ); console.log("cover:", ret.cover); publish.PublishPathDecrypt(ret.cover, ret.cryptInfoCover.key.toString(), ret.cryptInfoCover.digest.toString()).then((buffer) => { fs.writeFile( "/Users/macos/Desktop/laji/" + ret.cover.split("/").pop(), new Uint8Array(buffer), function (err) { if (err) { return console.log(err); } console.log(file,"File saved successfully!"); }); } ); }).catch(e => { console.error(e); })// } function fileMain(file:string){ /** * V2接口信息 * @breif 上传加密文件 * @param file 文件路径 * @param mark 文件标识 * @return progress 回调函数 用来监控上传进度 * @return ret 返回的所有参数信息 * */ publish.PublishCryptFileAsync({ file: file,//,'/Users/macos/Music/网易云音乐/新乐尘符,李思雨-苏绣姑娘.mp3' mark: 'fileme' }, progress => { console.log(progress.Uploaded / progress.Total); }) .then(ret => { //console.log(ret); let data = publish.PublishPathDecrypt(ret.url, ret.cryptInfo.key.toString(), ret.cryptInfo.digest.toString()).then((buffer) => { fs.writeFile( "/Users/macos/Desktop/laji/" + ret.url.split("/").pop(), new Uint8Array(buffer), function (err) { if (err) { return console.log(err); } console.log(file,"File saved successfully!"); }); } ); }) .catch(e => { console.error(e); }) } function imageMain(file:string){ /** * V1兼容接口 * publish.publishImageAsync(param.encrypt = true) == PublishCryptImageAsync() * V2修订格式错误(保留原有接口 都可以使用) * publish.PublishImageAsync(param.encrypt = true) == PublishCryptImageAsync() */ let param = new ImagePublishParam( file, 'mark' ); param.usage = 1; param.duration = -1; param.resolutions = [ { name: 'Original', quality: 100 }, {name: 'High', quality: 92, height: 200}, {name: 'Low', quality: 80, scale: 0.3} ]; param.encrypt = true; publish.PublishCryptImageAsync(param, progress => { console.log(progress.Uploaded / progress.Total); }).then(ret => { for (let img of ret) { let data = publish.PublishPathDecrypt(img.url,img.cryptInfo.key.toString(),img.cryptInfo.digest.toString()).then((buffer)=>{ fs.writeFile( "/Users/macos/Desktop/laji/"+img.url.split("/").pop(), new Uint8Array(buffer), function(err) { if(err) { return console.log(err); } console.log(file,"File saved successfully!"); }); } ); console.log(`${img.name}: ${img.url} : ${img.cryptInfo.fileSize}`); } }) .catch(e => { console.error(e); }) } function image2Main(file:string){ /** * @breif 上传头 * @param ImagePublishParam(文件路径,文件标识) * @param usage 上传类型 * @param duration 存储时间长度 * @param resolutions 设置分辨率以及压缩比例 * @return progress 回调函数 用来监控上传进度 * @return ret 返回的所有参数信息 */ let param1 = new ImagePublishParam( file, 'mark' ); param1.usage = 0; param1.duration = -1; param1.resolutions = [ {name: 'High', quality: 92, height: 200}, {name: 'Low', quality: 80, scale: 0.3} ]; publish.PublishCryptImageAsync(param1, progress => { console.log(progress.Uploaded / progress.Total); }) .then(ret => { for (let img of ret) { let data = publish.PublishPathDecrypt(img.url,img.cryptInfo.key.toString(),img.cryptInfo.digest.toString()).then((buffer)=>{ fs.writeFile( "/Users/macos/Desktop/laji/"+img.url.split("/").pop(), new Uint8Array(buffer), function(err) { if(err) { return console.log(err); } console.log(file,"File saved successfully!"); }); } ); console.log(`${img.name}: ${img.url} : ${img.cryptInfo.fileSize}`); } }) .catch(e => { console.error(e); }) } function image3Main(file:string){ /** * @breif 上传表情 * @param ImagePublishParam(文件路径,文件标识) * @param usage 上传类型 * @param duration 存储时间长度 * @param resolutions 设置分辨率以及压缩比例 * @return progress 回调函数 用来监控上传进度 * @return ret 返回的所有参数信息 // */ let param2 = new ImagePublishParam( file, 'mark2' ); param2.usage = 2; param2.duration = 0; publish.PublishCryptImageAsync(param2, progress => { ; }).then(ret => { for (let img of ret) { let data = publish.PublishPathDecrypt(img.url,img.cryptInfo.key.toString(),img.cryptInfo.digest.toString()).then((buffer)=>{ fs.writeFile( "/Users/macos/Desktop/laji/"+img.url.split("/").pop(), new Uint8Array(buffer), function(err) { if(err) { return console.log(err); } console.log(file,"File saved successfully!"); }); } ); console.log(`${img.name}: ${img.url} : ${img.cryptInfo.fileSize}`); } }) .catch(e => { console.error(e); }) } function V2main() { /** * V1兼容接口 * publish.PublishFileAsync(param.encrypt = true) ==PublishCryptFileAsync() */ //publish.PublishCryptFileAsync({ // file: '/Users/macos/Desktop/Documents/动态壁纸.mp4', // mark: 'fileme', // encrypt: true // }, progress => { // console.log(progress.Uploaded / progress.Total); //}) //.then(ret => { // //if (ret.Exception != 0 || ret.Exception != FileException.E_NULL_Exception) { // // console.log(ret.Exception); // //}else { // //console.log("id-----" + ret.id); // console.log("url----" + ret.url); // console.log("file---" + ret.filesize); // let data = publish.PublishPathDecrypt(ret.url, ret.cryptInfo.key.toString(), ret.cryptInfo.digest.toString()).then((buffer) => { // fs.writeFile( // "/Users/macos/Desktop/" + ret.url.split("/").pop(), // new Uint8Array(buffer), // function (err) { // if (err) { // return console.log(err); // } // console.log("File saved successfully!"); // }); // } // ); // //} //}) // .catch(e => { // console.error(e); // }); //let x16 = "0x44788f1837e4cf688fdfc23f2ea4dfdfbea271ef52b560ef"; //let d = "43044faa4f9d106f28a57e4ed6cd2d82249861adbeb08f09"; //const fromHexString = hexString => // new Uint8Array(hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16))); //const toHexString = bytes => // bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), ''); // //console.log("逆转函数",fromHexString("977171581711057382686103121665433962774310210521526841401880377140152362481109378610814317875703126808051760117412211318951121176669114110")); //console.log("转回去",fromHexString("944616128236794034284121626458293311160658282108456010784453312841")); //let data = publish.PublishPathDecrypt("https://s3sit.didimessage.com/short_video/2021/05/14/51FC42F8-FD39-4AD1-9A8F-C6ACB958DA87.mp4",fromHexString(x16),fromHexString(d)).then((buffer)=>{ // fs.writeFile( // "/Users/macos/Desktop/"+"https://s3sit.didimessage.com/short_video/2021/05/14/51FC42F8-FD39-4AD1-9A8F-C6ACB958DA87.mp4".split("/").pop(), // new Uint8Array(buffer), // function(err) { // if(err) { // return console.log(err); // } // console.log("File saved successfully!"); // }); // } // ); /** * V1兼容接口 * publish.PublishVideoAsync(param.encrypt = true) == PublishCryptVideoAsync() */ //publish.PublishVideoAsync({ // file: '/Users/macos/Desktop/Documents/data.txt', // mark: 'fileme', // encrypt: true //}); // // // // /** // * @breif 上传插图 // * @param ImagePublishParam(文件路径,文件标识) // * @param usage 上传类型 // * @param duration 存储时间长度 // * @param resolutions 设置分辨率以及压缩比例 // * @return progress 回调函数 用来监控进度 // * @return ret 返回的所有参数信息 // */ //let param3 = new ImagePublishParam( // "/Users/macos/Desktop/test/1.gif", // 'mark3' //); //param3.usage = 1; //publish.PublishCryptImageAsync(param3, progress => { // ; //}).then(ret => { // for (let img of ret) { // console.log(`${img.name}: ${img.url} : ${img.width} : ${img.height}`); // } //}) // /** * @breif 聊天上传原图(png, gif等) * @param ImagePublishParam(文件路径,文件标识) * @param usage 上传类型 * @param duration 存储时间长度 * @param resolutions 设置分辨率以及压缩比例 * @return progress 回调函数 用来监控进度 * @return ret 返回的所有参数信息 */ //let param4 = new ImagePublishParam( // "/Users/macos/Desktop/Documents/xx.jpg", // 'mark' //); //param4.usage = 0; //param4.resolutions = [ // {name: 'Original', quality: 100}, // {name: 'High', quality: 90, scale: 0.7} //]; //publish.PublishCryptImageAsync(param4, progress => { // ; //}).then(ret => { // for (let img of ret) console.log(`${img.name}: ${img.url} : ${img.width} : ${img.height}`); //}); /** * @breif 通过网络URL解密接口 * @param path: string, * @param key: Uint8Array(64) * @param digest: ArrayBuffer(32) */ //publish.PublishPathDecrypt( // "url信息", // "key信息", // "digest信息", //); /*** * @breif 加密返回对象 * @param EnctyptObject{ * ciphertext: ArrayBuffer; //密文对象 * key: Uint8Array; //密钥(64) * digest: ArrayBuffer; //摘要(32) * } */ //publish.PublishBufferDecrypt({ // ciphertext: "", // key: "", // digest: "", //}); } /** * 并发测试 * */ function Concurrent() { let fileList = [ '/Users/macos/Downloads/WeCom_3.1.6.90174.dmg', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/a.mp4', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/Kali安全渗透高级工程师发展前景-MK老师的问候-送给前程迷茫的你.3GP', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/3.MPG', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/a.MPEG', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/0.3gp', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/2.AVI', ]; let vedioList = [ // '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/a.mp4', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/Kali安全渗透高级工程师发展前景-MK老师的问候-送给前程迷茫的你.3GP', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/3.MPG', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/a.MPEG', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/0.3gp', '/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/2.AVI', ]; let imageList = [ "/Users/macos/Desktop/测试/文件上传测试文件/图片测试文件/9128f9f8e95294dfbcec11d5aa1f140f.JPEG", // "/Users/macos/Desktop/测试/文件上传测试文件/图片测试文件/apwv7-xsiuz.SVG", // "/Users/macos/Desktop/测试/文件上传测试文件/图片测试文件/test_webp.WEBP", // "/Users/macos/Desktop/测试/文件上传测试文件/图片测试文件/test.TIFF", // "/Users/macos/Desktop/测试/文件上传测试文件/图片测试文件/a8dfff50-f712-420c-b988-d7cddf71a7be.BMP" ]; /* let image2List = [ "/Users/macos/Desktop/Documents/timg.png" ]; let Image3List = [ "/Users/macos/Desktop/Documents/timg.png" ];*/ /* for (let i = 0; i < vedioList.length;i++){ yvedioMain(vedioList[i].toString()); } for (let i = 0; i < fileList.length;i++){ yfileMain(fileList[i].toString()); }*/ /* for (let i = 0; i < imageList.length;i++){ yimageMain(imageList[i].toString()); } for (let i = 0; i < imageList.length;i++){ yimage2Main(imageList[i].toString()); } for (let i = 0; i < imageList.length;i++){ yie3Main(imageList[i].toString()); }*/ /* for (let i = 0; i < vedioList.length; i++) { vedioMain(vedioList[i].toString()); } for (let i = 0; i < fileList.length; i++) { fileMain(fileList[i].toString()); } */ for (let i = 0; i < imageList.length; i++) { imageMain(imageList[i].toString()); } /* for (let i = 0; i < imageList.length; i++) { image2Main(imageList[i].toString()); } for (let i = 0; i < imageList.length; i++) { image3Main(imageList[i].toString()); }*/ } Concurrent(); //vedioMain('/Users/macos/Desktop/测试/文件上传测试文件/视频测试文件/a.mp4'); //fileMain('/Users/macos/Downloads/WeCom_3.1.6.90174.dmg'); //imageMain("/Users/macos/Desktop/Documents/timg.png"); //image2Main("/Users/macos/Desktop/Documents/timg.png"); //image3Main("/Users/macos/Desktop/Documents/timg.png");