function formatTime(seconds) {
let minutes = Math.floor(seconds / 60);
let remainingSeconds = seconds % 60;
// 格式化分钟为两位数
let formattedMinutes = String(minutes).padStart(2, '0');
// 格式化秒数保留0位小数
let formattedSeconds = remainingSeconds.toFixed(0).padStart(0, '0');
return `${formattedMinutes}:${formattedSeconds}`;
}
// 获取当前标签页的网址
var currentUrl = window.location.href;
// 提取 B 站视频 BV 号部分
var pattern = /http.*video\/BV[^\/]+/;
var match = currentUrl.match(pattern);
var extractedPart = "";
var bIsYoutube = false;
if (match) {
extractedPart = match[0];
} else {
// 如果是 YouTube 视频
if (currentUrl.includes("youtube")) {
bIsYoutube = true;
var patternVid = /http.*watch\?v=([^\/?&]+)/;
var vidMatch = currentUrl.match(patternVid);
if (vidMatch) {
extractedPart = "https://youtu.be/" + vidMatch[1];
} else {
console.log("未找到匹配的 YouTube 视频 ID");
}
} else {
console.log("未找到匹配的 B 站视频链接");
}
}
// 获取 video 元素
var video = document.querySelector('video');
// 获取当前播放时间(秒)
var currentTime = video.currentTime.toFixed(6); // 保留6位小数
var formattedTime = formatTime(video.currentTime); // 格式化为 mm:ss.xx
// 解析 URL 参数,获取页码 p
var urlParams = new URLSearchParams(window.location.search);
var pParam = urlParams.get('p') ? `p=${urlParams.get('p')}&` : ""; // 如果有 p 参数,则格式化 `p=3&`
// 构造 B 站带时间戳的链接
var jumpUrl = `${extractedPart}/?${pParam}t=${currentTime}#t=${formattedTime}`;
// 处理 YouTube 特殊情况
if (bIsYoutube) {
var currentTimeSec = video.currentTime.toFixed(0); // YouTube 只支持整数秒
jumpUrl = `${extractedPart}?t=${currentTimeSec}`;
}
// 组织数据并发送
var data = {
"time": currentTime,
"timecode": formattedTime,
"url": jumpUrl
};
sendReplyToQuicker(true, "ok", data, qk_msg_serial);