AXCWG 3 ヶ月 前
コミット
06f6d00e55
2 ファイル変更35 行追加28 行削除
  1. 22 26
      main.js
  2. 13 2
      test.js

+ 22 - 26
main.js

@@ -45,14 +45,10 @@ const transporter = nodemailer.createTransport({
 /// TODO
 let ncmAPIUrl = "http://localhost:5999";
 
-let res_o = null;
-let req_o = null;
-let currentTask = [];
 
-function Submit() {
+let currentTask = [];
 
-    let reqLocal = req_o;
-    let resLocal = res_o;
+function Submit(req, res) {
 
     let uuid = crypto.randomUUID()
     db.connect(function (err) {
@@ -64,10 +60,10 @@ function Submit() {
 
     let albumCover = null;
     try {
-        fetch(reqLocal.body.file).then(res => {
+        fetch(req.body.file).then(res => {
             res.arrayBuffer().then(r => fs.writeFileSync("./" + uuid, Buffer.from(r)));
         })
-        fetch(reqLocal.body.albumCover).then(res => {
+        fetch(req.body.albumCover).then(res => {
             res.arrayBuffer().then(r => {
                 albumCover = r
             })
@@ -89,7 +85,7 @@ function Submit() {
     }
     let kind_of = [];
 
-    switch (reqLocal.body.kind) {
+    switch (req.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`
@@ -121,7 +117,7 @@ function Submit() {
         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.execute(("INSERT INTO instrunet_entry (uuid, song_name, album_name, link_to, databinary, artist,kind, albumcover) VALUES (?,?,?,?,?,?,?,?)"), [uuid, req.body.name, req.body.albumName, req.body.link, fs.readFileSync(kind_of[1]), req.body.artist, req.body.kind, albumCover])
         db.unprepare(() => {
 
         })
@@ -145,14 +141,14 @@ function Submit() {
 
 
         })
-        if (reqLocal.body.email !== undefined) {
-            console.log(reqLocal.body.email)
+        if (req.body.email !== undefined) {
+            console.log(req.body.email)
             transporter.sendMail({
                 from: '"xiey0" <xiey0@qq.com>',
-                to: reqLocal.body.email,
+                to: req.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)
+                html: fs.readFileSync("./Template.html", "utf8").toString().replace("{song_name}", req.body.name).replace("{href_link}", "https://andyxie.cn:4000/player?play=" + uuid)
             }).then((result) => {
                 console.log("Message sent: %s", result.messageId)
 
@@ -185,26 +181,26 @@ function SubmitWrapper(req, res) {
 
         if (result.length === 0) {
             let repeat = false;
-            currentTask.forEach((item) => {
+            for (const item of currentTask) {
                 if (req.body.name === item.name) {
                     if (req.body.albumName === item.albumName) {
                         if (req.body.kind === item.kind) {
-                            repeat = true;
+
                             res.header("Access-Control-Allow-Origin", "*");
                             res.statusCode = 500
                             res.end("傻逼,重复了。请在盲目上传之前看看库里有没有好么傻逼?")
+                            return
 
                         }
                     }
                 }
-            })
-            if (repeat) {
-                return
             }
-            req_o = req;
-            res_o = res;
+
+
             if (req.body.file !== undefined) {
-                queue.add(Submit)
+                queue.add(() => {
+                    Submit(req, res)
+                })
                 currentTask.push({
                     name: req.body.name, albumName: req.body.albumName, kind: req.body.kind, artist: req.body.artist,
                 })
@@ -333,8 +329,8 @@ app.options('/ncm/url', function (req, res) {
     res.end()
 })
 app.post("/ncm/url", function (req, res) {
-    if (req.body.id!==undefined && req.body.kind!==undefined) {
-        try{
+    if (req.body.id !== undefined && req.body.kind !== undefined) {
+        try {
             let id = req.body.id
             fetch(ncmAPIUrl + "/song/download/url/v1?id=" + id + "&level=hires", {
                 headers: {
@@ -351,7 +347,7 @@ app.post("/ncm/url", function (req, res) {
                     req.body.link = result_json.data.url
                     req.body.artist = infos.songs[0].ar[0].name
                     /// Complete
-
+    
 
                     SubmitWrapper(req, res)
 
@@ -362,7 +358,7 @@ app.post("/ncm/url", function (req, res) {
                 }
 
             })
-        }catch(err) {
+        } catch (err) {
             res.status(500).header("Access-Control-Allow-Origin", "*");
             console.log(err)
         }

+ 13 - 2
test.js

@@ -1,2 +1,13 @@
-let sth = "oiuytrtyuioiuygfghjkjhgfvbnm";
-console.log(sth.indexOf("yuioisuygfg"))
+let queue = require('js-queue')
+let queue1 = new queue();
+queue1.autoRun = false;
+
+function print2(){
+    console.log(2);
+}
+queue1.add(print2)
+queue1.add(print2)
+queue1.add(print2)
+queue1.next()
+queue1.next()
+queue1.next()