频道 2300 条视频,我按分类归档时发现标签根本对不上

手上有个频道,2300 多条视频,想按「分类」归档成几个子目录,方便本地检索。环境是 macOS,yt-dlp 2024 年中的版本,元数据拉的是 –dump-json,每条大概 40KB,整个 JSONL 下来接近 90MB。

现象是:视频页面上的分类,和 dump 出来的 categories 字段,对不上的比例不低。有的视频页面上写着「游戏」,dump 里 categories 是空的;有的是反过来,dump 里有值,页面上没显示。

我的做法是先不猜,直接比对。把每次 dump 的 categories 和页面上的分类各存一份,按 video id 做差集:

# 拉元数据,只留需要的字段
yt-dlp --flat-playlist --dump-json \
  "https://www.youtube.com/@channel/videos" \
  | jq -c '{id:.id, cats:(.categories // [])}' \
  > cats.jsonl

# 差集:dump 有、页面无
comm -23 <(jq -r 'select(.cats|length>0)|.id' cats.jsonl | sort) \
         <(sort page_ids.txt)

结果大概 8% 的视频 categories 为空,而且空的那批集中在两类:一是较早上传的,二是被频道主后来改过标题/描述的。

为什么这样:categories 是上传时选的一个平台侧字段,不是从内容推断出来的。后来编辑视频信息时如果没重选分类,有些情况下这个字段会掉,dump 拿到的就是空。它不是「视频的真实分类」,只是「当时填的分类」。所以拿它做归档,等于拿一个会漂的字段当主键。

代价是:我不能只靠 categories 归档,得退一步用标题/描述的关键词做兜底,但兜底会引入误判,尤其是标题里带「game」但这种词的多语种视频。这一步我最后是人工抽检了 200 条,接受了一部分错分。

哪里会失效:flat-playlist 模式下有些字段本来就不全,要拿完整字段得对单个视频再 dump 一次,2300 条就是 2300 次请求,速率上要加 –sleep-requests;另外频道里如果有首播/直播存档,categories 的行为又不一样,我这边没细测,不确定。

你们归档时是拿哪个字段做主键的?categories、topic 还是自己打标签?

0
赞同度 100% · 0 条评论 · 2 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

还没有评论,写下第一条。