ptSend/router/index.js
2023-07-01 23:08:30 +08:00

100 lines
2.6 KiB
JavaScript

const Router = require("koa-router")
const {getQqListData} = require("../util/getList/qq")
const utils = require("../util/utils")
const KoaSSEStream = require('koa-sse-stream');
const {dowload} = require("../util/download");
const {addDownList, getDownList, setDownState} = require("../util/sql/download");
const dayjs = require("dayjs")
const router = new Router()
// const dowloadlist = []
// router.get("/test", async (ctx) => {
// let url = ctx.query.url
// await utils.createTorrent(url,'C:\\Users\\SummerTail\\Downloads\\Video\\斗破苍穹.年番.Fights.Break.Sphere.S05E06.2022.2160p.WEB-DL.H265.AAC-ADWeb.torrent').then(value => {
// ctx.body = {
// code: 0,
// msg: "Test",
// data: value
// }
// })
// })
router.get("/getQqList", async (ctx) => {
let url = ctx.query.url
let videoid = url.split("/")
for (let i in videoid) {
if (videoid[i] == "cover") {
videoid = videoid[i + 1].replace(".html")
break
}
}
let list = await getQqListData(url)
ctx.body = list
})
router.get("/startDown", async (ctx) => {
let title = ctx.query.title
let url = ctx.query.url
let save = ctx.query.save
// dowloadlist.push({
// title,url,save
// })
// startDown()
addDownList(title, url, save, new Date().getTime(), 0)
ctx.body = {
code: 0,
msg: "添加成功"
}
})
router.get("/test",async (ctx)=>{
utils.getVideoSpecifyTimeImage("D:/aaa/梦中的那片海/梦中的那片海 第01集.mp4",46,"D:/aaa/梦中的那片海/aaa.jpg")
})
// 连接池
const clientList = [];
// koa-sse-stream 配置
const SSE_CONF = {
maxClients: 5, // 最大连接数
pingInterval: 40000 // 重连时间
}
router.get('/msg', KoaSSEStream(SSE_CONF), ctx => {
// 每次连接会进行一个 push
clientList.push(ctx.sse);
if (clientList.length > 5) {
// 超过5个删除最开始的一个
// todo 浏览器关闭后自动检测删除
clientList.shift()
}
})
let start = false
function startDown(data) {
start = true
dowload(data, async (data2, isok) => {
let name = data2.title
clientList.forEach((i) => {
i.send(isok ? `${name}下载完成` : data2)
})
if (isok) {
// dowloadlist.shift()
await setDownState(data.id, 1)
start = false
}
})
}
setInterval(async () => {
let dowloadlist = await getDownList()
if (dowloadlist.length != 0 && !start) {
startDown(dowloadlist[0])
} else if (dowloadlist.length == 0) {
start = false
}
}, 1000)
module.exports = router