|
@@ -1,5 +1,4 @@
|
|
let argv = require('minimist')(process.argv.slice(2));
|
|
let argv = require('minimist')(process.argv.slice(2));
|
|
-const cron = require("node-cron");
|
|
|
|
const fs = require('fs');
|
|
const fs = require('fs');
|
|
const express = require('express');
|
|
const express = require('express');
|
|
const app = express();
|
|
const app = express();
|
|
@@ -9,7 +8,13 @@ const pool = mysql.createPool({
|
|
keepAliveInitialDelay: 0, enableKeepAlive: true,
|
|
keepAliveInitialDelay: 0, enableKeepAlive: true,
|
|
})
|
|
})
|
|
const db = mysql.createConnection({
|
|
const db = mysql.createConnection({
|
|
- host: 'mc.andyxie.cn', user: 'instrunet', password: 'Moyingren2015', database: "instrunet_data", pool: pool,enableKeepAlive: true, keepAliveInitialDelay: 0,
|
|
|
|
|
|
+ host: 'mc.andyxie.cn',
|
|
|
|
+ user: 'instrunet',
|
|
|
|
+ password: 'Moyingren2015',
|
|
|
|
+ database: "instrunet_data",
|
|
|
|
+ pool: pool,
|
|
|
|
+ enableKeepAlive: true,
|
|
|
|
+ keepAliveInitialDelay: 0,
|
|
})
|
|
})
|
|
const nodemailer = require('nodemailer')
|
|
const nodemailer = require('nodemailer')
|
|
|
|
|
|
@@ -17,18 +22,12 @@ const bodyParser = require("body-parser");
|
|
const nrc = require('node-run-cmd')
|
|
const nrc = require('node-run-cmd')
|
|
const https = require("node:https");
|
|
const https = require("node:https");
|
|
const {OpenCC} = require("opencc");
|
|
const {OpenCC} = require("opencc");
|
|
-const converter = new OpenCC('s2t.json')
|
|
|
|
|
|
+const converters2t = new OpenCC('s2t.json')
|
|
|
|
+const convertert2s = new OpenCC('t2s.json')
|
|
app.use(bodyParser.json({"limit": "200mb"}));
|
|
app.use(bodyParser.json({"limit": "200mb"}));
|
|
app.use(express.json());
|
|
app.use(express.json());
|
|
app.use(SendSeekable)
|
|
app.use(SendSeekable)
|
|
-let availCache = {}
|
|
|
|
-cron.schedule('* */12 * * *', () => {
|
|
|
|
- availCache = {}
|
|
|
|
-})
|
|
|
|
-cron.schedule('*/30 * * * *', () => {
|
|
|
|
- db.prepare("SELECT 1");
|
|
|
|
|
|
|
|
-})
|
|
|
|
|
|
|
|
const transporter = nodemailer.createTransport({
|
|
const transporter = nodemailer.createTransport({
|
|
host: 'smtp.qq.com', port: 465, secure: true, auth: {
|
|
host: 'smtp.qq.com', port: 465, secure: true, auth: {
|
|
@@ -175,29 +174,40 @@ app.options('/submit', function (req, res) {
|
|
res.end()
|
|
res.end()
|
|
})
|
|
})
|
|
app.post('/search_api', async function (req, res) {
|
|
app.post('/search_api', async function (req, res) {
|
|
- async function OnFetched(err, rows) {
|
|
|
|
- try {
|
|
|
|
- db.execute(`SELECT uuid, song_name, album_name, artist, kind
|
|
|
|
- FROM instrunet_entry
|
|
|
|
- WHERE song_name like '%${(req.body.searchStr)}%'
|
|
|
|
- or album_name like '%${(req.body.searchStr)}%'
|
|
|
|
- or artist like '%${(req.body.searchStr)}%'`, (err, result) => {
|
|
|
|
- res.header("Access-Control-Allow-Origin", "*");
|
|
|
|
- res.end(JSON.stringify(result) === JSON.stringify(rows) ? JSON.stringify(rows) : JSON.stringify(rows.concat(result)));
|
|
|
|
- })
|
|
|
|
|
|
|
|
- } catch (e) {
|
|
|
|
- console.log(e)
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
|
|
|
|
db.execute(`SELECT uuid, song_name, album_name, artist, kind
|
|
db.execute(`SELECT uuid, song_name, album_name, artist, kind
|
|
FROM instrunet_entry
|
|
FROM instrunet_entry
|
|
- WHERE song_name like '%${await converter.convertPromise(req.body.searchStr)}%'
|
|
|
|
- or album_name like '%${await converter.convertPromise(req.body.searchStr)}%'
|
|
|
|
- or artist like '%${await converter.convertPromise(req.body.searchStr)}%'`, OnFetched)
|
|
|
|
- db.unprepare()
|
|
|
|
|
|
+ WHERE song_name like '%${await converters2t.convertPromise(req.body.searchStr)}%'
|
|
|
|
+ or album_name like '%${await converters2t.convertPromise(req.body.searchStr)}%'
|
|
|
|
+ or artist like '%${await converters2t.convertPromise(req.body.searchStr)}%'`, async (err, rowsT) => {
|
|
|
|
+ db.execute(`SELECT uuid, song_name, album_name, artist, kind
|
|
|
|
+ FROM instrunet_entry
|
|
|
|
+ WHERE song_name like '%${await convertert2s.convertPromise(req.body.searchStr)}%'
|
|
|
|
+ or album_name like '%${await convertert2s.convertPromise(req.body.searchStr)}%'
|
|
|
|
+ or artist like '%${await convertert2s.convertPromise(req.body.searchStr)}%'`, (err, rowsS) => {
|
|
|
|
+ try {
|
|
|
|
+ let prepare = [];
|
|
|
|
+ rowsT.forEach(row => {
|
|
|
|
+ prepare = prepare.concat(row);
|
|
|
|
+ })
|
|
|
|
+ rowsS.forEach(row => {
|
|
|
|
+ if (JSON.stringify(prepare).indexOf(JSON.stringify(row)) === -1) {
|
|
|
|
+ prepare = prepare.concat(row);
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ res.header("Access-Control-Allow-Origin", "*");
|
|
|
|
+
|
|
|
|
+ res.end(JSON.stringify(prepare));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ } catch (e) {
|
|
|
|
+ console.log(e)
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+
|
|
})
|
|
})
|
|
app.options('/search_api', function (req, res) {
|
|
app.options('/search_api', function (req, res) {
|
|
res.header("Access-Control-Allow-Origin", "*");
|
|
res.header("Access-Control-Allow-Origin", "*");
|
|
@@ -236,13 +246,11 @@ app.options('/ncm/url', function (req, res) {
|
|
app.post("/ncm/url", function (req, res) {
|
|
app.post("/ncm/url", function (req, res) {
|
|
if (req.body.id) {
|
|
if (req.body.id) {
|
|
let id = req.body.id
|
|
let id = req.body.id
|
|
- fetch(
|
|
|
|
- ncmAPIUrl + "/song/download/url/v1?id=" + id + "&level=hires", {
|
|
|
|
- headers: {
|
|
|
|
- Cookie: "MUSIC_U=0087F9D8E102A1C1661EBE1792412F3351DA64D1BD3D862BA77E45E9024524725F3A1983345D9B5A4014C725D19C069DD71081F6FE3659F9E1FD412DC427FB809FAF7789AEEA10E9DE6F06C58D1959BA209D2A83C3FA753261036C4CFD0D143B6C7748B8A6D2DD5C2E96E75D1E847E4AAE035CB2C86B175D9AFC6A164C522ED76E24AE654740AB6BAF5B29597F7E3B0158B2EC1C37F2688279871873FA7ADAEF8280A059E84C4BBFB9E4F225F9A2065DF652247D5496587A7B1E3D35DB0CD3F825C06FE5BFE5CFEF1770847099704360504B73C9B396E37CECE4F9DDEE6001588C3C4F5B2861D9ADF339FC47DD480858CA800620785EA032215B63B81025304DB3331F384793FF8EE681247E34C7931176F2F618B66C122F0602F1EA15F963E422DEC79C257F3577A197BECE71E316C751C3B9F5F3CD07BFDC0270A287A1BB6576"
|
|
|
|
- }
|
|
|
|
|
|
+ fetch(ncmAPIUrl + "/song/download/url/v1?id=" + id + "&level=hires", {
|
|
|
|
+ headers: {
|
|
|
|
+ Cookie: "MUSIC_U=0087F9D8E102A1C1661EBE1792412F3351DA64D1BD3D862BA77E45E9024524725F3A1983345D9B5A4014C725D19C069DD71081F6FE3659F9E1FD412DC427FB809FAF7789AEEA10E9DE6F06C58D1959BA209D2A83C3FA753261036C4CFD0D143B6C7748B8A6D2DD5C2E96E75D1E847E4AAE035CB2C86B175D9AFC6A164C522ED76E24AE654740AB6BAF5B29597F7E3B0158B2EC1C37F2688279871873FA7ADAEF8280A059E84C4BBFB9E4F225F9A2065DF652247D5496587A7B1E3D35DB0CD3F825C06FE5BFE5CFEF1770847099704360504B73C9B396E37CECE4F9DDEE6001588C3C4F5B2861D9ADF339FC47DD480858CA800620785EA032215B63B81025304DB3331F384793FF8EE681247E34C7931176F2F618B66C122F0602F1EA15F963E422DEC79C257F3577A197BECE71E316C751C3B9F5F3CD07BFDC0270A287A1BB6576"
|
|
}
|
|
}
|
|
- ).then(async result => {
|
|
|
|
|
|
+ }).then(async result => {
|
|
let result_json = await result.json()
|
|
let result_json = await result.json()
|
|
if (result_json.data.url !== null) {
|
|
if (result_json.data.url !== null) {
|
|
let infos = await (await fetch(ncmAPIUrl + "/song/detail?ids=" + id)).json();
|
|
let infos = await (await fetch(ncmAPIUrl + "/song/detail?ids=" + id)).json();
|
|
@@ -276,6 +284,11 @@ app.post("/ncm/url", function (req, res) {
|
|
app.get("/favicon.ico", function (req, res) {
|
|
app.get("/favicon.ico", function (req, res) {
|
|
res.end("");
|
|
res.end("");
|
|
})
|
|
})
|
|
|
|
+let availCache = {};
|
|
|
|
+setInterval(() => {
|
|
|
|
+ console.log(availCache);
|
|
|
|
+
|
|
|
|
+}, 2000)
|
|
|
|
|
|
// Fetch
|
|
// Fetch
|
|
app.get('/:uuid', function (req, res) {
|
|
app.get('/:uuid', function (req, res) {
|