在使用苹果CMS添加影视资料的过程中,经常使用到一键获取豆瓣资料的功能,操作流程为输入豆瓣ID后点击查询按钮就可以自动填充表单数据,但苹果CMS的自带接口老版已经不能使用,最新版有时也不稳定,所以在此发文记录一下修改方法
一、实现功能
- 豆瓣api接口本地化,douban.php(替代
api.maccms.la) - 修复苹果cms自带豆瓣接口不可用问题
- 采集配置加豆瓣信息(让管理员控制要不要回填)
后台视频编辑页(输入豆瓣 ID)
↓ 点"查询资料"
本地 API: /douban.php?id=XXX
↓
豆瓣官方电影页: movie.douban.com/subject/XXX
↓
返回 20+ 字段(演员/导演/海报/集数/剧情/评分...)
↓ 自动写回表单
后台采集配置(勾选 tv / av)
↓ 触发采集任务
资源站带豆瓣 ID 的数据 → 自动回填 vod_douban_id
资源站带豆瓣评分的 → 自动回填 vod_douban_score
二、效果预览
效果1:后台 系统 → 采集参数配置 里多出两个勾选项,勾哪个就启用哪个回填。
![图片[1] - 苹果CMSV10豆瓣API接口本地化 - 迅维博客网](https://image-1301450403.cos.ap-nanjing.myqcloud.com/2026/07/26/gZPHieKD.png)
效果2:视频编辑页面效果
![图片[2] - 苹果CMSV10豆瓣API接口本地化 - 迅维博客网](https://image-1301450403.cos.ap-nanjing.myqcloud.com/2026/07/26/27HVE3v4.png)
三、操作步骤
3.1 准备 douban.php
核心功能是:
- 接收
?id=XXX(豆瓣影片 ID) - 抓取
movie.douban.com/subject/XXX/ - 解析 HTML 返回 JSON
- 海报自动下载到本地
upload/vod/
关键点:这份代码自带缓存机制(/douban/ 目录存 JSON)+ 多线路重试 + 随机 UA 伪装。别自己造轮子,直接用现成的。
3.2:后台采集配置页加 2 个复选框
文件:application/admin/view/system/configcollect.html
找到 更新规则 区域,加两行:
3.3:Collect.php 加回填逻辑
文件:application/common/model/Collect.php
在采集循环体里(约第 1199 行,跟其他回填规则同一位置)加:
这俩回填不影响其他字段——只动 vod_douban_id 和 vod_douban_score。
3.4:后台JS切换URL(最关键)
文件:application/admin/view/vod/info.html
搜这一段:
// 改动前 —— 接的是第三方公共服务, 已死 ❌
timeout: 5000,
url: '//' + 'api' + '.' + 'mac'+ 'cms' + '.'+ 'la' + '/douban/index/id/' + id,
改成:
// 改动后 —— 本地 API ✅
timeout: 10000,
url: '/douban.php?id=' + id,
timeout 改 10000ms——本地 API 也涉及远程抓取,5 秒太紧容易超时。10 秒给足余量。
那个 'api.mac' + 'cms.la' 是字符串拼接的反爬写法,原作者怕被搜刮代码时一眼看出域名。挺巧妙,但既然服务都死了,留着也没意义。
3.5:douban.php 放根目录
把 douban.php 上传到 /www/wwwroot/www.yunbo.net/douban.php,实现豆瓣api接口本地化。
注意:不是 application/ 目录下,不是 api/ 目录下,是项目根目录。这是上一步 JS URL 决定的——/douban.php 是从根目录算的路径。
四、验收测试
4.1 接口测试(curl)
# 1. 基础测试 —— 狂飙
curl "https://你的域名/douban.php?id=35465232"
# 预期: HTTP 200, JSON 完整, vod_name="狂飙", vod_douban_score="8.5"
# 2. JSONP 测试
curl "https://你的域名/douban.php?id=35465232&callback=jQuery_test"
# 预期: jQuery_test({...})
# 3. 经典影片测试
curl "https://你的域名/douban.php?id=1292052"
# 预期: HTTP 200, vod_name="肖申克的救赎", year=1994
# 4. 错误处理测试
curl "https://你的域名/douban.php"
# 预期: code=102, msg="请提供豆瓣ID参数"
curl "https://你的域名/douban.php?id=invalid"
# 预期: code=102, msg="无效的豆瓣ID"
4.2 后台手动测试
- 登录后台 → 视频 → 视频列表
- 打开任意一个影片的编辑页
- 在 “豆瓣ID” 输入框输入
35465232(狂飙的豆瓣 ID) - 点 “查询资料” 按钮
- 预期:表单瞬间被填满 20+ 字段,
vod_douban_score = 8.5
4.3 采集自动回填测试
- 后台 → 系统 → 采集参数配置 → 勾选 “豆瓣ID” 和 “豆瓣评分” → 保存
- 触发任意一次采集任务
- 采集完成后查数据库:
SELECT
COUNT(*) AS 总数,
SUM(IF(vod_douban_id > 0, 1, 0)) AS 有douban_id,
SUM(IF(vod_douban_score > 0, 1, 0)) AS 有评分
FROM mac_vod;
预期:有douban_id 和 有评分 数字都明显上涨。
五、总结
整套改造完总共改了4 个文件、净增 11 行代码:
| 文件 | 改动 |
|---|---|
douban.php | +3 行(SITE_ROOT bug 修复) |
info.html | 2 行替换(URL 切本地) |
configcollect.html | +2 行(采集复选框) |
Collect.php | +6 行(采集回填逻辑) |
下次我打算把猫眼票房也走这套思路,回头单独写一篇。















暂无评论内容