youtube-dl问题(脚本)

时间:2016-04-15 02:34:28

标签: bash sed youtube youtube-dl

好的,所以我用我正在编写的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

1 个答案:

答案 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类型变量实现到任何其他变量会阻塞代码并使其膨胀。