获取B站视频列表名称及时长

Bilibili List Download Extention

可以访问Github进行插件下载
或者直接复制下面的片段粘贴在console, 可以自动下载课程信息:

markdown文件

// 获取所有小节
const items = document.querySelectorAll('.video-pod__item');
let rows = [];
let totalSeconds = 0;

// 时间字符串转秒数
function timeStrToSec(timeStr) {
    const arr = timeStr.split(':').map(Number);
    if (arr.length === 2) return arr[0] * 60 + arr[1];
    if (arr.length === 3) return arr[0] * 3600 + arr[1] * 60 + arr[2];
    return 0;
}

// 主循环,生成表格内容并累计总时长
items.forEach((item, idx) => {
    const titleDiv = item.querySelector('.title-txt');
    const title = titleDiv ? titleDiv.textContent.trim() : '无标题';
    const durationDiv = item.querySelector('.stat-item.duration');
    const duration = durationDiv ? durationDiv.textContent.trim() : '无时长';

    rows.push(`| ${idx + 1} | ${title} | ${duration} |`);
    totalSeconds += timeStrToSec(duration);
});

// 计算总时长(hh:mm:ss格式)
function secToTime(sec) {
    const h = Math.floor(sec / 3600);
    const m = Math.floor((sec % 3600) / 60);
    const s = sec % 60;
    return [h, m, s].map(x=>x.toString().padStart(2, '0')).join(':');
}
const totalTime = secToTime(totalSeconds);

// 构造md内容
let mdContent = `# 课程视频列表

| 序号 | 标题 | 时长 |
|---|---|---|
${rows.join('\n')}

**课程总时长:${totalTime}**
`;

const blob = new Blob([mdContent], {type: 'text/markdown'});
const a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = 'list.md';
a.click();

// 控制台输出总时长
console.log(`课程总时长:${totalTime}`);

txt文件

// 获取所有小节
const items = document.querySelectorAll('.video-pod__item');
let textList = [];
let totalSeconds = 0;

// 时间字符串转秒数
function timeStrToSec(timeStr) {
    const arr = timeStr.split(':').map(Number);
    if (arr.length === 2) return arr[0] * 60 + arr[1];
    if (arr.length === 3) return arr[0] * 3600 + arr[1] * 60 + arr[2];
    return 0;
}

// 主循环,生成文本内容并累计总时长
items.forEach((item, idx) => {
    const titleDiv = item.querySelector('.title-txt');
    const title = titleDiv ? titleDiv.textContent.trim() : '无标题';
    const durationDiv = item.querySelector('.stat-item.duration');
    const duration = durationDiv ? durationDiv.textContent.trim() : '无时长';

    textList.push(`${idx + 1}. ${title} —— ${duration}`);
    totalSeconds += timeStrToSec(duration);
});

// 计算总时长(hh:mm:ss格式)
function secToTime(sec) {
    const h = Math.floor(sec / 3600);
    const m = Math.floor((sec % 3600) / 60);
    const s = sec % 60;
    return [h, m, s].map(x=>x.toString().padStart(2, '0')).join(':');
}
const totalTime = secToTime(totalSeconds);

// 把总时长也写进结尾
textList.push(`\n课程总时长:${totalTime}`);

const blob = new Blob([textList.join('\n')], {type: 'text/plain'});
const a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = 'list.txt';
a.click();

// 控制台输出总时长
console.log(`课程总时长:${totalTime}`);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值