TraeIDE实践——B站视频剩余时长计算

184 阅读4分钟

背景

很多同学在B站大学上刷网课的时候,遇到那种视频总时间特别长、视频数目特别多的合集,都会很头疼。从B站视频的界面,我们看不到整个合集的总剩余时长,有的时候感觉学了等于没学,也没办法跟踪自己的实际进度。

于是我突然有了一个想法,借助Trae开发一个浏览器插件,我们可以通过点击按钮,就能获取视频合集的剩余总时长。

整个开发过程中,我没有写一行代码。我做的所有事就是描述需求,给AI截图反映控制台的报错信息,给AI截图看功能出现的问题,插件代码100%由TRAE完成

工具

  • TRAE

开发

之前有一次我是这样获取剩余时长的,查看网页源代码(Bilibili视频播放列表好像是动态渲染,F12进入控制台似乎看不全),当前正在播放的视频会有一个class="simple-base-item video-pod__item active normal"类,而其余的是class="simple-base-item video-pod__item normal"类,然后我把所有的html标签丢给AI计算,但那AI算的也实在够慢的...

1. 提示词

你是一个专业的前端开发程序员,你现在接到了一个开发需求,请你完成这个开发任务。

要求: 接到需求后,请先给我一份产品需求文档和技术分析文档,然后再进行项目的开发

需求: 用户在B站观看多合集形式的视频时,尤其是时间长、数目多的课程类视频时,无法快速、直观地了解从当前正在观看的视频开始,整个合集还剩余多少总时长。现有界面仅展示单集时长,对于需要规划学习进度的用户而言极为不便。

请你开发一款基于Chrome的谷歌浏览器插件,用户仅通过点击按钮就能获取当前剩余合集时长,帮助用户高效管理时间

这里用的是TRAE国际版,感觉TRAE国际版的这个TO-DO List真的做的特别棒,以前在使用国内版的时候没有这个功能,很多时候TRAE一次性完成了多步的工作,这样项目中遇到问题的时候检查特别特别麻烦。

2. TRAE开始开发

技术栈:HTML,CSS,JavaScript

TRAE生成的技术实现方案:

TheRestTimeOfVideo/
├── background.js     // 后台脚本
├── content.js        // 内容脚本,用于分析B站页面
├── images/           // 图标文件夹
│   ├── icon16.svg    // 16x16图标
│   ├── icon48.svg    // 48x48图标
│   └── icon128.svg   // 128x128图标
├── manifest.json     // 扩展配置文件
├── popup.css         // 弹出窗口样式
├── popup.html        // 弹出窗口HTML
└── popup.js          // 弹出窗口交互逻辑
4.1 扩展架构
    -manifest.json : 扩展配置文件
    -popup.html/js/css : 点击扩展图标时显示的弹出界面
    -content.js : 注入到B站页面的脚本,用于获取视频信息
    -background.js : 后台脚本,处理扩展生命周期和消息通信
4.2 核心算法
    1.通过DOM操作获取B站合集视频列表
    2.识别当前正在播放的视频(通过active类或其他标识)
    3.提取每个视频的时长信息(格式通常为"MM:SS"4.计算当前视频之后所有视频的总时长
    5.转换为更易读的格式(如"X小时Y分钟"4.3 技术难点
    B站页面结构可能会变化,需要设计稳健的DOM选择器
    视频时长格式可能有多种(如"MM:SS""HH:MM:SS")
    页面加载时机的把握,确保在DOM完全加载后执行脚本

3. 遇到的一些问题

刚开始的时候经常会发生无法计算的问题

不过只需要打开控制台,把报错信息丢给AI就好

  • 无论怎样都只计算两个视频的总时长

  列表里面明明还有几百条视频,你告诉我只剩两个了?这里估计是AI在写函数的时候写死了,或者是和动态渲染有关系吧,我也没有仔细研究,反正结果丢给AI就好

最终效果展示

大功告成!