采集常见问题:选集与集名

同一部剧,采集到站点后的选集应该一眼看懂。 巨量按影片的实际结构生成选集名:电影一个「播放」,整部打包的短剧一个「全集」,分集的剧按季、按集排列。下面先给出速查表,再逐条解答站长最常问的问题。

选集名速查

下表是默认设置(不含单集详情)下,采集结果 vod_play_url 中每一项 $ 前面的名字。

影片结构JSONXML
电影播放播放
只有第 1 季的剧第 1 集、第 2 集…第 1 集、第 2 集…
多季剧第 1 季 第 1 集…第 2 季 第 1 集…第 1 集(第 1 季 第 1 集)…第 13 集(第 2 季 第 1 集)…
只上线了第 2 季(或更后面的某一季)第 2 季 第 1 集…第 1 集(第 2 季 第 1 集)…
含特别篇第 0 季 第 1 集第 1 集(特别篇 第 1 集)
整部打包成一条的短剧、剧集全集全集
按集数分段打包第1-20集、第21-40集…第1-20集、第21-40集…
来源没有集号的单元按位置写 第 N 集按位置写 第 N 集

打开「单集详情」后,集名后面会带上单集标题:JSON 如 第 5 集 重逢、第 2 季 第 1 集 重逢,XML 如 第 5 集 重逢、第 13 集(第 2 季 第 1 集)重逢;「播放」「全集」和分段名不变。怎么打开见「AppleCMS 采集接入」文档的「单集剧情与剧照」一节。

常见问题

苹果 CMS V10 入库报错/截断:Incorrect string value

常见原因是旧数据库字段使用 MySQL utf8mb3,无法存储表情、扩展汉字等需要四字节 UTF-8 的字符。在采集地址中加 charset=utf8mb3,重新采集失败的影片;兼容模式将这些文本字符转为 HTML 数字实体,常用中文不变。省略参数、charset=utf8mb4 或非法值均保持默认原文。

https://api.juliang.live/api/provide/vod/at/xml/?charset=utf8mb3
https://api.juliang.live/api/provide/vod/?ac=detail&charset=utf8mb3

地址已有问号时,用 &charset=utf8mb3 接在已有参数后。JSON、XML 均支持;播放字段(含集名)及图片地址保持原样,若报错发生在这些字段,仍需检查对应数据库字段的字符集。

别的资源站一季一个条目,巨量为什么把多季放在同一部里?

传统资源站通常把每一季当成独立影片,例如「某某剧 第一季」「某某剧 第二季」各一个条目。巨量把同一部剧的所有季归在一个内容下,按季、按集排列。这样做有几个好处:

  • 观众看得顺: 一个详情页就能看到全部季,看完第一季直接接着看第二季,不用回到搜索页再找。
  • 资料只维护一份: 片名、海报、简介、评分、演员是整部剧共用的,不会出现各季资料不一致,或某一季缺海报的情况。
  • 搜索不重复: 站内搜索剧名只出现一条,不会列出好几条同名条目,让观众猜该点哪个。
  • 来源可以互补: 一个来源只有第一季、另一个来源只有第二季时,巨量会把它们合到同一部剧里,观众看到的是完整的剧。
  • 站长少维护: 一部剧只占一个条目,更新新一季时只是这一条多了选集,不必新建和管理新条目。

采集到苹果 CMS 时,所有季都在这一条里:XML 用连续集号保证每一季的每一集都能入库,JSON 用「第 2 季 第 1 集」直接标出位置,规则见上面的速查表。

如果某部剧在巨量只上线了其中一季(例如只有第二季),它仍然是一个条目,选集会带上季号,例如「第 2 季 第 1 集」。片名本身带季名的影片,例如「进击的巨人 第二季」,也是同样处理。

为什么 JSON 和 XML 的多季集名不一样?

苹果 CMS 入库 XML 时,会按每个集名里出现的第一个数字给选集排序,数字相同的会互相覆盖。多季剧如果写成「第 1 季 第 1 集」「第 1 季 第 2 集」,第一个数字都是 1,入库后只剩一集。

所以 XML 用一个从 1 开始连续递增的集号打头,把真实的季和集放进括号,例如 第 13 集(第 2 季 第 1 集),保证每一集都能入库。选集按特别篇、第 1 季、第 2 季……的顺序排列,特别篇在最前面。JSON 由程序原样读取、不会被重排,保持更直观的「第 2 季 第 1 集」。

极少数影片即使这样仍会撞号(例如来源给了重复的集号),XML 会在该播放组的每一项前加四位序号,如 0001 · 第 1 集,同样是为了一集不丢。

为什么只有一季时不写「第 1 季」,只上线第 2 季时又写了?

只有第 1 季时,「第 1 季」是多余信息,直接写「第 N 集」更清爽。

如果一部剧在巨量只上线了第 2 季,写成「第 1 集」会让观众误以为是第一季,所以保留季号,写成「第 2 季 第 1 集」。播放器、网页详情页和采集接口都按这条规则显示。

为什么有的短剧只有一个「全集」?

很多来源把整部短剧打包成一条完整片源。这种情况下它就是一整部,不再拆出一个假的「第 1 集」。「全集」点开就是完整内容。

旧的采集结果里,它们可能显示为只有一个「第 1 集」,重新采集后会更新为「全集」。整部合集本身就是完整内容,所以视为已完结:vod_isend 为 1、vod_serial 为 0(XML 的 state 为 0)。

为什么「播放」只出现在电影里?

「播放」表示这部影片只有一个完整的播放项,对应电影。剧集、综艺、动漫如果已经有分集,就只列分集;没有分集、只有整部片源时写「全集」。一部剧的播放组里不会同时出现「播放」和「第 N 集」。

分段合集是什么?

有的来源按集数分段打包,例如 100 集的短剧分成 5 段。每一段显示为它覆盖的集数范围,如 第1-20集、第81-100集完结。段名是这一项本身的内容范围,不属于单集详情,默认设置下也会保留。

集名变了,已经采集过的影片怎么更新?

接口更新后,下一次采集就会返回新的集名,无需更换地址。已入库的影片要在 CMS 的更新规则里勾选播放地址(苹果 CMS 在「采集参数」的二次更新规则中勾选),重新采集后才会覆盖旧的选集。只采集「当天更新」的任务只会覆盖当天有变化的影片,想一次全部刷新,请跑一次全量采集。

同一部剧的季名写在片名里,集名还会写季号吗?

会。像「进击的巨人 第二季」这样片名已带季名、且只上线了这一季的影片,集名仍按上面的规则写成 第 2 季 第 1 集,保证在任何站点、任何模板里都能看出是第几季。

单集的标题、剧情和剧照,为什么默认不给?

先区分两层资料:

  • 影片资料:片名、简介、海报、评分、演员等,始终提供,不受任何参数影响。
  • 单集资料:每一集的标题、剧情简介(vod_plot_name / vod_plot_detail)和单集剧照(vod_pic_screenshot),默认不提供。

默认不提供单集资料,是为了照顾苹果 CMS 生态里大多数站点的习惯:

  • 与其他资源站对齐: 多数站点同时采集好几个资源站,选集名都是「第 N 集」这样的统一写法。默认不带单集标题,巨量的选集才能和其他来源一一对上,模板里的选集按钮也更整齐。
  • 采集更快、更轻: 不需要单集资料时,接口不会去查询这些数据,返回更快、体积更小,定时采集更稳。
  • 需要时一键打开: 想做分集剧情页、剧照画廊,或希望选集名带上单集标题,可以随时打开。

打开方式有两种,地址参数优先:

方式写法说明
采集地址加参数plot=1这次请求包含单集资料;plot=0 则这次请求不含
渠道开关请运营为渠道打开「单集详情」打开后,不带 plot 的请求默认包含

地址里写了 plot 就以地址为准;没写就看渠道开关,渠道开关默认是关闭的。具体地址写法见「AppleCMS 采集接入」文档的「单集剧情与剧照」一节。