youtube dl问题(脚本)



好吧,所以我在编写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文件放到视频文件夹中?

或者可以先创建文件夹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

我最终解决了这个问题:

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 devs说,在任何其他变量中实现-o类型的变量都会阻塞代码并使其膨胀。

最新更新