add 优化代码,新增获取腾讯视频播放列表
This commit is contained in:
parent
0c010beb54
commit
b48ccbf84d
BIN
bin/getTencentVideoPlayList.exe
Normal file
BIN
bin/getTencentVideoPlayList.exe
Normal file
Binary file not shown.
@ -18,6 +18,7 @@
|
|||||||
"koa-sse-stream": "^0.2.0",
|
"koa-sse-stream": "^0.2.0",
|
||||||
"koa-static": "^5.0.0",
|
"koa-static": "^5.0.0",
|
||||||
"koa-websocket": "^7.0.0",
|
"koa-websocket": "^7.0.0",
|
||||||
|
"process": "^0.11.10",
|
||||||
"puppeteer": "^20.7.1",
|
"puppeteer": "^20.7.1",
|
||||||
"sqlite3": "^5.1.6"
|
"sqlite3": "^5.1.6"
|
||||||
},
|
},
|
||||||
|
@ -4,10 +4,9 @@ const utils = require("../util/utils")
|
|||||||
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 {addDownList, getDownList, setDownState} = require("../util/sql/download");
|
||||||
const dayjs = require("dayjs")
|
|
||||||
const {getMediaInfo} = require("../util/utils");
|
const {getMediaInfo} = require("../util/utils");
|
||||||
const router = new Router()
|
const router = new Router()
|
||||||
// const dowloadlist = []
|
// const download = []
|
||||||
|
|
||||||
router.get("/getMediaInfo", async (ctx) => {
|
router.get("/getMediaInfo", async (ctx) => {
|
||||||
let url = ctx.query.filePath
|
let url = ctx.query.filePath
|
||||||
@ -26,22 +25,21 @@ 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 videoid = url.split("/")
|
let video_id = url.split("/")
|
||||||
for (let i in videoid) {
|
for (let i in video_id) {
|
||||||
if (videoid[i] == "cover") {
|
if (video_id[i] === "cover") {
|
||||||
videoid = videoid[i + 1].replace(".html")
|
video_id = video_id[i + 1].replace(".html")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let list = await getQqListData(url)
|
ctx.body = await getQqListData(url)
|
||||||
ctx.body = list
|
|
||||||
})
|
})
|
||||||
|
|
||||||
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
|
||||||
let save = ctx.query.save
|
let save = ctx.query.save
|
||||||
// dowloadlist.push({
|
// download.push({
|
||||||
// title,url,save
|
// title,url,save
|
||||||
// })
|
// })
|
||||||
// startDown()
|
// startDown()
|
||||||
@ -53,7 +51,12 @@ router.get("/startDown", async (ctx) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
router.get("/test", async (ctx) => {
|
router.get("/test", async (ctx) => {
|
||||||
utils.getVideoSpecifyTimeImage("D:/aaa/梦中的那片海/梦中的那片海 第01集.mp4", 46, "D:/aaa/梦中的那片海/aaa.jpg")
|
let rep = await utils.getTencentVideoPlayList('mzc00200t7i1qwp')
|
||||||
|
ctx.body = {
|
||||||
|
code: 0,
|
||||||
|
msg: "test",
|
||||||
|
data: rep
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -92,9 +95,9 @@ function startDown(data) {
|
|||||||
|
|
||||||
setInterval(async () => {
|
setInterval(async () => {
|
||||||
let dowloadlist = await getDownList()
|
let dowloadlist = await getDownList()
|
||||||
if (dowloadlist.length != 0 && !start) {
|
if (dowloadlist.length !== 0 && !start) {
|
||||||
startDown(dowloadlist[0])
|
startDown(dowloadlist[0])
|
||||||
} else if (dowloadlist.length == 0) {
|
} else if (dowloadlist.length === 0) {
|
||||||
start = false
|
start = false
|
||||||
}
|
}
|
||||||
}, 1000)
|
}, 1000)
|
||||||
|
@ -22,7 +22,7 @@ async function getQqListData(url) {
|
|||||||
console.log(list)
|
console.log(list)
|
||||||
for (let i of list) {
|
for (let i of list) {
|
||||||
if (i && i.innerText) {
|
if (i && i.innerText) {
|
||||||
if ("全部" == i.innerText.trim()) {
|
if ("全部" === i.innerText.trim()) {
|
||||||
i.click()
|
i.click()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
const {spawn} = require('child_process');
|
const {spawn} = require('child_process');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const { cwd } = require('process');
|
const {cwd} = require('process');
|
||||||
|
|
||||||
|
|
||||||
function seep(time) {
|
function seep(time) {
|
||||||
@ -11,19 +11,33 @@ function seep(time) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取腾讯视频播放列表
|
||||||
|
* @param {String}cid 视频id
|
||||||
|
* @returns {JSON} 播放列表等参数
|
||||||
|
*/
|
||||||
|
function getTencentVideoPlayList(cid) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const lux = spawn("./bin/getTencentVideoPlayList.exe", [cid, 'vversion_name=8.2.95;', 1])
|
||||||
|
lux.stdout.on('data', (data) => {
|
||||||
|
resolve(JSON.parse(String(data)))
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取视频截图 (目前不可用,不好使)
|
* 获取视频截图
|
||||||
* @param {String} filePath 文件绝对路径
|
* @param {String} filePath 文件绝对路径
|
||||||
* @param {number} seconds 时间
|
* @param {number} seconds 时间
|
||||||
* @param {Promise<String>} save 保存绝对路径(含文件名)
|
* @param {string} save 保存绝对路径(含文件名)
|
||||||
* @returns {Promise<String>} 文件位置(待定)
|
* @returns {Promise<String>} 文件位置(待定)
|
||||||
*/
|
*/
|
||||||
function getVideoSpecifyTimeImage(filePath, seconds, save) {
|
function getVideoSpecifyTimeImage(filePath, seconds, save) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const lux = spawn("ffmpeg", ['-ss',`${formatSeconds(seconds)}`,'-i',filePath,'-vframes','1',save],{
|
const lux = spawn("ffmpeg", ['-ss', `${formatSeconds(seconds)}`, '-i', filePath, '-vframes', '1', save], {
|
||||||
env:{
|
env: {
|
||||||
path:path.join(cwd(),'./bin/')
|
path: path.join(cwd(), './bin/')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
lux.stdout.on('data', (data) => {
|
lux.stdout.on('data', (data) => {
|
||||||
@ -34,7 +48,7 @@ function getVideoSpecifyTimeImage(filePath, seconds, save) {
|
|||||||
console.log(code.toString())
|
console.log(code.toString())
|
||||||
resolve(save)
|
resolve(save)
|
||||||
});
|
});
|
||||||
lux.stderr.on("data",(err)=>{
|
lux.stderr.on("data", (err) => {
|
||||||
console.log(String(err))
|
console.log(String(err))
|
||||||
})
|
})
|
||||||
console.log(lux)
|
console.log(lux)
|
||||||
@ -68,7 +82,7 @@ function createTorrent(filePath, save) {
|
|||||||
lux.stdout.on('data', (data) => {
|
lux.stdout.on('data', (data) => {
|
||||||
response += data
|
response += data
|
||||||
});
|
});
|
||||||
lux.stdout.on('close', (code) => {
|
lux.stdout.on('close', () => {
|
||||||
resolve(response)
|
resolve(response)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -76,9 +90,9 @@ function createTorrent(filePath, save) {
|
|||||||
|
|
||||||
|
|
||||||
function dow(info, callback) {
|
function dow(info, callback) {
|
||||||
const lux = spawn("yt-dlp", ['--cookies-from-browser', 'chrome', '-P', info.save, '-o', info.title + '.mp4', info.url],{
|
const lux = spawn("yt-dlp", ['--cookies-from-browser', 'chrome', '-P', info.save, '-o', info.title + '.mp4', info.url], {
|
||||||
env:{
|
env: {
|
||||||
path:path.join(cwd(),'./bin/')
|
path: path.join(cwd(), './bin/')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
lux.stdout.on('data', (data) => {
|
lux.stdout.on('data', (data) => {
|
||||||
@ -133,5 +147,6 @@ module.exports = {
|
|||||||
dow,
|
dow,
|
||||||
getVideoSpecifyTimeImage,
|
getVideoSpecifyTimeImage,
|
||||||
getMediaInfo,
|
getMediaInfo,
|
||||||
createTorrent
|
createTorrent,
|
||||||
|
getTencentVideoPlayList
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user