add sqlite 保存下载历史
This commit is contained in:
parent
95f09a96b8
commit
b439920702
BIN
db/database.db
Normal file
BIN
db/database.db
Normal file
Binary file not shown.
9
index.js
9
index.js
@ -4,6 +4,7 @@ const static = require('koa-static')
|
|||||||
app.use(static("./view/dist"))
|
app.use(static("./view/dist"))
|
||||||
const { koaBody } = require('koa-body');
|
const { koaBody } = require('koa-body');
|
||||||
const KoaSSEStream = require('koa-sse-stream');
|
const KoaSSEStream = require('koa-sse-stream');
|
||||||
|
|
||||||
app.use(koaBody());
|
app.use(koaBody());
|
||||||
app.use(async (ctx, next) => {
|
app.use(async (ctx, next) => {
|
||||||
ctx.set('Access-Control-Allow-Origin', '*');
|
ctx.set('Access-Control-Allow-Origin', '*');
|
||||||
@ -16,10 +17,10 @@ app.use(async (ctx, next) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const index = require("./router/index.js")
|
const index = require("./router/index.js")
|
||||||
app.use(index.routes()).use(index.allowedMethods())
|
app.use(index.routes()).use(index.allowedMethods())
|
||||||
const videoInfo = require("./router/videoInfo.js")
|
const videoInfo = require("./router/videoInfo.js");
|
||||||
app.use(videoInfo.routes()).use(videoInfo.allowedMethods())
|
|
||||||
|
|
||||||
app.listen(3050, "0.0.0.0");
|
app.use(videoInfo.routes()).use(videoInfo.allowedMethods())
|
||||||
|
app.listen(3050, "0.0.0.0");
|
||||||
|
console.log("link: http://127.0.0.1:3050")
|
@ -11,6 +11,7 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.4.0",
|
"axios": "^1.4.0",
|
||||||
|
"dayjs": "^1.11.8",
|
||||||
"koa": "^2.14.2",
|
"koa": "^2.14.2",
|
||||||
"koa-body": "^6.0.1",
|
"koa-body": "^6.0.1",
|
||||||
"koa-router": "^12.0.0",
|
"koa-router": "^12.0.0",
|
||||||
|
@ -4,6 +4,9 @@ dependencies:
|
|||||||
axios:
|
axios:
|
||||||
specifier: ^1.4.0
|
specifier: ^1.4.0
|
||||||
version: 1.4.0
|
version: 1.4.0
|
||||||
|
dayjs:
|
||||||
|
specifier: ^1.11.8
|
||||||
|
version: 1.11.8
|
||||||
koa:
|
koa:
|
||||||
specifier: ^2.14.2
|
specifier: ^2.14.2
|
||||||
version: 2.14.2
|
version: 2.14.2
|
||||||
@ -618,6 +621,10 @@ packages:
|
|||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/dayjs@1.11.8:
|
||||||
|
resolution: {integrity: sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/debug@3.2.7:
|
/debug@3.2.7:
|
||||||
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
|
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -2,9 +2,10 @@ const Router = require("koa-router")
|
|||||||
const { getQqListData } = require("../util/getList/qq")
|
const { getQqListData } = require("../util/getList/qq")
|
||||||
const KoaSSEStream = require('koa-sse-stream');
|
const KoaSSEStream = require('koa-sse-stream');
|
||||||
const { dowload } = require("../util/download");
|
const { dowload } = require("../util/download");
|
||||||
|
const { addDownList, getDownList, setDownState } = require("../util/sql/download");
|
||||||
|
const dayjs = require("dayjs")
|
||||||
const router = new Router()
|
const router = new Router()
|
||||||
const dowloadlist = []
|
// const dowloadlist = []
|
||||||
|
|
||||||
router.get("/getQqList",async (ctx)=>{
|
router.get("/getQqList",async (ctx)=>{
|
||||||
let url = ctx.query.url
|
let url = ctx.query.url
|
||||||
@ -16,10 +17,11 @@ router.get("/startDown",async (ctx)=>{
|
|||||||
let title = ctx.query.title
|
let title = ctx.query.title
|
||||||
let url = ctx.query.url
|
let url = ctx.query.url
|
||||||
let save = ctx.query.save
|
let save = ctx.query.save
|
||||||
dowloadlist.push({
|
// dowloadlist.push({
|
||||||
title,url,save
|
// title,url,save
|
||||||
})
|
// })
|
||||||
// startDown()
|
// startDown()
|
||||||
|
addDownList(title,url,save,new Date().getTime(),0)
|
||||||
ctx.body={
|
ctx.body={
|
||||||
code:0,
|
code:0,
|
||||||
msg:"添加成功"
|
msg:"添加成功"
|
||||||
@ -36,27 +38,31 @@ router.get('/msg', KoaSSEStream(SSE_CONF), ctx => {
|
|||||||
// 每次连接会进行一个 push
|
// 每次连接会进行一个 push
|
||||||
clientList.push(ctx.sse);
|
clientList.push(ctx.sse);
|
||||||
if(clientList.length > 5){
|
if(clientList.length > 5){
|
||||||
// 删除
|
// 超过5个删除最开始的一个
|
||||||
|
// todo 浏览器关闭后自动检测删除
|
||||||
clientList.shift()
|
clientList.shift()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
let start = false
|
let start = false
|
||||||
function startDown(){
|
function startDown(data){
|
||||||
start = true
|
start = true
|
||||||
dowload(dowloadlist[0],(data,isok)=>{
|
dowload(data,async (data2,isok)=>{
|
||||||
let name = dowloadlist[0].title
|
let name = data2.title
|
||||||
clientList.forEach((i)=>{
|
clientList.forEach((i)=>{
|
||||||
i.send(isok ? `${name}下载完成` : data )
|
i.send(isok ? `${name}下载完成` : data2 )
|
||||||
})
|
})
|
||||||
if(isok){
|
if(isok){
|
||||||
dowloadlist.shift()
|
// dowloadlist.shift()
|
||||||
|
await setDownState(data.id,1)
|
||||||
start = false
|
start = false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
setInterval(()=>{
|
setInterval(async ()=>{
|
||||||
|
let dowloadlist = await getDownList()
|
||||||
|
console.log(dowloadlist)
|
||||||
if(dowloadlist.length != 0 && !start){
|
if(dowloadlist.length != 0 && !start){
|
||||||
startDown()
|
startDown(dowloadlist[0])
|
||||||
}else if(dowloadlist.length == 0){
|
}else if(dowloadlist.length == 0){
|
||||||
start = false
|
start = false
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ router.get("/search",async (ctx)=>{
|
|||||||
ctx.body = info
|
ctx.body = info
|
||||||
})
|
})
|
||||||
|
|
||||||
route.get("/getinfo",async (ctx)=>{
|
router.get("/getinfo",async (ctx)=>{
|
||||||
let url = ctx.query.url
|
let url = ctx.query.url
|
||||||
let info = await getinfo(url)
|
let info = await getinfo(url)
|
||||||
ctx.body = info
|
ctx.body = info
|
||||||
|
@ -1,15 +1,39 @@
|
|||||||
const sqlite = require("sqlite3")
|
const sqlite = require("sqlite3")
|
||||||
const path = require("path")
|
const path = require("path");
|
||||||
database = new sqlite.Database(path.join(__dirname,"/db"), function(e) {
|
const { cwd } = require("process");
|
||||||
|
let p = path.join(cwd(),"/db/database.db")
|
||||||
|
database = new sqlite.Database(p, function(err) {
|
||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
});
|
});
|
||||||
|
|
||||||
function run(){
|
function run(){
|
||||||
database.run(...arguments)
|
let args = arguments
|
||||||
|
console.log(args)
|
||||||
|
return new Promise((res,err)=>{
|
||||||
|
database.run(...args,(error)=>{
|
||||||
|
if(error){
|
||||||
|
err(error)
|
||||||
|
}else{
|
||||||
|
res("添加成功")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function
|
function getAll(sql){
|
||||||
|
let args = arguments
|
||||||
|
return new Promise((res,err)=>{
|
||||||
|
database.all(...args,function (error,data){
|
||||||
|
if(error){
|
||||||
|
err(error)
|
||||||
|
}else{
|
||||||
|
res(data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
run
|
run,
|
||||||
|
getAll
|
||||||
}
|
}
|
@ -1,6 +1,28 @@
|
|||||||
const { run } = require("./base");
|
const { run, getAll } = require("./base");
|
||||||
|
|
||||||
function addDownList(title,url,save){
|
function addDownList(title,url,save,downDate,isOk){
|
||||||
let sql = `insert into download(title,url,save) value(?,?,?)`
|
let sql = `insert into download(title,url,save,downDate,isOk) values(?,?,?,?,?)`
|
||||||
run(sql,title,url,save)
|
run(sql,title,url,save,downDate,isOk)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getDownList(){
|
||||||
|
let sql = `select * from download where isOk == 0`
|
||||||
|
try{
|
||||||
|
let list = await getAll(sql)
|
||||||
|
return list
|
||||||
|
}catch(err){
|
||||||
|
console.error(err)
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function setDownState(id,state){
|
||||||
|
let sql = `update download set isOk = ? where id = ?`
|
||||||
|
await run(sql,state,id)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
addDownList,
|
||||||
|
getDownList,
|
||||||
|
setDownState
|
||||||
}
|
}
|
@ -1,16 +1,34 @@
|
|||||||
const { run } = require("./base");
|
const { run } = require("./base");
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path")
|
||||||
function initTable(){
|
function initTable(){
|
||||||
// 创建下载列表
|
// 创建下载列表
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
* title 剧集标题
|
||||||
|
* url 剧集链接
|
||||||
|
* save 保存地址
|
||||||
|
* downDate 添加下载日期 时间戳
|
||||||
|
* isOk 是否下载完成 0 未完成 1 完成
|
||||||
|
*/
|
||||||
let sql = `create table download (
|
let sql = `create table download (
|
||||||
id INT PRIMARY KEY NOT NULL autoincrement,
|
id INT PRIMARY KEY NOT NULL autoincrement,
|
||||||
title VARCHAR(255) not null,
|
title VARCHAR(255) not null,
|
||||||
url varchar(255) not null,
|
url varchar(255) not null,
|
||||||
save varcahr(255) not null
|
save varcahr(255) not null,
|
||||||
|
downDate INTEGER not null,
|
||||||
|
isOk INTEGER not null
|
||||||
)`
|
)`
|
||||||
run(sql)
|
run(sql)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function init(){
|
||||||
|
let isexists = fs.existsSync(path.join(__dirname,"/db/database.db"))
|
||||||
|
if(!isexists){
|
||||||
|
initTable()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
module.exports = {
|
module.exports = {
|
||||||
initTable
|
init
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user