jq 如何仅在 yt-dlp json 转储存在时提取字段

问题描述 投票:0回答:1

当我运行以下命令时:

yt-dlp --dump-json -a list.txt | jq -cr '{ 日期:.upload_date | (.[0:4] + "-" + .[4:6] + "-" + .[6:8]),ID:.id,标题:.fulltitle, 章节:.chapters[] | {标题} |有(“标题”)|加入(“,”)}'

它给了我一个错误:

jq:错误(at:1):无法迭代 null(null)

如何从那些真正有章节的视频中提取章节? (因为我认为找不到章节时会卡住)。

json jq dump yt-dlp
1个回答
0
投票

如果

.chapters
不存在,则计算结果为
null
,并且
.chapters[]
将失败并出现错误
Cannot iterate over null (null)

在这种情况下,根据您想要的结果值,您可以将关键部分括在括号中,使用错误抑制运算符

?
来消除错误,并使用替代运算符
//
提供替代方案,例如
(…)? // null

jq -c '{
  Date: .upload_date | (.[0:4] + "-" + .[4:6] + "-" + .[6:8]),
  ID: .id,
  Title: .fulltitle,
  Chaps: (.chapters | (.[] | {title} | has("title") | join(", "))? // null)
}'
© www.soinside.com 2019 - 2024. All rights reserved.