如何获取下载的 Youtube-DL 文件的路径?

如何获取下载的 Youtube-DL 文件的路径?

我设计了一个脚本,可以轻松快速地从 YouTube 下载视频,该脚本使用末尾的选项来询问您是否要下载另一个视频。

这是我的脚本:

#!/bin/bash

cd ~/Videos

read -p "Enter A Valid YouTube URL: "  url

reset

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' $url

reset

while true; do
    read -p "Do you wish to download another? " yn
    case $yn in
    [Yy]* ) reset; cd ~/Desktop; ./Youtube-DL-Video.sh;;       
    [Nn]* ) exit;;
        * ) echo "Please answer yes or no.";;
    esac
done

我的目标

我想添加一个选项来播放刚刚下载的文件(通过 OMXPlayer)。

Youtube-DL 是否有任何命令可以提供下载路径?

答案1

youtube-dl--output允许您设置输出目的地的选项:

-o, --输出TEMPLATE
输出文件名模板,参见“输出模板“ 对于所有信息

作为示例,我使用以下模板

--output "$XDG_DOWNLOAD_DIR/youtube/%(title)s.%(ext)s"

它将视频下载到youtube我的下载目录中的文件夹中,并使用视频标题作为文件名。

为了添加一个选项来播放您刚刚下载的文件,您可以使用--get-filename不下载视频但仅返回与您的模板相对应的文件名的选项:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' -o <insert_your_ template_here> $url
file=$(youtube-dl -o <insert_your_template_here> --get-filename)
...
<video_player> $file

答案2

如果您的目的是通过 omxplayer 播放网络视频以利用 Raspberry Pi 硬件加速。

您可以使用 youtube-dl 获取实际视频的 URL,然后使用 omxplayer(或 vlc,播放起来更方便,而且速度也更快)进行流式传输。

这是我使用的别名:

alias omxstream='_(){ omxplayer `youtube-dl --get-url --format best[ext=mp4]/best $1`; };_'

如果您想在简单的管道命令周围使用更多代码,您也可以使用函数来执行此操作:

function replay {
    if test -z $1 ; then
        echo -e "No arguments specified. Usage:\n${FUNCNAME[0]} replay-web-page-url"
        return 1
    fi
    # both omxplayer and vlc are hardware accelerated on Raspberry Pi
    vlc --fullscreen `youtube-dl --get-url --format best[ext=mp4]/best $1`
}

也可以使用脚本来完成此操作。

作为记录,这是我的当前版本.bash_aliases文件。

相关内容