AXCWG 3 månader sedan
förälder
incheckning
9c3d303179
1 ändrade filer med 123 tillägg och 107 borttagningar
  1. 123 107
      main.js

+ 123 - 107
main.js

@@ -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");