Hexo 腾讯视频追剧页插件:hexo-tengxun-eucalyptus 安装使用
一个 Hexo 通用插件,自动同步腾讯视频「加追」和「预约」列表,生成卡片网格追剧页。不绑定 anzhiyu 主题,任何 Hexo 博客都能用。
最终效果
Demo:https://blog.eucalyptus.cc/zhuijus/

核心能力:
- 账号同步:拉取腾讯视频「加追」和「预约」列表,自动按集数进度分组
- 手动清单:不想绑账号也能手动填 cid 维护清单
- 卡片网格:竖版海报墙 + tabs 切换 + 搜索过滤
- 智能增量:集数没变的剧跳过详情接口,大幅缩短同步时间
- Cookie 降级:登录态过期时自动用上一次缓存按标记重分组,页面不崩
安装
方式一:从 npm(推荐,稳定版)
bash
npm install hexo-tengxun-eucalyptus
方式二:从 GitHub(跟随最新 master,适合想改源码的同学)
bash
npm install git+https://github.com/ShiningStarLi/hexo-tengxun-eucalyptus.git
Hexo ≥ 5.0 自动识别插件,无需额外注册。
配置(可选)
在站点 _config.yml 里加一段 zhuiju_vqq:,所有字段都有默认值,不配也能用:
yaml
zhuiju_vqq:
enable: true # 是否启用(默认 true)
path: zhuijus/ # 生成的页面路径(默认 zhuijus/)
title: 追剧列表 # 页面标题(默认「追剧列表」)
quote: '' # 页面顶部引言(可选)
columns: 5 # 桌面端每行卡片数(默认 5)
primary_color: null # 主色调 null 时跟随 Hexo 主题变量 --anzhiyu-main
groups: # 分组定义(顺序即 tabs 顺序)
- { key: airing, label: 追剧 }
- { key: finished, label: 已完结 }
- { key: reserved, label: 预约 }
两种运行模式
A. 账号同步(推荐)
在浏览器登录腾讯视频(https://v.qq.com)后:
- 打开 DevTools → Console
- 执行
copy(document.cookie)--- 整串 cookie 已复制到剪贴板 - 粘贴到博客项目根目录,保存为
.vqq-cookie(无扩展名)
然后跑同步命令:
bash
npx hexo zhuiju -u
脚本自动调三个接口:
| 接口 | 鉴权 | 用途 |
|---|---|---|
getAlbumList |
需要 Cookie | 「加追」列表(scene=1)+ 「预约」列表(scene=2) |
float_vinfo2 |
无 | 单部剧详情:标题/封面/年份/题材/主演/集数 |
GetGradeDetail |
无 | 评分、评分人数、好评率 |
Cookie 通常一到两个月过期,过期时脚本会自动用上一次缓存兜底,页面照常显示,只是不会更新数据。什么时候想更新了,重新 copy(document.cookie) 覆盖 .vqq-cookie 再跑一遍就行。
B. 手动清单
不想用账号同步的话,在 source/_data/zhuiju_src.json 里手动填:
json
{
"airing": [
{ "cid": "xxx", "url": "https://v.qq.com/x/cover/xxx.html" }
],
"finished": [
{ "cid": "yyy", "url": "https://v.qq.com/x/cover/yyy.html" }
]
}
cid 就是腾讯视频 URL https://v.qq.com/x/cover/<cid>.html 里那串字母数字。之后同样跑 npx hexo zhuiju -u。
构建部署
bash
# 1. 同步数据(A 模式需要 Cookie,B 模式需要 zhuiju_src.json)
npx hexo zhuiju -u
# 2. 构建静态页面(zhuijus.json → public/zhuijus/index.html)
npx hexo clean && npx hexo generate
# 3. 本地预览
npx hexo s
# 4. 部署到你的服务器(用你自己的部署方式:rsync / git push / 云函数 ...)
构建后访问 https://你的域名/zhuijus/ 就能看到追剧页。
文件结构
项目根目录/
├── node_modules/
│ └── hexo-tengxun-eucalyptus/ # npm 插件(自动注册 command + generator)
├── source/
│ ├── _data/
│ │ ├── zhuijus.json # 同步结果缓存(构建时只读这个,不联网)
│ │ └── zhuiju_src.json # 手动清单(B 模式,可选)
│ └── ...
├── .vqq-cookie # 腾讯视频登录 Cookie(A 模式,gitignore 建议忽略)
└── _config.yml # 可选:zhuiju_vqq 配置段
实现细节(源码阅读)
下面是插件内部的一些设计思路,对想二次开发的同学有用。
1. 并发抓详情
原脚本串行 for...of + sleep(250ms),27 部剧 × 2 个接口 ≈ 14 秒。
改成每批 5 个并发(Promise.all + chunk 分组),因为详情接口和评分接口都是无鉴权的,腾讯不会限流。耗时从 14s 降到 2-3s。
2. 智能增量更新
列表接口返回的 mark_label_list[].prime_text 已经告诉我当前集数了。和上次缓存对比一下,没变的剧直接沿用旧数据,跳过详情+评分接口。
实测效果:27 部里通常只有 3-5 部在更新,剩下 22 部全跳过 → 跑一轮 3-5 秒。
3. Cookie 过期自动降级
catch 到 ret=15006(登录态失效)不退出,而是读上次缓存 zhuijus.json,重新按 autoGroup 分组写回去,再跑 hexo generate。页面照常显示。
封面缩略分流
腾讯 vcover CDN 的缩略后缀横版竖版不通用:
| CDN | /0 原图 | /220 | /498 |
|---|---|---|---|
| vt-pic(竖版海报) | 1.17 MB | 55 KB ✅ | ✅ |
| hz-pic(横版海报) | 366 KB | 400 ❌ | 42 KB ✅ |
所以插件里按 URL 分流:
javascript
// vt-pic 用 /220,hz-pic 用 /498
const sizedCover = (url) => {
const clean = url.replace(/\/(0|220|300|498|640)$/, '');
const thumb = /hz-pic/i.test(clean) ? '/498' : '/220';
return `${clean}${thumb}`;
};
腾讯 CDN 不支持 AVIF 参数(imageView2、imageMogr2 都无响应),想转 AVIF 得自己下载 → 转码 → 传 CDN,收益不大。
主题适配
插件生成的页面用独立的 <style> 标签包裹,不污染主题样式。主色调默认跟随 Hexo 主题变量 var(--anzhiyu-main, #3db4f2) ------ anzhiyu 用户直接用,其他主题如果没这个变量会 fallback 到蓝色 #3db4f2,或者在 _config.yml 的 zhuiju_vqq.primary_color 里硬指定一个。
UI 设计参考
| 参考项目 | 说明 | 链接 |
|---|---|---|
| Hexo AniList | 卡片网格 + tabs + 搜索 + 评分徽章,本次追剧页的主要参考 | https://ajratnam.github.io/hexo-anilist/customization.html |
| hexo-bilibili-bangumi | anzhiyu 主题自带的 B 站追番页,同款卡片布局 | 主题内置 /bangumis/ |
仓库
- npm :https://www.npmjs.com/package/hexo-tengxun-eucalyptus
- GitHub :https://github.com/ShiningStarLi/hexo-tengxun-eucalyptus
有问题欢迎在评论区留言,看到都会回。
原文地址:腾讯视频追剧页部署全记录