如何使用 yt-dlp“仅”下载 YouTube 视频的评论,而不下载实际视频?

J. *_*nen 5 download youtube comments command-line

在搜索了很长一段时间之后,我刚刚发现 yt-dlp(我已经安装并每天使用它来下载 YouTube(和其他)视频)支持获取用户评论并将其保存为 JSON 文件

但是,令人沮丧的是,我找不到任何选项可以执行此操作,并且不能同时下载视频。这是怎么做到的?有可能吗?如果没有,那真是太可惜了,因为这是一个令人惊叹的“独立”功能,我经常想在不需要下载大量视频文件的情况下完成它。我自己实现几乎是不可能的,因为 YouTube 使阻止机器人/自动化变得极其困难和复杂。

我已经看了这个手册很长时间了:https://github.com/yt-dlp/yt-dlp

pro*_*kpa 7

--dump-single-json (or simply -J)您可以使用该参数转储 JSON --no-download

# writes info.json in working dir
yt-dlp --write-comments --no-download "$url"

# dump complete JSON with comments
yt-dlp --write-comments --dump-single-json -o "$file" "$url"
yt-dlp --write-comments --dump-single-json "$url" > "$file"

# Pretty print with JQ (JSON processor, package needs to be installed)
yt-dlp --write-comments --dump-single-json "$url" | jq
yt-dlp --write-comments --dump-single-json "$url" | jq  > "$file"
Run Code Online (Sandbox Code Playgroud)

然后使用JQ查询评论。

jq '.comments' "$file" > comments_only.json # file input
jq '.comments' <<<"$json" > comments_only.json # var input
Run Code Online (Sandbox Code Playgroud)

或者

some_command | jq '.comments'

.comments此处是 JSON 属性“comments”的 JQ 选择器。

如果您想要将使用 JQ 隔离的那些注释集成到另一个 JSON 文件中,JQ 方法会变得更加复杂。

这是一个示例,其中我使用条目来执行此操作,以在您选择这条路线时推动您前进。

  old_json=$(jq '.' "$json_file")
  entries=$(jq -s '.[0].entries += .[1].entries | .[0].entries | sort_by(.date) | reverse' <<<"$old_json" <<<"$json")
  json=$(jq -s '.[0].entries = .[1] | .[0]' <<<"$old_json" <<<"$entries")
Run Code Online (Sandbox Code Playgroud)


har*_*ymc 0

我还查看了 yt-dlp 的文档,它似乎没有仅下载评论的选项。您可以向开发人员建议此功能。

如果您热衷于编程,则可以使用 YouTube 数据 API 自行获取评论。

提取和预处理 YouTube 评论一文 包含详细说明以及用于提取评论并将其写为 CSV 文件的 Python 代码。它还包含有关清除多余字符(例如表情符号和语言检测)的建议(如果您只想要英文注释)。