youtube-dl 问题(脚本)

youtube-dl problems (scripting)

好的,所以我在编写 bash 脚本时遇到了这个小问题。

这个脚本应该是 运行 这样的:

bash script.sh https://www.youtube.com/user/<channel name>

bash script.sh https://www.youtube.com/user/<random characters that make up a youtube channel ID>

它将整个 YouTube 频道下载到名为

的文件夹中
<uploader>{<uploader_id>}/

或者,至少应该...

我遇到的问题是 youtube-dl 创建的 archive.txt 文件不是在与视频相同的目录中创建的。它是在脚本所在的目录中创建的 运行.

是否有 grep 或 sed 命令可用于将 archive.txt 文件获取到视频文件夹?

或者先创建文件夹,然后 cd 进入,然后 运行 从那里执行命令? 我不知道

这是我的脚本:

#!/bin/bash
pwd
sleep 1
echo "You entered:  for the URL"
sleep 1
echo "Now downloading all videos from URL """
youtube-dl -iw \
--no-continue  \
-f bestvideo+bestaudio --merge-output-format mkv \
-o "%(uploader)s{%(uploader_id)s}/[%(upload_date)s] %(title)s" \
--add-metadata --download-archive archive.txt
exit 0

我最终用这个解决了这个问题:

uploader="$(youtube-dl -i -J $URL --playlist-items 1 | grep -Po '(?<="uploader": ")[^"]*')"
uploader_id="$(youtube-dl -i -J $URL --playlist-items 1 | grep -Po '(?<="uploader_id": ")[^"]*')"
uploaderandid="$uploader{$uploader_id}"
echo "Uploader: $uploader"
echo "Uploader ID: $uploader_id"
echo "Folder Name: $uploaderandid"
echo "Now downloading all videos from URL "$URL" to the folder "$DIR/$uploaderandid""

基本上我不得不用 grep 解析 JSON,因为 youtube-dl 开发者说将 -o 类型变量实现到任何其他变量中会阻塞代码并使其膨胀。