axcwg 4 月之前
父节点
当前提交
5bbcf29e3e
共有 3 个文件被更改,包括 111 次插入20 次删除
  1. 39 20
      main.js
  2. 71 0
      package-lock.json
  3. 1 0
      package.json

+ 39 - 20
main.js

@@ -3,6 +3,8 @@ const express = require('express');
 const app = express();
 const app_serve = express();
 const mysql = require('mysql2')
+const SendSeekable = require('send-seekable');
+
 const pool = mysql.createPool({
     keepAliveInitialDelay: 10000, enableKeepAlive: true,
 })
@@ -20,6 +22,7 @@ app.use(express.json());
 
 app_serve.use(bodyParser.json({"limit": "200mb"}));
 app_serve.use(express.json());
+app_serve.use(SendSeekable)
 
 const transporter = nodemailer.createTransport({
     host: 'smtp.qq.com',
@@ -106,7 +109,7 @@ app.post('/submit', function (req, res) {
                 subject: "你的音频已处理完成。",
                 text: "你的音频已处理完成。",
                 html:
-                    "<h1>哈喽👋</h1><p>你在伴奏网网站上传的音频已经处理完毕,快来下载吧!<br/>下载链接:<br/><a href='https://andyxie.cn:8201/"+uuid+"'>这里</a><br/><br/>" +
+                    "<h1>哈喽👋</h1><p>你在伴奏网网站上传的音频已经处理完毕,快来下载吧!<br/>下载链接:<br/><a href='https://andyxie.cn:8201/" + uuid + "'>这里</a><br/><br/>" +
                     "与其他网站不一样,本邮件发送邮箱真的有个伞兵在后面!<br/>" +
                     "请随意骚扰!</p>"
             }).then((result) => {
@@ -152,21 +155,36 @@ app.options('/search_api', function (req, res) {
     res.header("Access-Control-Allow-Headers", "Content-Type");
     res.end()
 })
-app_serve.get('/:uuid', function (req, res) {
+app.get("/getSingle", function (req, res) {
+    if (req.query.id) {
+        db.execute(`SELECT song_name, album_name, artist
+                    FROM instrunet_entry
+                    WHERE uuid = "${req.query.id}"`, function (err, rows) {
+            if (err) {
+                console.log(err);
+
+            }
+            res.contentType("application/json");
+            res.header("Access-Control-Allow-Origin", "*");
+            res.header("Access-Control-Allow-Headers", "Content-Type");
+            res.end(JSON.stringify(rows[0]));
+        })
+
+    }else{
+        res.contentType("application/json");
+        res.header("Access-Control-Allow-Origin", "*");
+        res.header("Access-Control-Allow-Headers", "Content-Type");
+        res.end("{}")
+
+    }
+})
+app_serve.get('/:uuid', function (req, res, next) {
     async function Provider(err, rows) {
         try {
             res.header("Access-Control-Allow-Origin", "*");
             /** @type {ArrayBuffer}*/
             let buffer = rows[0].databinary
-            res.setHeader('Content-Length', buffer.byteLength);
-            db.execute(`SELECT song_name
-                        FROM instrunet_entry
-                        WHERE uuid = '${req.params.uuid}'`, (err, row) => {
-
-                res.setHeader('Content-Disposition', 'attachment; filename=' + encodeURI(row[0].song_name) + '.mp3');
-                res.send(buffer)
-                res.end()
-            })
+            res.sendSeekable(buffer)
             db.unprepare()
 
 
@@ -183,14 +201,15 @@ app_serve.get('/:uuid', function (req, res) {
     db.unprepare()
 })
 
-https.createServer({
-    key: fs.readFileSync('andyxie.cn.key'), cert: fs.readFileSync('andyxie.cn.pem')
-}, app).listen(8080)
-
-// app.listen(8080)
-// app_serve.listen(8079)
+//
+// https.createServer({
+//     key: fs.readFileSync('andyxie.cn.key'), cert: fs.readFileSync('andyxie.cn.pem')
+// }, app).listen(8080)
 
-https.createServer({
-    key: fs.readFileSync('andyxie.cn.key'), cert: fs.readFileSync('andyxie.cn.pem')
+app.listen(8080)
+app_serve.listen(8079)
 
-}, app_serve).listen(8079)
+// https.createServer({
+//     key: fs.readFileSync('andyxie.cn.key'), cert: fs.readFileSync('andyxie.cn.pem')
+//
+// }, app_serve).listen(8079)

+ 71 - 0
package-lock.json

@@ -16,6 +16,7 @@
         "mysql2": "^3.11.5",
         "node-run-cmd": "^1.0.1",
         "nodemailer": "^6.9.16",
+        "send-seekable": "^1.0.4",
         "sqlite3": "^5.1.7",
         "swagger-jsdoc": "^6.2.8",
         "swagger-ui-express": "^5.0.1"
@@ -531,6 +532,11 @@
       "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
       "license": "MIT"
     },
+    "node_modules/core-util-is": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+    },
     "node_modules/debug": {
       "version": "4.3.7",
       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
@@ -1274,6 +1280,11 @@
       "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
       "license": "MIT"
     },
+    "node_modules/isarray": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+      "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+    },
     "node_modules/isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -1923,6 +1934,14 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/range-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/range-stream/-/range-stream-1.1.0.tgz",
+      "integrity": "sha512-JUhZBLYZAI9Mfq2PrxfbDwmgnHJe+e1HttLZ4v9nwHqN6ADeQFK3TgfS9BYnf/zCpHpVAvG7UdQ+bT9440UdOQ==",
+      "dependencies": {
+        "through2": "^0.6.3"
+      }
+    },
     "node_modules/raw-body": {
       "version": "2.5.2",
       "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
@@ -2068,6 +2087,19 @@
         "node": ">= 0.8.0"
       }
     },
+    "node_modules/send-seekable": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/send-seekable/-/send-seekable-1.0.4.tgz",
+      "integrity": "sha512-sz4mLTL/hyqnjUZR+bl8a1aKZgrL5Zl0cgpICxWobbHPVLMSGm2cowwdbIFHmFq0PKZWZmbHMy/3DtZlJt7aAg==",
+      "dependencies": {
+        "range-parser": "~1.2.0",
+        "range-stream": "~1.1.0",
+        "simple-bufferstream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
     "node_modules/send/node_modules/debug": {
       "version": "2.6.9",
       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -2167,6 +2199,12 @@
       "license": "ISC",
       "optional": true
     },
+    "node_modules/simple-bufferstream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/simple-bufferstream/-/simple-bufferstream-1.0.0.tgz",
+      "integrity": "sha512-GIEqw+xZ2IzWau5NgAPSAc1u5bBvVdhv5oKDhFxjt0VVvqiSvOkcXU4p0q8Lhv17GDTycsItLtWvs1Degi02ag==",
+      "deprecated": "no longer maintained"
+    },
     "node_modules/simple-concat": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
@@ -2489,6 +2527,31 @@
         "node": ">=8"
       }
     },
+    "node_modules/through2": {
+      "version": "0.6.5",
+      "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+      "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
+      "dependencies": {
+        "readable-stream": ">=1.0.33-1 <1.1.0-0",
+        "xtend": ">=4.0.0 <4.1.0-0"
+      }
+    },
+    "node_modules/through2/node_modules/readable-stream": {
+      "version": "1.0.34",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+      "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.1",
+        "isarray": "0.0.1",
+        "string_decoder": "~0.10.x"
+      }
+    },
+    "node_modules/through2/node_modules/string_decoder": {
+      "version": "0.10.31",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+      "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+    },
     "node_modules/toidentifier": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -2617,6 +2680,14 @@
       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
       "license": "ISC"
     },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
     "node_modules/yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",

+ 1 - 0
package.json

@@ -17,6 +17,7 @@
     "mysql2": "^3.11.5",
     "node-run-cmd": "^1.0.1",
     "nodemailer": "^6.9.16",
+    "send-seekable": "^1.0.4",
     "sqlite3": "^5.1.7",
     "swagger-jsdoc": "^6.2.8",
     "swagger-ui-express": "^5.0.1"