观影:豆瓣简介补上导演/主演/上映年份等主要信息
用户原话:「观影模块,添加电影的时候,从豆瓣获取的信息不够,
应该把导演、主要演员,上映年份等主要信息,也都放在简介中。」
**改了什么**
- 新增 `Douban::summaryText($meta, $title, $withPlot)`:把主要信息拼成一段可读文本。
格式(只有有值的行才出现,绝不写"导演:"这种空壳行):
《片名》(年份)
导演:X 主演:A、B、C 类型:… 片长:… 制片国家/地区:… 又名:… 豆瓣评分:…
<空行>
<剧情简介原文>
标签词与详情页 `db-meta` 用的同一套(年份/导演/主演…),同一字段在两处叫同一个名字。
- `movies/douban` 接口新增 `summary` 字段,**在服务端拼**。
为什么不在前端拼:这段文本会**写进 movie_details.info**(落库、与豆瓣脱钩),
拼法必须可测、只有一处;拼在 JS 里既测不到,也没法在"重新抓取"之外复用。
- 前端 `apply()` 改为填 `data.summary`(原来只填 `meta.plot`),
并补了两处**原来缺失的反馈**:
· 简介里已有用户写的内容 → 明确告知"没有覆盖它"(并提示清空后重抓);
· 豆瓣确实没有可用简介文本 → 也明确说一声。
之前这两种情况都是**静默什么都不做**,用户会以为"抓取坏了"。
简介框 rows 3 → 6(内容变多了),placeholder 也说明了会自动带上主要信息。
**验证**
- 新增 `_fb_douban_summary.py` 22 条,覆盖:字段齐全 / 缺字段不留空壳行 /
全空返回空串 / 只有剧情时不带多余空行 / 接口确实吐 summary /
前端写入的值只能是 summary(按 `infoEl.value = …` 的实际赋值断言,
不是"文件里有没有某个词")/ 仍然只填空不覆盖。
- **反向验证**:把拼装改回"简介=plot"→ ① 组 8 条立刻红(片名/年份/导演/主演/
类型/片长/国家/评分全部缺失),还原后复绿。
- **线上真连豆瓣**实测(`哪吒之魔童降世` / `流浪地球`):year/director/actors/
genre/runtime/country/rating/plot 全部有值,拼出的简介如
《哪吒之魔童降世》(2019)/导演:饺子/主演:吕艳婷 / 囧森瑟夫 / 瀚墨 …/
类型:剧情 / 喜剧 / 动画/片长:110分钟/豆瓣评分:8.4 + 剧情原文。
- 部署脚本加 4 条静态断言(summaryText 在服务端、接口吐 summary、
前端不许再只拿 meta.plot、摘不到要提示)。
- 回归:e2e 775/0 · 豆瓣简介 22/0 · 第 5 轮专项 91/0 · 导入 21/0。
This commit is contained in:
@@ -2396,6 +2396,14 @@ switch ($r) {
|
||||
'source' => 'douban',
|
||||
'title' => (string)($resDb['title'] ?? ''),
|
||||
'meta' => $resDb['meta'],
|
||||
// 拼好的简介(含导演/主演/年份/类型/片长/国家/评分 + 剧情原文)。
|
||||
// 放在服务端拼、由前端填空 —— 见 Douban::summaryText 的注释:
|
||||
// 这份文本会**落库**(movie_details.info),所以拼法要可测、只有一处。
|
||||
'summary' => Douban::summaryText(
|
||||
(array)$resDb['meta'],
|
||||
(string)($resDb['title'] ?? ''),
|
||||
true
|
||||
),
|
||||
'poster_key' => $posterKey,
|
||||
'poster' => $posterShow,
|
||||
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||
|
||||
Reference in New Issue
Block a user