Merge pull request #31 from nikoyoke1/master

🐞 fix: 油管解析成功后视频时长显示错误
This commit is contained in:
Zhiyu 2024-10-17 21:16:03 +08:00 committed by GitHub
commit d20309ba14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 8 deletions

View File

@ -1956,21 +1956,22 @@ export class tools extends plugin {
await checkAndRemoveFile(path + "/temp.mp4") await checkAndRemoveFile(path + "/temp.mp4")
await checkAndRemoveFile(path + "/Thumbnail.png") await checkAndRemoveFile(path + "/Thumbnail.png")
await ytDlpGetThumbnail(path, url, isOversea, this.myProxy) await ytDlpGetThumbnail(path, url, isOversea, this.myProxy)
const Duration = await ytDlpGetDuration(url, isOversea, this.myProxy).toString().replace(/\n/g, '')
// logger.info('时长------',Duration)
const title = await ytDlpGetTilt(url, isOversea, this.myProxy).toString().replace(/\n/g, ''); const title = await ytDlpGetTilt(url, isOversea, this.myProxy).toString().replace(/\n/g, '');
// logger.info('标题------',title) // logger.info('标题------',title)
function convertToSeconds(timeStr) { function convertToSeconds(timeStr) {
const [minutes, seconds] = timeStr.split(':').map(Number); // 拆分并转换为数字 const [minutes, seconds] = timeStr.split(':').map(Number); // 拆分并转换为数字
if (!seconds) return timeStr;
return minutes * 60 + seconds; // 分钟转化为秒并加上秒数 return minutes * 60 + seconds; // 分钟转化为秒并加上秒数
} }
if(await convertToSeconds(Duration) > this.youtubeDuration){ const Duration = convertToSeconds(await ytDlpGetDuration(url, isOversea, this.myProxy).toString().replace(/\n/g, ''))
// logger.info('时长------',Duration)
if(Duration > this.youtubeDuration){
e.reply([ e.reply([
segment.image(`${path}/thumbnail.png`), segment.image(`${ path }/thumbnail.png`),
`${this.identifyPrefix}识别:油管,视频下载中请耐心等待 \n视频标题:${title}${DIVIDING_LINE.replace('{}', '限制说明')}\n视频时长:${Duration}分钟\n大于管理员限定时长:${(this.youtubeDuration / 60).toFixed(2).replace(/\.00$/, '')} 分钟\n将截取限定时间部分` `${this.identifyPrefix}识别:油管,视频下载中请耐心等待 \n视频标题:${title}${DIVIDING_LINE.replace('{}', '限制说明')}\n视频时长:${(Duration / 60).toFixed(2).replace(/\.00$/, '')} 分钟\n大于管理员限定时长:${(this.youtubeDuration / 60).toFixed(2).replace(/\.00$/, '')} 分钟\n将截取限定时间部分`
]); ]);
} else { } else {
e.reply([segment.image(`${ path }/thumbnail.png`),`${ this.identifyPrefix }识别:油管,视频下载中请耐心等待 \n视频标题:${ title }\n视频时长:${Duration} 分钟`]); e.reply([segment.image(`${ path }/thumbnail.png`),`${ this.identifyPrefix }识别:油管,视频下载中请耐心等待 \n视频标题:${ title }\n视频时长:${(Duration / 60).toFixed(2).replace(/\.00$/, '')} 分钟`]);
} }
await ytDlpHelper(path, url, isOversea, this.myProxy, true, graphics, timeRange); await ytDlpHelper(path, url, isOversea, this.myProxy, true, graphics, timeRange);
this.sendVideoToUpload(e, `${ path }/temp.mp4`); this.sendVideoToUpload(e, `${ path }/temp.mp4`);

View File

@ -19,7 +19,7 @@ function constructProxyParam(isOversea, proxy) {
* @returns string * @returns string
*/ */
export function ytDlpGetDuration(url, isOversea, proxy) { export function ytDlpGetDuration(url, isOversea, proxy) {
return execSync(`yt-dlp --get-duration ${constructProxyParam(isOversea, proxy)} ${url}`); return execSync(`yt-dlp --get-duration --skip-download ${constructProxyParam(isOversea, proxy)} ${url}`);
} }
/** /**
@ -30,7 +30,7 @@ export function ytDlpGetDuration(url, isOversea, proxy) {
* @returns string * @returns string
*/ */
export function ytDlpGetTilt(url, isOversea, proxy) { export function ytDlpGetTilt(url, isOversea, proxy) {
return execSync(`yt-dlp --get-title ${constructProxyParam(isOversea, proxy)} ${url} --encoding utf8`); return execSync(`yt-dlp --get-title --skip-download ${constructProxyParam(isOversea, proxy)} ${url} --encoding utf8`);
} }
/** /**