|
@@ -47,119 +47,119 @@ let ncmAPIUrl = "http://localhost:5999";
|
|
|
let res_o = null;
|
|
|
let req_o = null;
|
|
|
let currentTask = [];
|
|
|
+
|
|
|
function Submit() {
|
|
|
|
|
|
let reqLocal = req_o;
|
|
|
let resLocal = res_o;
|
|
|
|
|
|
- let uuid = crypto.randomUUID()
|
|
|
- db.connect(function (err) {
|
|
|
- if (err) {
|
|
|
- console.log(err)
|
|
|
- }
|
|
|
- })
|
|
|
+ let uuid = crypto.randomUUID()
|
|
|
+ db.connect(function (err) {
|
|
|
+ if (err) {
|
|
|
+ console.log(err)
|
|
|
+ }
|
|
|
+ })
|
|
|
|
|
|
|
|
|
- let albumCover = null;
|
|
|
- try {
|
|
|
- fetch(reqLocal.body.file).then(res => {
|
|
|
- res.arrayBuffer().then(r => fs.writeFileSync("./" + uuid, Buffer.from(r)));
|
|
|
- })
|
|
|
- fetch(reqLocal.body.albumCover).then(res => {
|
|
|
- res.arrayBuffer().then(r => {
|
|
|
- albumCover = r
|
|
|
- })
|
|
|
+ let albumCover = null;
|
|
|
+ try {
|
|
|
+ fetch(reqLocal.body.file).then(res => {
|
|
|
+ res.arrayBuffer().then(r => fs.writeFileSync("./" + uuid, Buffer.from(r)));
|
|
|
+ })
|
|
|
+ fetch(reqLocal.body.albumCover).then(res => {
|
|
|
+ res.arrayBuffer().then(r => {
|
|
|
+ albumCover = r
|
|
|
})
|
|
|
+ })
|
|
|
|
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
|
- } catch (err) {
|
|
|
+ console.log(err)
|
|
|
|
|
|
- console.log(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- return
|
|
|
- }
|
|
|
+ const callback = function (d) {
|
|
|
+ console.log(d.toString());
|
|
|
+ }
|
|
|
+ const errcb = function (d) {
|
|
|
+ console.log(d.toString());
|
|
|
+ }
|
|
|
+ let kind_of = [];
|
|
|
+
|
|
|
+ switch (reqLocal.body.kind) {
|
|
|
+ case 0:
|
|
|
+ kind_of[0] = `audio-separator ./${uuid} --model_filename UVR-MDX-NET-Inst_HQ_5.onnx --mdx_enable_denoise --mdx_segment_size 4000 --mdx_overlap 0.75 --output_format mp3 --mdx_batch_size 300 --output_dir output`
|
|
|
+ kind_of[1] = `./output/${uuid}_(Instrumental)_UVR-MDX-NET-Inst_HQ_5.mp3`
|
|
|
+ kind_of[2] = `${uuid}_(Instrumental)_UVR-MDX-NET-Inst_HQ_5.mp3`
|
|
|
+ kind_of[3] = `./output/${uuid}_(Vocals)_UVR-MDX-NET-Inst_HQ_5.mp3`
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ kind_of[0] = `audio-separator ./${uuid} --model_filename UVR_MDXNET_KARA.onnx --mdx_enable_denoise --mdx_segment_size 4000 --mdx_overlap 0.75 --output_format mp3 --mdx_batch_size 300 --output_dir output`
|
|
|
+ kind_of[1] = `./output/${uuid}_(Instrumental)_UVR_MDXNET_KARA.mp3`
|
|
|
+ kind_of[2] = `${uuid}_(Instrumental)_UVR_MDXNET_KARA.mp3`
|
|
|
+ kind_of[3] = `./output/${uuid}_(Vocals)_UVR_MDXNET_KARA.mp3`
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ kind_of[0] = `audio-separator ./${uuid} --model_filename kuielab_a_bass.onnx --mdx_enable_denoise --mdx_segment_size 4000 --mdx_overlap 0.75 --output_format mp3 --mdx_batch_size 300 --output_dir output`
|
|
|
+ kind_of[1] = `./output/${uuid}_(Bass)_kuielab_a_bass.mp3`
|
|
|
+ kind_of[2] = `${uuid}_(Bass)_kuielab_a_bass.mp3`
|
|
|
+ kind_of[3] = `./output/${uuid}_(No Bass)_kuielab_a_bass.mp3`
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ kind_of[0] = `audio-separator ./${uuid} --model_filename kuielab_a_drums.onnx --mdx_enable_denoise --mdx_segment_size 4000 --mdx_overlap 0.75 --output_format mp3 --mdx_batch_size 300 --output_dir output`
|
|
|
+ kind_of[1] = `./output/${uuid}_(Drums)_kuielab_a_drums.mp3`
|
|
|
+ kind_of[2] = `${uuid}_(Drums)_kuielab_a_drums.mp3`
|
|
|
+ kind_of[3] = `./output/${uuid}_(No Drums)_kuielab_a_drums.mp3`
|
|
|
+ break;
|
|
|
|
|
|
- const callback = function (d) {
|
|
|
- console.log(d.toString());
|
|
|
- }
|
|
|
- const errcb = function (d) {
|
|
|
- console.log(d.toString());
|
|
|
- }
|
|
|
- let kind_of = [];
|
|
|
-
|
|
|
- switch (reqLocal.body.kind) {
|
|
|
- case 0:
|
|
|
- kind_of[0] = `audio-separator ./${uuid} --model_filename UVR-MDX-NET-Inst_HQ_5.onnx --mdx_enable_denoise --mdx_segment_size 4000 --mdx_overlap 0.75 --output_format mp3 --mdx_batch_size 300 --output_dir output`
|
|
|
- kind_of[1] = `./output/${uuid}_(Instrumental)_UVR-MDX-NET-Inst_HQ_5.mp3`
|
|
|
- kind_of[2] = `${uuid}_(Instrumental)_UVR-MDX-NET-Inst_HQ_5.mp3`
|
|
|
- kind_of[3] = `./output/${uuid}_(Vocals)_UVR-MDX-NET-Inst_HQ_5.mp3`
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- kind_of[0] = `audio-separator ./${uuid} --model_filename UVR_MDXNET_KARA.onnx --mdx_enable_denoise --mdx_segment_size 4000 --mdx_overlap 0.75 --output_format mp3 --mdx_batch_size 300 --output_dir output`
|
|
|
- kind_of[1] = `./output/${uuid}_(Instrumental)_UVR_MDXNET_KARA.mp3`
|
|
|
- kind_of[2] = `${uuid}_(Instrumental)_UVR_MDXNET_KARA.mp3`
|
|
|
- kind_of[3] = `./output/${uuid}_(Vocals)_UVR_MDXNET_KARA.mp3`
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- kind_of[0] = `audio-separator ./${uuid} --model_filename kuielab_a_bass.onnx --mdx_enable_denoise --mdx_segment_size 4000 --mdx_overlap 0.75 --output_format mp3 --mdx_batch_size 300 --output_dir output`
|
|
|
- kind_of[1] = `./output/${uuid}_(Bass)_kuielab_a_bass.mp3`
|
|
|
- kind_of[2] = `${uuid}_(Bass)_kuielab_a_bass.mp3`
|
|
|
- kind_of[3] = `./output/${uuid}_(No Bass)_kuielab_a_bass.mp3`
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- kind_of[0] = `audio-separator ./${uuid} --model_filename kuielab_a_drums.onnx --mdx_enable_denoise --mdx_segment_size 4000 --mdx_overlap 0.75 --output_format mp3 --mdx_batch_size 300 --output_dir output`
|
|
|
- kind_of[1] = `./output/${uuid}_(Drums)_kuielab_a_drums.mp3`
|
|
|
- kind_of[2] = `${uuid}_(Drums)_kuielab_a_drums.mp3`
|
|
|
- kind_of[3] = `./output/${uuid}_(No Drums)_kuielab_a_drums.mp3`
|
|
|
- break;
|
|
|
|
|
|
+ }
|
|
|
+ nrc.run([kind_of[0]], {
|
|
|
+ onData: callback, onError: errcb
|
|
|
+ }).then(() => {
|
|
|
|
|
|
- }
|
|
|
- nrc.run([kind_of[0]], {
|
|
|
- onData: callback, onError: errcb
|
|
|
- }).then(() => {
|
|
|
+ db.execute(("INSERT INTO instrunet_entry (uuid, song_name, album_name, link_to, databinary, artist,kind, albumcover) VALUES (?,?,?,?,?,?,?,?)"), [uuid, reqLocal.body.name, reqLocal.body.albumName, reqLocal.body.link, fs.readFileSync(kind_of[1]), reqLocal.body.artist, reqLocal.body.kind, albumCover])
|
|
|
+ db.unprepare(() => {
|
|
|
|
|
|
- db.execute(("INSERT INTO instrunet_entry (uuid, song_name, album_name, link_to, databinary, artist,kind, albumcover) VALUES (?,?,?,?,?,?,?,?)"), [uuid, reqLocal.body.name, reqLocal.body.albumName, reqLocal.body.link, fs.readFileSync(kind_of[1]), reqLocal.body.artist, reqLocal.body.kind, albumCover])
|
|
|
- db.unprepare(() => {
|
|
|
+ })
|
|
|
+ fs.rm(kind_of[1], (err) => {
|
|
|
+ if (err) {
|
|
|
+ console.log(err);
|
|
|
|
|
|
- })
|
|
|
- fs.rm(kind_of[1], (err) => {
|
|
|
- if (err) {
|
|
|
- console.log(err);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ fs.rm(kind_of[3], (err) => {
|
|
|
+ if (err) {
|
|
|
+ console.log(err);
|
|
|
|
|
|
- }
|
|
|
- })
|
|
|
- fs.rm(kind_of[3], (err) => {
|
|
|
- if (err) {
|
|
|
- console.log(err);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ fs.rm(uuid, (err) => {
|
|
|
+ if (err) {
|
|
|
+ console.log(err);
|
|
|
|
|
|
- }
|
|
|
- })
|
|
|
- fs.rm(uuid, (err) => {
|
|
|
- if (err) {
|
|
|
- console.log(err);
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ })
|
|
|
+ if (reqLocal.body.email !== undefined) {
|
|
|
+ console.log(reqLocal.body.email)
|
|
|
+ transporter.sendMail({
|
|
|
+ from: '"xiey0" <xiey0@qq.com>',
|
|
|
+ to: reqLocal.body.email,
|
|
|
+ subject: "你的音频已处理完成。",
|
|
|
+ text: "你的音频已处理完成。",
|
|
|
+ html: fs.readFileSync("./Template.html", "utf8").toString().replace("{song_name}", reqLocal.body.name).replace("{href_link}", "https://andyxie.cn:4000/player?play=" + uuid)
|
|
|
+ }).then((result) => {
|
|
|
+ console.log("Message sent: %s", result.messageId)
|
|
|
|
|
|
})
|
|
|
- if (reqLocal.body.email !== undefined) {
|
|
|
- console.log(reqLocal.body.email)
|
|
|
- transporter.sendMail({
|
|
|
- from: '"xiey0" <xiey0@qq.com>',
|
|
|
- to: reqLocal.body.email,
|
|
|
- subject: "你的音频已处理完成。",
|
|
|
- text: "你的音频已处理完成。",
|
|
|
- html: fs.readFileSync("./Template.html", "utf8").toString().replace("{song_name}", reqLocal.body.name).replace("{href_link}", "https://andyxie.cn:4000/player?play=" + uuid)
|
|
|
- }).then((result) => {
|
|
|
- console.log("Message sent: %s", result.messageId)
|
|
|
-
|
|
|
- })
|
|
|
- }
|
|
|
- currentTask.shift();
|
|
|
- queue.next()
|
|
|
- })
|
|
|
+ }
|
|
|
+ currentTask.shift();
|
|
|
+ queue.next()
|
|
|
+ })
|
|
|
|
|
|
|
|
|
}
|
|
@@ -168,22 +168,39 @@ function Submit() {
|
|
|
app.post('/submit', SubmitWrapper)
|
|
|
|
|
|
function SubmitWrapper(req, res) {
|
|
|
- req_o = req;
|
|
|
- res_o = res;
|
|
|
- if (req.body.file !== undefined) {
|
|
|
- queue.add(Submit)
|
|
|
- currentTask.push({
|
|
|
- name: req.body.name,
|
|
|
- kind: req.body.kind,
|
|
|
- })
|
|
|
- }
|
|
|
- console.log(queue.contents)
|
|
|
- console.log(currentTask)
|
|
|
- if (currentTask.length === 1) {
|
|
|
- queue.next()
|
|
|
- }
|
|
|
- res.header("Access-Control-Allow-Origin", "*");
|
|
|
- res.end("api_success")
|
|
|
+ db.execute(`SELECT uuid, song_name, album_name, link_to, artist, kind
|
|
|
+ from instrunet_entry
|
|
|
+ where song_name = "${req.body.name}"
|
|
|
+ and artist = "${req.body.artist}"
|
|
|
+ and kind = ${req.body.kind} `, (err, result) => {
|
|
|
+
|
|
|
+ if (result.length === 0) {
|
|
|
+
|
|
|
+ req_o = req;
|
|
|
+ res_o = res;
|
|
|
+ if (req.body.file !== undefined) {
|
|
|
+ queue.add(Submit)
|
|
|
+ currentTask.push({
|
|
|
+ name: req.body.name,
|
|
|
+ albumName: req.body.albumName,
|
|
|
+ kind: req.body.kind,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ console.log(queue.contents)
|
|
|
+ console.log(currentTask)
|
|
|
+ if (currentTask.length === 1) {
|
|
|
+ queue.next()
|
|
|
+ }
|
|
|
+ res.header("Access-Control-Allow-Origin", "*");
|
|
|
+ res.end("api_success")
|
|
|
+ } else {
|
|
|
+ res.header("Access-Control-Allow-Origin", "*");
|
|
|
+ res.statusCode=500
|
|
|
+ res.end("傻逼,重复了。请在盲目上传之前看看库里有没有好么傻逼?")
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ })
|
|
|
|
|
|
|
|
|
}
|
|
@@ -194,7 +211,7 @@ app.post('/lyric', async (req, res) => {
|
|
|
let id = (await (await fetch(ncmAPIUrl + `/cloudsearch?keywords=${name}%20${artist}`)).json()).result.songs[0].id
|
|
|
let lyric = await (await fetch(ncmAPIUrl + `/lyric?id=${id}`)).json()
|
|
|
let ifTrans = false;
|
|
|
- if(lyric.tlyric.lyric !== ''){
|
|
|
+ if (lyric.tlyric.lyric !== '') {
|
|
|
ifTrans = true;
|
|
|
}
|
|
|
let response = {
|
|
@@ -212,7 +229,6 @@ app.options('/lyric', async (req, res) => {
|
|
|
})
|
|
|
|
|
|
|
|
|
-
|
|
|
app.options('/submit', function (req, res) {
|
|
|
res.header("Access-Control-Allow-Origin", "*");
|
|
|
res.header("Access-Control-Allow-Headers", "Content-Type");
|