好的,所以我用我正在编写的bash脚本遇到了这个小问题。
这个脚本应该像这样运行:
bash script.sh https://www.youtube.com/user/<channel name>
OR
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文件存入视频文件夹?
或者也许创建文件夹FIRST,然后cd进去,然后从那里运行命令? 我不知道
这是我的剧本:
#!/bin/bash
pwd
sleep 1
echo "You entered: $1 for the URL"
sleep 1
echo "Now downloading all videos from URL "$1""
youtube-dl -iw \
--no-continue $1 \
-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
答案 0 :(得分: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类型变量实现到任何其他变量会阻塞代码并使其膨胀。