137 lines
3.9 KiB
JavaScript
137 lines
3.9 KiB
JavaScript
const {spawn} = require('child_process');
|
||
const path = require('path');
|
||
const { cwd } = require('process');
|
||
|
||
|
||
function seep(time) {
|
||
return new Promise((res) => {
|
||
setTimeout(() => {
|
||
res()
|
||
}, time)
|
||
})
|
||
}
|
||
|
||
|
||
/**
|
||
* 获取视频截图 (目前不可用,不好使)
|
||
* @param {String} filePath 文件绝对路径
|
||
* @param {number} seconds 时间
|
||
* @param {Promise<String>} save 保存绝对路径(含文件名)
|
||
* @returns {Promise<String>} 文件位置(待定)
|
||
*/
|
||
function getVideoSpecifyTimeImage(filePath, seconds, save) {
|
||
return new Promise((resolve) => {
|
||
const lux = spawn("ffmpeg", ['-ss',`${formatSeconds(seconds)}`,'-i',filePath,'-vframes','1',save],{
|
||
env:{
|
||
path:path.join(cwd(),'./bin/')
|
||
}
|
||
})
|
||
lux.stdout.on('data', (data) => {
|
||
console.log(data)
|
||
});
|
||
lux.on('close', (code) => {
|
||
console.log("结束")
|
||
console.log(code.toString())
|
||
resolve(save)
|
||
});
|
||
lux.stderr.on("data",(err)=>{
|
||
console.log(String(err))
|
||
})
|
||
console.log(lux)
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取视频文件信息
|
||
* @param {String}filePath 文件绝对路径
|
||
* @return {Promise<JSON>} videoInfo
|
||
*/
|
||
function getMediaInfo(filePath) {
|
||
return new Promise((resolve) => {
|
||
const lux = spawn("./bin/MediaInfoCLI/MediaInfo.exe", ['--output=JSON', filePath])
|
||
lux.stdout.on('data', (data) => {
|
||
resolve(JSON.parse(data))
|
||
});
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 制种
|
||
* @param {String}filePath 文件绝对路径
|
||
* @param {String}save 保存绝对路径(含文件名)
|
||
* @return {Promise<String>} 日志
|
||
*/
|
||
function createTorrent(filePath, save) {
|
||
return new Promise((resolve) => {
|
||
const lux = spawn("./bin/Transmission/transmission-create", [filePath, '-p', '-t https://zmpt.cc/announce.php', '-o', save])
|
||
let response = '';
|
||
lux.stdout.on('data', (data) => {
|
||
response += data
|
||
});
|
||
lux.stdout.on('close', (code) => {
|
||
resolve(response)
|
||
})
|
||
})
|
||
}
|
||
|
||
|
||
function dow(info, callback) {
|
||
const lux = spawn("yt-dlp", ['--cookies-from-browser', 'chrome', '-P', info.save, '-o', info.title + '.mp4', info.url],{
|
||
env:{
|
||
path:path.join(cwd(),'./bin/')
|
||
}
|
||
})
|
||
lux.stdout.on('data', (data) => {
|
||
console.log(String(data))
|
||
callback(String(data), false)
|
||
});
|
||
lux.on('close', (code) => {
|
||
console.log("结束")
|
||
callback(code, true)
|
||
});
|
||
}
|
||
|
||
/**
|
||
* 秒到时分秒
|
||
* @param value 秒
|
||
* @return {string|number} 返回时间格式[00:00:00]
|
||
*/
|
||
function formatSeconds(value) {
|
||
var secondTime = parseInt(value);// 秒
|
||
var minuteTime = 0;// 分
|
||
var hourTime = 0;// 小时
|
||
if (secondTime > 60) {//如果秒数大于60,将秒数转换成整数
|
||
//获取分钟,除以60取整数,得到整数分钟
|
||
minuteTime = parseInt(secondTime / 60);
|
||
//获取秒数,秒数取佘,得到整数秒数
|
||
secondTime = parseInt(secondTime % 60);
|
||
//如果分钟大于60,将分钟转换成小时
|
||
if (minuteTime > 60) {
|
||
//获取小时,获取分钟除以60,得到整数小时
|
||
hourTime = parseInt(minuteTime / 60);
|
||
//获取小时后取佘的分,获取分钟除以60取佘的分
|
||
minuteTime = parseInt(minuteTime % 60);
|
||
}
|
||
}
|
||
var result = "" + secondTime > 10 ? secondTime : '0' + secondTime;
|
||
|
||
if (minuteTime > 0) {
|
||
result = "" + minuteTime > 10 ? minuteTime : '0' + minuteTime + ":" + result;
|
||
} else {
|
||
result = "" + "00" + ":" + result;
|
||
}
|
||
if (hourTime > 0) {
|
||
result = "" + hourTime > 10 ? hourTime : '0' + hourTime + ":" + result;
|
||
} else {
|
||
result = "" + "00" + ":" + result;
|
||
}
|
||
return result;
|
||
}
|
||
|
||
module.exports = {
|
||
seep,
|
||
dow,
|
||
getVideoSpecifyTimeImage,
|
||
getMediaInfo,
|
||
createTorrent
|
||
} |