Merge branches 'master' and 'master' of https://git.theluyuan.com/luyuan/ptSend

This commit is contained in:
theluyuan 2023-08-07 19:59:46 +08:00
commit 4822d09dba
9 changed files with 144 additions and 35 deletions

5
config.json Normal file
View File

@ -0,0 +1,5 @@
{
"downloadPath": "",
"vCookies": "e",
"torrentSavePath": ""
}

View File

@ -2,7 +2,7 @@ const Koa = require('koa');
const app = new Koa(); const app = new Koa();
const static = require('koa-static') 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());
@ -20,7 +20,9 @@ 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");
const config = require("./router/config.js")
app.use(config.routes()).use(config.allowedMethods())
app.use(videoInfo.routes()).use(videoInfo.allowedMethods()) app.use(videoInfo.routes()).use(videoInfo.allowedMethods())
app.listen(3050, "0.0.0.0"); app.listen(3050, "0.0.0.0");

43
router/config.js Normal file
View File

@ -0,0 +1,43 @@
/*
配置文件获取修改接口
*/
const Router = require("koa-router")
const config = require("../util/config/config")
const router = new Router({
prefix: "/config"
})
/**
* 获取配置文件接口
*/
router.get('/getConfig', async (ctx) => {
let json = config.getConfig();
const b = json === '{}'
ctx.body = {
code: b ? -1 : 0,
msg: b ? 'error' : "ok",
data: json
}
})
/**
* 设置配置文件接口
*/
router.post('/setConfig', async (req, res) => {
if (req.request.body === undefined) {
req.body = {
code: -1,
msg: "提交内容不能为空"
}
return
}
let b = config.setConfig(req.request.body);
req.body = {
code: b ? 0 : -2,
msg: b ? 'ok' : "error",
}
})
module.exports = router

View File

@ -9,7 +9,10 @@ const axios = require("axios");
const router = new Router() const router = new Router()
// const download = [] // const download = []
// 豆瓣img代理
/**
* 豆瓣img代理
*/
router.get("/doubanImg",async (ctx)=>{ router.get("/doubanImg",async (ctx)=>{
let url = ctx.query.url let url = ctx.query.url
let res = await axios.get(url,{ let res = await axios.get(url,{
@ -23,6 +26,9 @@ router.get("/doubanImg",async (ctx)=>{
}) })
/**
* 功能测试接口
*/
router.get("/test", async (ctx) => { router.get("/test", async (ctx) => {
// let res = await utils.uploadImg('C:/Users/11629/Desktop/80032464_p0.jpg') // let res = await utils.uploadImg('C:/Users/11629/Desktop/80032464_p0.jpg')
// ctx.body = { // ctx.body = {
@ -34,7 +40,9 @@ router.get("/test", async (ctx) => {
}) })
/**
* 视频文件信息获取
*/
router.get("/getMediaInfo", async (ctx) => { router.get("/getMediaInfo", async (ctx) => {
let url = ctx.query.filePath let url = ctx.query.filePath
let data let data
@ -50,6 +58,9 @@ router.get("/getMediaInfo", async (ctx) => {
} }
}) })
/**
* 不知道干嘛的
*/
router.get("/getQqList", async (ctx) => { router.get("/getQqList", async (ctx) => {
let url = ctx.query.url let url = ctx.query.url
let video_id = url.split("/") let video_id = url.split("/")
@ -62,6 +73,9 @@ router.get("/getQqList", async (ctx) => {
ctx.body = await getQqListData(url) ctx.body = await getQqListData(url)
}) })
/**
* 不知道干嘛的
*/
router.get("/startDown", async (ctx) => { 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
@ -86,6 +100,10 @@ const SSE_CONF = {
maxClients: 5, // 最大连接数 maxClients: 5, // 最大连接数
pingInterval: 40000 // 重连时间 pingInterval: 40000 // 重连时间
} }
/**
* 还是不知道干嘛的
*/
router.get('/msg', KoaSSEStream(SSE_CONF), ctx => { router.get('/msg', KoaSSEStream(SSE_CONF), ctx => {
// 每次连接会进行一个 push // 每次连接会进行一个 push
clientList.push(ctx.sse); clientList.push(ctx.sse);
@ -120,4 +138,4 @@ let start = false
// start = false // start = false
// } // }
// }, 1000) // }, 1000)
module.exports = router module.exports = router

View File

@ -1,5 +1,5 @@
const Router = require("koa-router") const Router = require("koa-router")
const { serach, gen_douban } = require("../util/ptgen") const {search, gen_douban} = require("../util/ptgen")
const axios = require("axios") const axios = require("axios")
const cheerio = require("cheerio"); const cheerio = require("cheerio");
const {addSub, getSub, delSub} = require("../util/sql/video"); // HTML页面解析 const {addSub, getSub, delSub} = require("../util/sql/video"); // HTML页面解析
@ -8,24 +8,18 @@ const router = new Router({
prefix: "/videoInfo" prefix: "/videoInfo"
}) })
/**
router.get("/search", async (ctx) => { * 豆瓣搜索
let name = ctx.query.name */
ctx.body = await serach(name)
})
// router.get("/getinfo",async (ctx)=>{
// let url = ctx.query.url
// let info = await getinfo(url)
// ctx.body = info
// })
router.get("/searchVideo", async (ctx) => { router.get("/searchVideo", async (ctx) => {
let name = ctx.query.name let name = ctx.query.name
ctx.body = await serach(name) ctx.body = await search(name)
}) })
/**
* 获取豆瓣描述
*/
router.get("/getVideoInfo", async (ctx) => { router.get("/getVideoInfo", async (ctx) => {
let id = ctx.query.id let id = ctx.query.id
if (!id) { if (!id) {
@ -36,31 +30,39 @@ router.get("/getVideoInfo", async (ctx) => {
}) })
/**
* 添加订阅
*/
router.post("/addSubscribe", async (ctx) => { router.post("/addSubscribe", async (ctx) => {
// console.log(ctx.request.body) // console.log(ctx.request.body)
let data = ctx.request.body let data = ctx.request.body
try { try {
let r = await addSub(data) let r = await addSub(data)
if(r){ if (r) {
ctx.body = "订阅已存在" ctx.body = "订阅已存在"
}else{ } else {
ctx.body = "添加成功" ctx.body = "添加成功"
} }
}catch { } catch {
ctx.body = "添加失败" ctx.body = "添加失败"
} }
}) })
router.get("/getSubscribe",async (ctx)=>{ /**
let list = await getSub() * 获取订阅列表
ctx.body = list */
router.get("/getSubscribe", async (ctx) => {
ctx.body = await getSub()
}) })
/**
* 从imdb获取影视英文名称
*/
router.get("/getImdbName", async (ctx) => { router.get("/getImdbName", async (ctx) => {
let res = await axios.get(ctx.query.url, { let res = await axios.get(ctx.query.url, {
proxy: false, proxy: false,
headers:{ headers: {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67" "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67"
} }
}) })
@ -70,13 +72,22 @@ router.get("/getImdbName", async (ctx) => {
ctx.body = $("h1").text() ctx.body = $("h1").text()
}) })
router.get("/delSubscribe",async (ctx)=>{ /**
* 删除订阅任务
*/
router.get("/delSubscribe", async (ctx) => {
try { try {
await delSub(ctx.query.id) await delSub(ctx.query.id)
ctx.body = "删除成功" ctx.body = {
}catch { code: 0,
ctx.body = "删除失败" msg: "删除成功"
}
} catch {
ctx.body = {
code: 0,
msg: "删除失败"
}
} }
}) })
module.exports = router module.exports = router

31
util/config/config.js Normal file
View File

@ -0,0 +1,31 @@
"use strict";
const fs = require("fs");
const {cwd} = require("process");
const path = require('path');
let configPath = path.join(cwd(), "/config.json");
/**
* 获取配置文件
* @returns {JSON}
*/
function getConfig() {
let file = fs.readFileSync(configPath);
return JSON.parse(file);
}
/**
* 保存配置文件
* @param config{String}
* @return {boolean}
*/
function setConfig(config) {
const data = JSON.stringify(config, null, 2)
fs.writeFileSync("config.json", data);
return JSON.stringify(getConfig(), null, 2) === data
}
module.exports = {
getConfig,
setConfig
}

File diff suppressed because one or more lines are too long

View File

@ -6,8 +6,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue</title> <title>Vite + Vue</title>
<meta name="referrer" content="never"> <meta name="referrer" content="never">
<script type="module" crossorigin src="./assets/index-b619957d.js"></script> <script type="module" crossorigin src="./assets/index-ccfbebb1.js"></script>
<link rel="stylesheet" href="./assets/index-6ef103ac.css"> <link rel="stylesheet" href="./assets/index-e0450ab1.css">
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

View File

@ -128,7 +128,7 @@ async function getInfo(id, i) {
vid = id vid = id
img.value = i img.value = i
let res = await getVideoInfo(id) let res = await getVideoInfo(id)
info.value = res.data.format info.value = res.data.format.replace('img1.doubanio','img9.doubanio')
year.value = res.data.year year.value = res.data.year
imdb = res.data.imdb_link || "" imdb = res.data.imdb_link || ""
console.info(res.data.trans_title.length) console.info(res.data.trans_title.length)
@ -239,4 +239,4 @@ async function addsubscribe() {
.image { .image {
width: 100%; width: 100%;
display: block; display: block;
}</style> }</style>