feat: 新增网易云音乐解析

This commit is contained in:
zhiyu1998 2023-03-12 02:34:20 +08:00
parent 6e4a175d3a
commit b76a452404
4 changed files with 64 additions and 27 deletions

View File

@ -206,19 +206,11 @@ export class query extends plugin {
async hotSearch(e) { async hotSearch(e) {
let keyword = e.msg.replace(/#|热搜/g, "").trim(); let keyword = e.msg.replace(/#|热搜/g, "").trim();
console.log(keyword);
// 虎扑/知乎/36氪/百度/哔哩哔哩/贴吧/微博/抖音/豆瓣/少数派/IT资讯/微信
let url = "https://api.vvhan.com/api/hotlist?type="; let url = "https://api.vvhan.com/api/hotlist?type=";
switch (keyword) { switch (keyword) {
case "虎扑":
url += "huPu";
break;
case "知乎": case "知乎":
url += "zhihuHot"; url += "zhihuHot";
break; break;
case "36氪":
url += "36Ke";
break;
case "百度": case "百度":
url += "baiduRD"; url += "baiduRD";
break; break;
@ -234,20 +226,8 @@ export class query extends plugin {
case "抖音": case "抖音":
url += "douyinHot"; url += "douyinHot";
break; break;
case "豆瓣":
url += "douban";
break;
case "少数派":
url += "ssPai";
break;
case "IT资讯":
url += "itInfo";
break;
case "微信":
url += "wxHot";
break;
default: default:
url += "history"; url += "bili";
break; break;
} }
let sendTemplate = { let sendTemplate = {

View File

@ -1,7 +1,7 @@
// 主库 // 主库
import fetch from "node-fetch"; import fetch from "node-fetch";
import fs from "node:fs"; import fs from "node:fs";
import { segment } from "oicq"; import { Gfs, segment } from "oicq";
// 其他库 // 其他库
import md5 from "md5"; import md5 from "md5";
import axios from "axios"; import axios from "axios";
@ -15,6 +15,7 @@ import { parseUrl, parseM3u8, downloadM3u8Videos, mergeAcFileToMp4 } from "../ut
import { transMap, douyinTypeMap, TEN_THOUSAND } from "../utils/constant.js"; import { transMap, douyinTypeMap, TEN_THOUSAND } from "../utils/constant.js";
import { getIdVideo } from "../utils/common.js"; import { getIdVideo } from "../utils/common.js";
import config from "../model/index.js"; import config from "../model/index.js";
import { resolve } from "patch-package/dist/path.js";
export class tools extends plugin { export class tools extends plugin {
constructor() { constructor() {
@ -49,8 +50,8 @@ export class tools extends plugin {
fnc: "twitter", fnc: "twitter",
}, },
{ {
reg: "https://(m.)?v.qq.com/(.*)", reg: "music.163.com",
fnc: "tx", fnc: "netease",
}, },
{ {
reg: "(acfun.cn)", reg: "(acfun.cn)",
@ -68,7 +69,7 @@ export class tools extends plugin {
reg: "^#清理data垃圾$", reg: "^#清理data垃圾$",
fnc: "clearTrash", fnc: "clearTrash",
permission: "master", permission: "master",
} },
], ],
}); });
// http://api.tuwei.space/girl // http://api.tuwei.space/girl
@ -623,7 +624,7 @@ export class tools extends plugin {
// 清理垃圾文件 // 清理垃圾文件
async clearTrash(e) { async clearTrash(e) {
const directory = './data/'; const directory = "./data/";
try { try {
fs.readdir(directory, (err, files) => { fs.readdir(directory, (err, files) => {
for (const file of files) { for (const file of files) {
@ -636,10 +637,63 @@ export class tools extends plugin {
await e.reply(`清理完成!`); await e.reply(`清理完成!`);
} catch (err) { } catch (err) {
console.log(err); console.log(err);
e.reply("清理失败,重试或者自动清理即可") e.reply("清理失败,重试或者自动清理即可");
} }
} }
async netease(e) {
const message = e.msg === undefined ? e.message.shift().data.replaceAll("\\", "") : e.msg.trim();
const musicUrlReg = /(http:|https:)\/\/music.163.com\/song\/media\/outer\/url\?id=(\d+)/;
const realMusicUrl = musicUrlReg.exec(message)[0];
const id = musicUrlReg.exec(message)[2];
console.log(id);
fetch(`https://api.vvhan.com/api/music?id=${id}&type=song&media=netease`, {
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",
"Content-Type": "application/json",
},
})
.then(resp => resp.json())
.then(resp => {
console.log(resp);
const { name, author, mp3url, cover } = resp;
e.reply([`识别:网易云音乐,${name}--${author}`, segment.image(cover)]);
console.log(mp3url);
fetch(mp3url, {
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",
redirect: 'manual'
})
.then(res => {
const path = `${this.defaultPath}${this.e.group_id || this.e.user_id}/temp.mp3`
const fileStream = fs.createWriteStream(path);
res.body.pipe(fileStream);
return new Promise((resolve, reject) => {
fileStream.on("finish", () => {
fileStream.close(() => {
resolve(path);
});
});
fileStream.on("error", err => {
fs.unlink(path, () => {
reject(err);
});
});
});
}).then(path => {
Bot.acquireGfs(e.group_id).upload(fs.readFileSync(path), '/', `${name}.mp3`)
})
.catch(err => {
console.error(`Error downloading file: ${err.message}`);
});
});
return true;
}
/** /**
* 哔哩哔哩下载 * 哔哩哔哩下载
* @param title * @param title

View File

@ -53,6 +53,9 @@
- icon: literature - icon: literature
title: "论文" title: "论文"
desc: SCI论文实时解析 desc: SCI论文实时解析
- icon: netease
title: "网易云音乐",
desc: 网易云音乐解析
- group: 其他指令 - group: 其他指令
list: list:
- icon: update - icon: update

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB