下载网页视频

下载视频 对于有仓鼠收集症的人是经常的操作,如果你想保存网站上的优秀视频,比如 Bilibili、YouTube、Instagram、Twitter 等,下面介绍的方法一定有适合你需求的。

先简单对比一下本文涉及的各种方法:

  1. 网页下载服务。就是专门下某种网站视频的网站,由于是在线服务,使用方便,无须任何前置准备,但是速度可能较慢;一般一次只能下一个链接,不适合大批量下载。
  2. GUI 软件。着重通用下载器 IDM,它能嗅探网页上的视频,然后点一下就能下载。需要安装软件,另外也不适合大批量下载,不能自动化。
  3. 命令行工具。比如 yt-dlp,安装和配置麻烦一点,但是一旦设置好,能满足自动化大批量下载,在零碎任务下不如直接用 IDM 这种。

如果愿意折腾,推荐对常看的网站配置好命令行工具,其他网站使用 IDM,临时下载用网页下载服务

浏览器扩展

TwitterMediaHarvest – 一键下载 X 的媒体文件的浏览器插件: EltonChou/TwitterMediaHarvest: Download twitter media with only one-click. (github.com) ,好用。

下载视频 服务

以下网站,AhFei 都没用过,只是过去随手收集。


YouTube

下载字幕: Download subtitles from Youtube, Viki, Viu, Vlive and more! – DownSub


Twitter

用过这个,不错:Twitter video downloader – Download twitter videos to mp4 online (twitterdownloader.co)


Instagram


Tiktok


Facebook


多网站

GUI 软件

在自己电脑上,安装一个通用下载软件,随时使用很方便。

IDM

IDM 官网: Internet Download Manager: The fastest download accelerator

一张图感受 IDM 的便捷使用:自动嗅探 + 一键下载。

有条件推荐使用正版,放个破解激活的方法:✅一键激活: lstprjct/IDM-Activation-Script: IDM Activation & Trail Reset Script (github.com)

Hitomi

桌面应用。没用过。

「Hitomi」是一个开源免费的资源辅助性下载工具,支持批量解析和下载多个常见网站上的视频,图片,音乐等内容。支持最高24线程下载,支持第三方的下载源加速,支持下载BT种子和M3U(8)文件。

此工具支持的网站包括但不限于:B站、新浪微博、Youtube、汤不热、推特、脸书、Tiktok、Ins、Pixiv、Danbooru、NicoNico。以及Pornhub、nhentai、XVideos、E(x)Hentai…

GitHub: KurtBestor/Hitomi-Downloader: :cake: Desktop utility to download images/videos/music/text from various websites, and more. (github.com)

DownKyi

过去用过的一款 Windows 系统有用户界面的 B 站下载客户端: leiurayer/downkyi: 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)。 (github.com)

可以登录账号从而下载收藏夹,但是视频多的话,很容易闪退。

命令行工具

使用系统以 Linux 为准,因为希望用 Linux 服务器实现自动化。对于 Windows 和 Mac,也都有相应软件,可参考下列文章编写自己的脚本。

BBDown 下载 B 站视频

详情查看: BBDown 下载 B 站视频 – 快捷的命令行工具 – 技焉洲 (yanh.tech)

yt-dlp 下载 YouTube 视频

这个支持超多网站,常用的都支持,不过我目前只是用来下载油管视频。

详情查看:yt-dlp 下载 YouTube 视频 – 快捷的命令行工具 – 技焉洲 (yanh.tech)

如果要在 Windows 上使用,可以参考文章: 稳定实用的 Youtube 视频下载器 – 0x5E (xlog.app)

有一个基于它的 Web-UI 方便使用: alexta69/metube: Self-hosted YouTube downloader (web UI for youtube-dl / yt-dlp) (github.com)

其他工具

下面的只是 AhFei 记录下来的,没有实际使用过,感兴趣的读者可以自行了解。

JoeanAmier/TikTokDownloader: TikTok 主页/合辑/视频/图集/原声;抖音主页/视频/图集/收藏/直播/原声/合集/评论/账号/搜索/热榜数据采集工具 (github.com)

多网站合一下载

如果你看过 BBDown 和 yt-dlp 的使用说明,会发现它们的批量下载脚本不能说十分相似,只能说一模一样。

所以,不如合二为一,用一个脚本,根据不同链接,自动调用不同工具下载。


先根据上面文章安装和配置好两个工具,yt-dlp 和 BBDown ,BBDown 还需要登录。

然后创建脚本文件

filename="videodl.sh"
touch $filename && chmod a+x $filename && vim $filename

编辑脚本文件

vim ~/videodl.sh

URLLIST 的文件里面放要下载的网址,如果想通过网页添加要下载的网址,添加 WEBLIST 变量(不了解可以不使用,文末有介绍)。

还有修改 YTDIR 和 BBDIR,分别是油管和 B 站的下载目录。如果需要,也可以为 yt-dlp 添加代理 YTPROXY。

#!/bin/bash
# download bilibili videos using BBDown
# download multiple platforms (youtube, ) videos using yt-dlp

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# 存有 视频网址 的文件路径
URLLIST="/tmp/urllist"
# WEBLIST="https://webnote.vfly2.com/urllist"
# 下载到哪个目录
YTDIR="/home/ahfei/public/web_download/youtube"
BBDIR="/home/ahfei/public/web_download/bilibili"
# yt-dlp 是否添加代理
YTPROXY="--proxy socks5://127.0.0.1:10808/"

# ------------------下面的无须配置--------------------
# 如果配置了 WEBLIST,则下载网页上的视频链接,否则,直接使用 URLLIST 中的
if [[ $WEBLIST ]]; then curl -k $WEBLIST > $URLLIST; fi

# 取文件指定的第几行的内容,变量1是文件路径,变量2是第几行
function grepline(){
    url=$(cat ${1} | head -n ${2} | tail -n 1)
    echo ${url}
}
# 根据网址链接,选择下载工具进行下载,第一个参数是网址
function dl(){
    DLURL=${1}
    # 如果 ${URL} 的文本以 https://www.youtube 开头,则执行
    if [[ ${DLURL} == "https://www.youtube"* ]]; then
    /usr/local/bin/yt-dlp ${YTPROXY} --paths ${YTDIR} ${DLURL}
    elif [[ ${DLURL} == "https://www.twitter"* ]]; then
    /usr/local/bin/yt-dlp ${YTPROXY} --paths ${YTDIR} ${DLURL}
    else
    /usr/local/bin/BBDown --multi-thread false --work-dir ${BBDIR} ${DLURL}
    fi
}

LINE=1
URL=$(grepline ${URLLIST} ${LINE})   # 先取第一行
ENDLINE=$(cat ${URLLIST} | tail -n 1)   # 取最后一行

if [[ -z $URL ]]; then
  echo "no url"
  exit 1
elif [[ $ENDLINE == "above"* ]]; then
  echo "no new url"   # 适应固定时间自动下载的,如果前面下过,就退出
  exit 1
fi

# 每次取一行,直到行的内容是 ENDLINE
until [ "${URL}" == "${ENDLINE}" ]
do
# 下载视频
dl ${URL}
LINE=$((${LINE}+1))   # 加1
URL=$(grepline ${URLLIST} ${LINE})   # 取下一行,如果是 ENDLINE,则退出循环
done

dl ${ENDLINE}   # 补上最后一行网址的下载

# 向网页记事本传送已完成的标志
echo -e "\nabove have done, but may skip" >> $URLLIST
if [[ $WEBLIST ]]; then curl -k --data-urlencode "text@${URLLIST}" $WEBLIST; fi

执行

bash -e ~/videodl.sh
# bash -ex ~/videodl.sh   # 用来 debug 的,仅记录

可以接受的链接文件格式,应该类似下面:(每行一个,不要有空行)

BV1Ee411u7hm
https://www.youtube.com/watch?v=gIbfYsQfNWs   # 不知道为什么,博客会嵌入YouTube,加入这行就不会了
BV1p34y1G79Q
BV1p34y1G79Q

定时自动执行

crontab -e

每 4 小时

0 */4 * * * /home/vfly2/bbdl.sh

结合网络记事本

命令行工具的不足在于使用上有一定门槛,以及不方便日常的零碎化使用。也就是如果每次只下载一两个视频,还需要 SSH 编辑文件并执行脚本,有些繁琐。

本博客之前有一篇介绍网络记事本的文章:分享我使用两年的极简 网页记事本 – 技焉洲 (yanh.tech)。可以利用网络记事本随时保存链接,在脚本中利用 curl 抓取内容到本地文件,然后下载。

不过这样实时性没那么高,AhFei 是将下载目录改为 Emby 的媒体库,通过 Emby 观看。这样高质量视频直接就保存了,看完后删去不需要的,不用担心视频被和谐,也不需要单独抽空下载收藏的视频。

因此除了 BBLIST,还增加了一个变量 WEBLIST ,它的值是网络记事本的网址,这里使用 AhFei 搭建的演示: https://webnote.vfly2.com/urllist ,将链接复制到这上面,一行一个。

各位读者可以直接使用这个公开实例,或者自行搭建:分享我使用两年的极简 网页记事本 – 技焉洲 (yanh.tech)


原文链接: https://yanh.tech/2023/10/download-web-page-videos/

版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech)

保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,如果能留言互动就更好了。

可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。

评论

  1. 3 天前
    2024-10-02 8:43:00

    This is really interesting, You’re a very skilled blogger. I’ve joined your feed and look forward to seeking more of your magnificent post. Also, I’ve shared your site in my social networks!

    • Frankie Riddle
      7 小时前
      2024-10-04 23:20:55

      Thank you, your sweet words encourage me a lot.

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇