这个项目能做什么
Already Watched 是一款本地优先的 Chrome 扩展,旨在减少 YouTube Feed 中的重复内容。它能检测首页、侧边栏/推荐、搜索、订阅、相关网格以及支持的 Shorts 布局中的视频卡片。播放进度通过实际的唯一片段进行追踪;快进或重复播放同一片段不会增加进度。当观察到的片段达到可配置的阈值时,视频将被标记为已观看。默认显示模式是在观看进度达到 70% 时显示“徽章 + 调暗”,已观看的卡片仍可点击,并在悬停或键盘聚焦时恢复。选项包括完全隐藏已观看卡片、可选地填充稀疏的 Feed、隐藏 Playables 和主题建议部分、隐藏首页的 Shorts 货架/卡片,以及隐藏播放列表和 Mix 集合卡片。Playables/主题和播放列表/Mix 过滤器是可逆的,可与显示模式协同工作,且范围受限,因此播放列表中的单个视频和普通视频 URL 仍可访问。
手动控制包括用于标记已观看或未观看的缩略图按钮、针对视频链接或当前观看页面的 Chrome 右键菜单命令,以及 YouTube 原生三点视频菜单中的操作。扫描命令可从当前活动标签页中已渲染的卡片中导入符合条件的进度条,无需滚动、获取账户历史记录或使用 YouTube API。统计数据区分存储的已观看记录、总标记数、今日过滤数和历史总过滤数;重复卡片、重新渲染、SPA 导航和重复的观察者事件将被去重。清除历史记录将删除视频记录、部分播放进度、覆盖设置和统计数据,但保留设置。
该扩展基于 Manifest V3 构建,具有 storage、contextMenus 以及对 youtube.com 主机访问的限定权限。它使用 chrome.storage.local 存储设置、单视频记录、统计数据和历史修订数据;清除历史记录时临时使用 chrome.storage.session。README 指出,该项目没有分析工具,没有后端,不使用 YouTube API,无需 Google 账号访问,没有浏览历史或 Cookie 权限,且不支持 Chrome 同步。内容脚本在 Chrome 的隔离世界中运行;React 仅用于弹出窗口/选项 UI 的打包。所有脚本、样式和图标均本地交付,不使用 CDN 或运行时代码下载。
开发需要 Node.js 20.19+(推荐 Node 22 LTS)、npm 和 Chrome 114+。通过 npm ci 和 npm run check 将可加载的扩展构建到 dist/ 目录。README 记录了单元测试、DOM 测试、存储并发测试、播放器回归测试、类型检查、构建、开发监听以及本地预览服务器。已知限制包括 YouTube 的布局实验、v1 范围之外的移动端和嵌入式播放器、保守的广告/直播启发式算法、可能存在的未观察播放间隙,以及在 YouTube 不提供支持的延续内容时尽力尝试填充 Feed。该项目采用 MIT 许可证。
评论
0 评分人数达到10人后显示
登录后参与讨论。