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 {getMediaInfo} = require("../util/utils"); const axios = require("axios"); const router = new Router() // const download = [] /** * 豆瓣img代理 */ router.get("/doubanImg",async (ctx)=>{ let url = ctx.query.url let res = await axios.get(url,{ proxy:false, headers:{ Referer: "https://movie.douban.com/" }, responseType:"stream" }) ctx.body = res.data }) /** * 功能测试接口 */ router.get("/test", async (ctx) => { // let res = await utils.uploadImg('C:/Users/11629/Desktop/80032464_p0.jpg') // ctx.body = { // code: 0, // msg: "test", // data: res // } global.start = true }) /** * 视频文件信息获取 */ router.get("/getMediaInfo", async (ctx) => { let url = ctx.query.filePath let data await getMediaInfo(url).then(value => { data = value; }) let verify = (data.media === null) console.info(verify) ctx.body = { code: verify ? -1 : 0, msg: verify ? "读取文件失败" : "", data: data } }) /** * 不知道干嘛的 */ router.get("/getQqList", async (ctx) => { let url = ctx.query.url let video_id = url.split("/") for (let i in video_id) { if (video_id[i] === "cover") { video_id = video_id[i + 1].replace(".html") break } } ctx.body = await getQqListData(url) }) /** * 不知道干嘛的 */ router.get("/startDown", async (ctx) => { let title = ctx.query.title let url = ctx.query.url let save = ctx.query.save // download.push({ // title,url,save // }) // startDown() addDownList(title, url, save, new Date().getTime(), 0) ctx.body = { code: 0, msg: "添加成功" } }) // 连接池 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