ptSend/util/utils.js

180 lines
4.9 KiB
JavaScript
Raw Normal View History

2023-07-04 22:39:35 +08:00
const { spawn } = require('child_process');
2023-07-01 23:42:23 +08:00
const path = require('path');
2023-07-04 22:39:35 +08:00
const { cwd } = require('process');
const { readFile, createReadStream } = require("fs");
const { post } = require("axios");
const https = require('https')
2023-06-12 15:20:45 +08:00
function seep(time) {
return new Promise((res) => {
setTimeout(() => {
2023-06-12 15:20:45 +08:00
res()
}, time)
2023-06-12 15:20:45 +08:00
})
}
2023-07-04 19:04:31 +08:00
/**
2023-07-04 22:39:35 +08:00
* 上传图片至图床
2023-07-04 19:04:31 +08:00
* @param filePath 图片路径
*/
2023-07-04 22:39:35 +08:00
async function uploadImg(filePath) {
let data = createReadStream(filePath)
console.log(data)
try {
let res = await post('https://image.zmpt.cc/upload/localhost', {
file:data
},{
proxy: false,
headers:{
'Content-Type': 'multipart/form-data'
}
2023-07-04 19:04:31 +08:00
})
2023-07-04 22:39:35 +08:00
console.log(res)
return res.data
}catch(err){
console.error(err)
return err
}
2023-07-04 19:04:31 +08:00
}
/**
* 获取腾讯视频播放列表
* @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 文件绝对路径
2023-07-01 21:01:05 +08:00
* @param {number} seconds 时间
* @param {string} save 保存绝对路径(含文件名)
2023-07-01 21:01:05 +08:00
* @returns {Promise<String>} 文件位置(待定)
*/
2023-07-01 21:01:05 +08:00
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/')
2023-07-01 23:42:23 +08:00
}
})
2023-07-01 21:01:05 +08:00
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) => {
2023-07-01 23:42:23 +08:00
console.log(String(err))
})
console.log(lux)
2023-07-01 21:01:05 +08:00
})
}
2023-07-01 20:08:54 +08:00
/**
* 获取视频文件信息
* @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))
});
})
}
2023-07-01 21:01:05 +08:00
/**
* 制种
* @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', () => {
2023-07-01 21:01:05 +08:00
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/')
2023-07-01 23:42:23 +08:00
}
})
lux.stdout.on('data', (data) => {
console.log(String(data))
callback(String(data), false)
});
lux.on('close', (code) => {
console.log("结束")
callback(code, true)
});
2023-06-12 15:20:45 +08:00
}
2023-07-01 21:01:05 +08:00
/**
* 秒到时分秒
* @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;
}
2023-06-12 15:20:45 +08:00
module.exports = {
seep,
dow,
2023-07-01 21:01:05 +08:00
getVideoSpecifyTimeImage,
2023-07-01 20:08:54 +08:00
getMediaInfo,
createTorrent,
2023-07-04 19:04:31 +08:00
getTencentVideoPlayList,
uploadImg
2023-06-12 15:20:45 +08:00
}