From 6abbc6154afb7d9cfe45c7f31a6e2c890056a9ce Mon Sep 17 00:00:00 2001 From: zhiyu1998 Date: Tue, 7 Mar 2023 13:27:00 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=88=20style:=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BE=8E=E5=8C=96=EF=BC=8C=E4=B8=8D=E5=81=9A=E4=BB=BB=E4=BD=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/daily.js | 6 +- apps/query.js | 8 +- apps/tools.js | 318 ++++++++++++++++++++++++++----------------------- apps/update.js | 2 +- 4 files changed, 174 insertions(+), 160 deletions(-) diff --git a/apps/daily.js b/apps/daily.js index 722a33e..3fbe4d1 100644 --- a/apps/daily.js +++ b/apps/daily.js @@ -1,6 +1,6 @@ import fetch from "node-fetch"; import { Group, segment } from "oicq"; -import { autoTask } from "../utils/common.js" +import { autoTask } from "../utils/common.js"; // 指定定时发送的群号 const groupList = ["169721415"]; @@ -60,7 +60,7 @@ export class daily extends plugin { async function pushDailyWorld(e) { // 每天60秒读懂世界接口地址 const url = await fetch("https://api.vvhan.com/api/60s?type=json").catch(err => - console.error(err) + console.error(err), ); const imgUrl = await url.json(); const res = await imgUrl.imgUrl; @@ -80,7 +80,7 @@ async function pushDailyWorld(e) { async function pushTouchFish(e) { const url = await fetch("https://api.vvhan.com/api/moyu?type=json").catch(err => - console.error(err) + console.error(err), ); const imgUrl = await url.json(); const res = await imgUrl.url; diff --git a/apps/query.js b/apps/query.js index 50852ce..fbd36e8 100644 --- a/apps/query.js +++ b/apps/query.js @@ -139,7 +139,7 @@ export class query extends plugin { return true; } e.reply( - `识别:${resp.data[0].name}\n烂番茄评分:${resp.imdbRating}\n豆瓣评分:${resp.doubanRating}\n评分:${resp.imdbRating}` + `识别:${resp.data[0].name}\n烂番茄评分:${resp.imdbRating}\n豆瓣评分:${resp.doubanRating}\n评分:${resp.imdbRating}`, ); }); }); @@ -151,7 +151,7 @@ export class query extends plugin { let images = []; let reqRes = [ ...(await fetch(`https://shibe.online/api/cats?count=${numb}`).then(data => - data.json() + data.json(), )), ...(await fetch(`https://api.thecatapi.com/v1/images/search?limit=${numb}`) .then(data => data.json()) @@ -323,7 +323,7 @@ export class query extends plugin { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53", }, - } + }, ) .then(resp => { // console.log(resp.data); @@ -482,7 +482,7 @@ export class query extends plugin { }); await e.reply(await Bot.makeForwardMsg(bookMsg)); await e.reply( - "请选择一个你想要的ID、来源,例如:11918807 zlibrary(只回复11918807默认zlibrary)" + "请选择一个你想要的ID、来源,例如:11918807 zlibrary(只回复11918807默认zlibrary)", ); thisBookMethod.setContext("searchBookContext"); diff --git a/apps/tools.js b/apps/tools.js index 6774fd2..447cfec 100644 --- a/apps/tools.js +++ b/apps/tools.js @@ -17,7 +17,7 @@ import { retry } from "../utils/common.js"; import config from "../model/index.js"; export class tools extends plugin { - constructor () { + constructor() { super({ name: "工具和学习类", dsc: "工具相关指令", @@ -75,7 +75,7 @@ export class tools extends plugin { // TODO 填写服务器的内网ID和clash的端口 this.proxyAddr = this.toolsConfig.proxyAddr; this.proxyPort = this.toolsConfig.proxyPort; - this.myProxy = `http://${ this.proxyAddr }:${ this.proxyPort }`; + this.myProxy = `http://${this.proxyAddr}:${this.proxyPort}`; // console.log(this.myProxy) // 加载百度翻译配置 this.translateAppId = this.toolsConfig.translateAppId; @@ -85,13 +85,13 @@ export class tools extends plugin { } // 翻译插件 - async trans (e) { + async trans(e) { const languageReg = /翻(.)/g; const msg = e.msg.trim(); const language = languageReg.exec(msg); if (!transMap.hasOwnProperty(language[1])) { e.reply( - "输入格式有误!例子:翻中 China's policy has been consistent, but Japan chooses a path of mistrust, decoupling and military expansion" + "输入格式有误!例子:翻中 China's policy has been consistent, but Japan chooses a path of mistrust, decoupling and military expansion", ); return; } @@ -100,20 +100,20 @@ export class tools extends plugin { // let url = `http://api.fanyi.baidu.com/api/trans/vip/translate?from=auto&to=${ transMap[language[1]] }&appid=APP ID&salt=自定义&sign=${ md5("APP ID" + place + "自定义" + "密钥") }&q=${ place }`; let url = `http://api.fanyi.baidu.com/api/trans/vip/translate?from=auto&to=${ transMap[language[1]] - }&appid=${ this.translateAppId }&salt=rconsole&sign=${ md5( - this.translateAppId + place + "rconsole" + this.translateSecret - ) }&q=${ place }`; + }&appid=${this.translateAppId}&salt=rconsole&sign=${md5( + this.translateAppId + place + "rconsole" + this.translateSecret, + )}&q=${place}`; // console.log(url) await fetch(url) .then(resp => resp.json()) .then(text => text.trans_result) - .then(res => this.reply(`${ res[0].dst }`, true)) + .then(res => this.reply(`${res[0].dst}`, true)) .catch(err => logger.error(err)); return true; } // 抖音解析 - async douyin (e) { + async douyin(e) { const urlRex = /(http:|https:)\/\/v.douyin.com\/[A-Za-z\d._?%&+\-=\/#]*/g; const douUrl = urlRex.exec(e.msg.trim())[0]; @@ -125,85 +125,96 @@ export class tools extends plugin { // const url = `https://www.iesdouyin.com/aweme/v1/web/aweme/detail/?aweme_id=${ douId }&aid=1128&version_name=23.5.0&device_platform=android&os_version=2333`; fetch("https://ttwid.bytedance.com/ttwid/union/register/", { - "method": "POST", - "mode": "cors", - "credentials": 'include', + method: "POST", + mode: "cors", + credentials: "include", body: JSON.stringify({ - "region": "cn", - "aid": 1768, - "needFid": false, - "service": "www.ixigua.com", - "migrate_info": { - "ticket": "", - "source": "node" + region: "cn", + aid: 1768, + needFid: false, + service: "www.ixigua.com", + migrate_info: { + ticket: "", + source: "node", }, - "cbUrlProtocol": "https", - "union": true - }) + cbUrlProtocol: "https", + union: true, + }), }).then(resp => { - const ttwid = resp.headers.get('set-cookie'); - const odin_tt = 'a09d8eb0d95b7b9adb4b6fc6591918bfb996096967a7aa4305bd81b5150a8199d2e29ed21883cdd7709c5beaa2be3baa'; + const ttwid = resp.headers.get("set-cookie"); + const odin_tt = + "a09d8eb0d95b7b9adb4b6fc6591918bfb996096967a7aa4305bd81b5150a8199d2e29ed21883cdd7709c5beaa2be3baa"; const headers = { - 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36', - 'referer':'https://www.douyin.com/', - 'Cookie': `ttwid=${ttwid};${odin_tt}` - } - const dyApi = 'https://www.douyin.com/aweme/v1/web/aweme/detail/?' - const params = `aweme_id=${ douId }&aid=1128&version_name=23.5.0&device_platform=android&os_version=2333` + "user-agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36", + referer: "https://www.douyin.com/", + Cookie: `ttwid=${ttwid};${odin_tt}`, + }; + const dyApi = "https://www.douyin.com/aweme/v1/web/aweme/detail/?"; + const params = `aweme_id=${douId}&aid=1128&version_name=23.5.0&device_platform=android&os_version=2333`; // xg参数 - axios.post(`http://47.115.200.238/xg/path?url=${params.replaceAll('&','%26')}`, { - headers: { - "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36", - "referer": "https://www.douyin.com/", - "cookie": "" - }, - }).then(resp => { - const param = resp.data.result[0].paramsencode - const resDyApi = `${dyApi}${param}` - axios.get(resDyApi, { - headers - }).then(async resp => { - const item = resp.data.aweme_detail; - e.reply(`识别:抖音, ${ item.desc }`); - const urlTypeCode = item.aweme_type; - const urlType = douyinTypeMap[urlTypeCode]; - if (urlType === "video") { - const url_2 = item.video.play_addr.url_list[2]; - this.downloadVideo(url_2, false, headers).then(video => { - e.reply( - segment.video( - `${ this.defaultPath }${ this.e.group_id || this.e.user_id }/temp.mp4` - ) - ); - }); - } else if (urlType === "image") { - // 无水印图片列表 - let no_watermark_image_list = []; - // 有水印图片列表 - // let watermark_image_list = []; - for (let i of item.images) { - // 无水印图片列表 - no_watermark_image_list.push({ - message: segment.image(i.url_list[0]), - nickname: this.e.sender.card || this.e.user_id, - user_id: this.e.user_id, - }); - // 有水印图片列表 - // watermark_image_list.push(i.download_url_list[0]); - // e.reply(segment.image(i.url_list[0])); - } - // console.log(no_watermark_image_list) - await this.reply(await Bot.makeForwardMsg(no_watermark_image_list)); - } + axios + .post(`http://47.115.200.238/xg/path?url=${params.replaceAll("&", "%26")}`, { + headers: { + "user-agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36", + referer: "https://www.douyin.com/", + cookie: "", + }, }) - }) - }) + .then(resp => { + const param = resp.data.result[0].paramsencode; + const resDyApi = `${dyApi}${param}`; + axios + .get(resDyApi, { + headers, + }) + .then(async resp => { + const item = resp.data.aweme_detail; + e.reply(`识别:抖音, ${item.desc}`); + const urlTypeCode = item.aweme_type; + const urlType = douyinTypeMap[urlTypeCode]; + if (urlType === "video") { + const url_2 = item.video.play_addr.url_list[2]; + this.downloadVideo(url_2, false, headers).then(video => { + e.reply( + segment.video( + `${this.defaultPath}${ + this.e.group_id || this.e.user_id + }/temp.mp4`, + ), + ); + }); + } else if (urlType === "image") { + // 无水印图片列表 + let no_watermark_image_list = []; + // 有水印图片列表 + // let watermark_image_list = []; + for (let i of item.images) { + // 无水印图片列表 + no_watermark_image_list.push({ + message: segment.image(i.url_list[0]), + nickname: this.e.sender.card || this.e.user_id, + user_id: this.e.user_id, + }); + // 有水印图片列表 + // watermark_image_list.push(i.download_url_list[0]); + // e.reply(segment.image(i.url_list[0])); + } + // console.log(no_watermark_image_list) + await this.reply( + await Bot.makeForwardMsg(no_watermark_image_list), + ); + } + }); + }); + }); }); return true; } // tiktok解析 - async tiktok (e) { + async tiktok(e) { const urlRex = /(http:|https:)\/\/www.tiktok.com\/[A-Za-z\d._?%&+\-=\/#@]*/g; const urlShortRex = /(http:|https:)\/\/vt.tiktok.com\/[A-Za-z\d._?%&+\-=\/#]*/g; const urlShortRex2 = /(http:|https:)\/\/vm.tiktok.com\/[A-Za-z\d._?%&+\-=\/#]*/g; @@ -235,7 +246,7 @@ export class tools extends plugin { } const idVideo = await this.getIdVideo(url); // API链接 - const API_URL = `https://api16-normal-c-useast1a.tiktokv.com/aweme/v1/feed/?aweme_id=${ idVideo }&version_code=262&app_name=musical_ly&channel=App&device_id=null&os_version=14.4.2&device_platform=iphone&device_type=iPhone9`; + const API_URL = `https://api16-normal-c-useast1a.tiktokv.com/aweme/v1/feed/?aweme_id=${idVideo}&version_code=262&app_name=musical_ly&channel=App&device_id=null&os_version=14.4.2&device_platform=iphone&device_type=iPhone9`; await axios .get(API_URL, { @@ -256,12 +267,12 @@ export class tools extends plugin { }) .then(resp => { const data = resp.data.aweme_list[0]; - e.reply(`识别:tiktok, ${ data.desc }`); + e.reply(`识别:tiktok, ${data.desc}`); this.downloadVideo(data.video.play_addr.url_list[0], true).then(video => { e.reply( segment.video( - `${ this.defaultPath }${ this.e.group_id || this.e.user_id }/temp.mp4` - ) + `${this.defaultPath}${this.e.group_id || this.e.user_id}/temp.mp4`, + ), ); }); }); @@ -269,7 +280,7 @@ export class tools extends plugin { } // bilibi解析 - async bili (e) { + async bili(e) { const urlRex = /(http:|https:)\/\/www.bilibili.com\/[A-Za-z\d._?%&+\-=\/#]*/g; const bShortRex = /(http:|https:)\/\/b23.tv\/[A-Za-z\d._?%&+\-=\/#]*/g; let url = e.msg.trim(); @@ -293,15 +304,15 @@ export class tools extends plugin { // console.log(dynamicId) getDynamic(dynamicId).then(async resp => { if (resp.dynamicSrc.length > 0) { - e.reply(`识别:哔哩哔哩动态, ${ resp.dynamicDesc }`); - let dynamicSrcMsg = [] + e.reply(`识别:哔哩哔哩动态, ${resp.dynamicDesc}`); + let dynamicSrcMsg = []; resp.dynamicSrc.forEach(item => { dynamicSrcMsg.push({ message: segment.image(item), nickname: e.sender.card || e.user_id, user_id: e.user_id, - }) - }) + }); + }); await this.reply(await Bot.makeForwardMsg(dynamicSrcMsg)); // resp.dynamicSrc.forEach(item => { // e.reply(segment.image(item)); @@ -313,7 +324,7 @@ export class tools extends plugin { return true; } - const path = `${ this.defaultPath }${ this.e.group_id || this.e.user_id }/`; + const path = `${this.defaultPath}${this.e.group_id || this.e.user_id}/`; if (!fs.existsSync(path)) { mkdirsSync(path); } @@ -325,12 +336,12 @@ export class tools extends plugin { // 获取视频信息,然后发送 fetch( videoId.startsWith("BV") - ? `${ baseVideoInfo }?bvid=${ videoId }` - : `${ baseVideoInfo }?aid=${ videoId }` + ? `${baseVideoInfo}?bvid=${videoId}` + : `${baseVideoInfo}?aid=${videoId}`, ) .then(resp => resp.json()) .then(resp => { - e.reply(`识别:哔哩哔哩, ${ resp.data.title }`).catch(err => { + e.reply(`识别:哔哩哔哩, ${resp.data.title}`).catch(err => { e.reply("解析失败,重试一下"); console.log(err); }); @@ -339,9 +350,9 @@ export class tools extends plugin { await getDownloadUrl(url) .then(data => { - this.downBili(`${ path }temp`, data.videoUrl, data.audioUrl) + this.downBili(`${path}temp`, data.videoUrl, data.audioUrl) .then(data => { - e.reply(segment.video(`${ path }temp.mp4`)); + e.reply(segment.video(`${path}temp.mp4`)); }) .catch(err => { console.log(err); @@ -356,9 +367,9 @@ export class tools extends plugin { } // 百科 - async wiki (e) { + async wiki(e) { const key = e.msg.replace(/#|百科|wiki/g, "").trim(); - const url = `https://xiaoapi.cn/API/bk.php?m=json&type=sg&msg=${ encodeURI(key) }`; + const url = `https://xiaoapi.cn/API/bk.php?m=json&type=sg&msg=${encodeURI(key)}`; // const url2 = 'https://api.jikipedia.com/go/auto_complete' Promise.all([ // axios.post(url2, { @@ -392,8 +403,8 @@ export class tools extends plugin { const data = res[0]; // const data2 = res[0] const template = ` - 解释:${ _.get(data, "msg") }\n - 详情:${ _.get(data, "more") }\n + 解释:${_.get(data, "msg")}\n + 详情:${_.get(data, "more")}\n `; // 小鸡解释:${ _.get(data2, 'content') } e.reply(template); @@ -403,7 +414,7 @@ export class tools extends plugin { // 小蓝鸟解析 // 例子:https://twitter.com/chonkyanimalx/status/1595834168000204800 - async twitter (e) { + async twitter(e) { // 配置参数及解析 const reg = /https?:\/\/twitter.com\/[0-9-a-zA-Z_]{1,20}\/status\/([0-9]*)/; const twitterUrl = reg.exec(e.msg); @@ -418,54 +429,56 @@ export class tools extends plugin { .singleTweet(id, { "media.fields": "duration_ms,height,media_key,preview_image_url,public_metrics,type,url,width,alt_text,variants", - expansions: [ "entities.mentions.username", "attachments.media_keys" ], + expansions: ["entities.mentions.username", "attachments.media_keys"], }) .then(async resp => { - e.reply(`识别:小蓝鸟学习版,${ resp.data.text }`); - const downloadPath = `${ this.defaultPath }${ this.e.group_id || this.e.user_id }`; + e.reply(`识别:小蓝鸟学习版,${resp.data.text}`); + const downloadPath = `${this.defaultPath}${this.e.group_id || this.e.user_id}`; // 创建文件夹(如果没有过这个群) if (!fs.existsSync(downloadPath)) { mkdirsSync(downloadPath); } // 逐个遍历判断 - let task = [] + let task = []; for (let item of resp.includes.media) { if (item.type === "photo") { // 图片 - task.push(this.downloadImg(item.url, downloadPath)) + task.push(this.downloadImg(item.url, downloadPath)); } else if (item.type === "video") { // 视频 - await this.downloadVideo(resp.includes.media[0].variants[0].url, true).then(_ => { - e.reply(segment.video(`${ downloadPath }/temp.mp4`)); - }); + await this.downloadVideo(resp.includes.media[0].variants[0].url, true).then( + _ => { + e.reply(segment.video(`${downloadPath}/temp.mp4`)); + }, + ); } } - let images = [] - let path = [] + let images = []; + let path = []; // 获取所有图片的promise await Promise.all(task).then(resp => { // console.log(resp) resp.forEach(item => { - path.push(item) + path.push(item); images.push({ message: segment.image(fs.readFileSync(item)), nickname: this.e.sender.card || this.e.user_id, user_id: this.e.user_id, }); - }) - }) - await e.reply(await Bot.makeForwardMsg(images)) + }); + }); + await e.reply(await Bot.makeForwardMsg(images)); // 清理文件 path.forEach(item => { fs.unlinkSync(item); - }) + }); }); return true; } // acfun解析 - async acfun (e) { - const path = `${ this.defaultPath }${ this.e.group_id || this.e.user_id }/temp/`; + async acfun(e) { + const path = `${this.defaultPath}${this.e.group_id || this.e.user_id}/temp/`; if (!fs.existsSync(path)) { mkdirsSync(path); } @@ -473,15 +486,15 @@ export class tools extends plugin { let inputMsg = e.msg; // 适配手机分享:https://m.acfun.cn/v/?ac=32838812&sid=d2b0991bd6ad9c09 if (inputMsg.includes("m.acfun.cn")) { - inputMsg = `https://www.acfun.cn/v/ac${ /ac=([^&?]*)/.exec(inputMsg)[1] }`; + inputMsg = `https://www.acfun.cn/v/ac${/ac=([^&?]*)/.exec(inputMsg)[1]}`; } parseUrl(inputMsg).then(res => { - e.reply(`识别:猴山,${ res.videoName }`); + e.reply(`识别:猴山,${res.videoName}`); parseM3u8(res.urlM3u8s[res.urlM3u8s.length - 1]).then(res2 => { downloadM3u8Videos(res2.m3u8FullUrls, path).then(_ => { - mergeAcFileToMp4(res2.tsNames, path, `${ path }out.mp4`).then(_ => { - e.reply(segment.video(`${ path }out.mp4`)); + mergeAcFileToMp4(res2.tsNames, path, `${path}out.mp4`).then(_ => { + e.reply(segment.video(`${path}out.mp4`)); }); }); }); @@ -490,11 +503,11 @@ export class tools extends plugin { } // 小红书解析 - async redbook (e) { + async redbook(e) { const msgUrl = /(http:|https:)\/\/(xhslink|xiaohongshu).com\/[A-Za-z\d._?%&+\-=\/#@]*/.exec( - e.msg + e.msg, )[0]; - const url = `https://dlpanda.com/zh-CN/xhs?url=${ msgUrl }`; + const url = `https://dlpanda.com/zh-CN/xhs?url=${msgUrl}`; await axios .get(url, { @@ -510,21 +523,22 @@ export class tools extends plugin { .then(async resp => { const reg = / { const addr = `https:${item.split('"')[3]}`; - return axios.get(addr, { - headers: { - "User-Agent": - "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Mobile Safari/537.36", - }, - responseType: "stream", - }) + return axios + .get(addr, { + headers: { + "User-Agent": + "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Mobile Safari/537.36", + }, + responseType: "stream", + }) .then(resp => { const filepath = `${downloadPath}/${/com\/(.*)\?/.exec(addr)[1]}.jpg`; const writer = fs.createWriteStream(filepath); @@ -533,31 +547,31 @@ export class tools extends plugin { writer.on("finish", () => resolve(filepath)); writer.on("error", reject); }); - }) - }) - let path = [] + }); + }); + let path = []; const images = await Promise.all(imagesPath).then(paths => { return paths.map(item => { - path.push(item) + path.push(item); return { message: segment.image(fs.readFileSync(item)), nickname: e.sender.card || e.user_id, user_id: e.user_id, - } - }) - }) + }; + }); + }); await this.reply(await Bot.makeForwardMsg(images)); // 清理文件 path.forEach(item => { fs.unlinkSync(item); - }) + }); }); return true; } // 文献解析 - async literature (e) { + async literature(e) { const litReg = /(http:|https:)\/\/doi.org\/[A-Za-z\d._?%&+\-=\/#@]*/; const url = litReg.exec(e.msg.trim())[0]; const waitList = [ @@ -578,7 +592,7 @@ export class tools extends plugin { }); } - async downBili (title, videoUrl, audioUrl) { + async downBili(title, videoUrl, audioUrl) { return Promise.all([ downloadBFile( videoUrl, @@ -589,8 +603,8 @@ export class tools extends plugin { type: "video", data: value, }), - 1000 - ) + 1000, + ), ), downloadBFile( audioUrl, @@ -601,8 +615,8 @@ export class tools extends plugin { type: "audio", data: value, }), - 1000 - ) + 1000, + ), ), ]).then(data => { return mergeFileToMp4(data[0].fullFileName, data[1].fullFileName, title + ".mp4"); @@ -610,9 +624,9 @@ export class tools extends plugin { } // 工具:下载一张网络图片 - async downloadImg (img, dir) { + async downloadImg(img, dir) { const filename = img.split("/").pop(); - const filepath = `${ dir }/${ filename }`; + const filepath = `${dir}/${filename}`; const writer = fs.createWriteStream(filepath); return axios .get(img, { @@ -646,7 +660,7 @@ export class tools extends plugin { } // 请求参数 - async douyinRequest (url) { + async douyinRequest(url) { const params = { headers: { "User-Agent": @@ -668,12 +682,12 @@ export class tools extends plugin { } // 工具:根URL据下载视频 / 音频 - async downloadVideo (url, isProxy = false, headers = null) { - const groupPath = `${ this.defaultPath }${ this.e.group_id || this.e.user_id }`; + async downloadVideo(url, isProxy = false, headers = null) { + const groupPath = `${this.defaultPath}${this.e.group_id || this.e.user_id}`; if (!fs.existsSync(groupPath)) { mkdirsSync(groupPath); } - const target = `${ groupPath }/temp.mp4`; + const target = `${groupPath}/temp.mp4`; // 待优化 if (fs.existsSync(target)) { console.log(`视频已存在`); @@ -703,7 +717,7 @@ export class tools extends plugin { }), }); } - console.log(`开始下载: ${ url }`); + console.log(`开始下载: ${url}`); const writer = fs.createWriteStream(target); res.data.pipe(writer); @@ -714,7 +728,7 @@ export class tools extends plugin { } // 工具:找到tiktok的视频id - async getIdVideo (url) { + async getIdVideo(url) { const matching = url.includes("/video/"); if (!matching) { this.e.reply("没找到,正在获取随机视频!"); diff --git a/apps/update.js b/apps/update.js index 98d58de..13b09c1 100644 --- a/apps/update.js +++ b/apps/update.js @@ -151,7 +151,7 @@ export class update extends plugin { await this.reply( msg + `存在冲突:\n${errMsg}\n` + - "请解决冲突后再更新,或者执行#强制更新,放弃本地修改" + "请解决冲突后再更新,或者执行#强制更新,放弃本地修改", ); } else if (stdout.includes("CONFLICT")) { await this.reply([