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