我怎样才能将我在我的 Hugo 博客上使用过的所有 YouTube 视频存档?
How can I make an archive of all the youtube videos that I've used on my Hugo blog?
我有一个 Hugo website/blog,内容是用 markdown 编写的,我还添加了几个嵌入的 youtube 视频。我想保留视频的离线存档,以防任何 YouTube 视频被删除。如何将我在博客上链接的 YouTube 视频存档?
安装 youtube-dl(例如 brew install youtube-dl
)后,您可以 运行 这个 one-liner(为 MacOS 构建,但可能也适用于 Linux 或 WSL).
这适用于 Hugo-type youtube 嵌入,它使用这种形式
{{< youtube 1UdI_eoDPKQ >}}
这是one-liner:
find . -type f -name "*.md" -exec grep -r 'youtube' {} + | awk -F "{{" '{print $NF}' | sed 's/ >}}//g' | sed 's/< youtube//g' | xargs youtube-dl --id
这会将视频下载到本地目录。
步骤
- find: 获取$cwd子文件夹下的所有.md(markdown)文件(递归)
- grep:在那些降价文件中找到“youtube”的所有实例
- awk:拆分大括号上的行,取最后一个元素
- sed,sed:删除除 youtube 视频 ID 之外的所有内容
- youtube-dl: 下载视频id列表到$cwd
我有一个 Hugo website/blog,内容是用 markdown 编写的,我还添加了几个嵌入的 youtube 视频。我想保留视频的离线存档,以防任何 YouTube 视频被删除。如何将我在博客上链接的 YouTube 视频存档?
安装 youtube-dl(例如 brew install youtube-dl
)后,您可以 运行 这个 one-liner(为 MacOS 构建,但可能也适用于 Linux 或 WSL).
这适用于 Hugo-type youtube 嵌入,它使用这种形式
{{< youtube 1UdI_eoDPKQ >}}
这是one-liner:
find . -type f -name "*.md" -exec grep -r 'youtube' {} + | awk -F "{{" '{print $NF}' | sed 's/ >}}//g' | sed 's/< youtube//g' | xargs youtube-dl --id
这会将视频下载到本地目录。
步骤
- find: 获取$cwd子文件夹下的所有.md(markdown)文件(递归)
- grep:在那些降价文件中找到“youtube”的所有实例
- awk:拆分大括号上的行,取最后一个元素
- sed,sed:删除除 youtube 视频 ID 之外的所有内容
- youtube-dl: 下载视频id列表到$cwd