自动下载B站收藏夹以及up主更新
脚本不是下载收藏夹全部视频的,只下载最新一条视频。
如果你需要把收藏夹全部视频下载下来,请看这几个工具:
为啥需要呢?
B站收藏了好多舞蹈区的视频,但有的up过段时间就删除稿件了,也有的被B站和谐了
如果可以定时扫描我的收藏夹或者某些up的更新,我的收藏夹或者up的投稿有新的就自动下载到本地,然后传到云盘。
找到一个脚本,原版:https://blog.left.pink/archives/2712
https://github.com/Left024/BiliFavoritesDownloader
稍微改了一下,修改版:https://github.com/hechuan4/BiliFavoritesDownloader
修改了以下
因为you-get
默认下载视频格式为h265/hevc
格式,导致谷歌浏览器(大多数浏览器都)在线播放不了,hevc授权费太贵了所以替换为lux
可默认下h264
格式
2024/1/12 谷歌浏览器早就可以解码hevc
了,不过还是用lux
吧,毕竟安装简单,you-get
还得安装python
增加一个bilidown-lux-run.sh
脚本用来传递参数,每行可以对应不同的用户和收藏夹
快快把你关注的舞蹈区 up 留言给我
#!/bin/bash
/root/BiliFavoritesDownloader/bilidown-lux.sh "fav" "28921055" "1684176855" "姬2"
/root/BiliFavoritesDownloader/bilidown-lux.sh "user/video" "1458409749" "0" "汤圆的汤圆儿"
# 例1 如果是收藏夹的话:/root/BiliFavoritesDownloader/bilidown-lux.sh "fav" "你的B站id" "收藏夹id" "你的收藏夹名字"
# 例2 如果是某个up主的更新稿件的话:/root/BiliFavoritesDownloader/bilidown-lux.sh "user/video" "up主id" "0" "up主名字",每行可以对应不同的用户和收藏夹
# 详看:https://docs.rsshub.app/social-media.html#bilibili
功能
- telegram 通知
- 最高清晰度下载(需要大会员)
- 邮件通知
- 封面图下载
- xml 转 ass
- 下载完成上传 OneDrive
使用
注:我使用的ubuntu系统,理论上debian系的能用,centos系的需要自行修改.
#root用户登陆
#下载脚本到vps
#安装ffmpeg
apt install ffmpeg
#安装lux
wget https://github.com/iawia002/lux/releases/download/v0.17.2/lux_0.17.2_Linux_x86_64.tar.gz
tar -zxvf lux*.tar.gz
chmod 0777 lux
cp lux /usr/local/bin/
rm -rf lux*
#命令行输入lux -v
#有提示:lux: version xxxx, A fast and simple video downloader.
#证明安装成功
# 这里有一点注意,如果你的机器不是amd64/x86的话,记得把下载链接改下。
运行前记得给文件一下权限,chmod +x
,放进root
目录就行
原理/安装
是定时检查 RSS,然后通过 lux 进行下载(需要额外安装 ffmpeg,否则无法合并下载完的视频且不会自动下载最高画质)
https://docs.rsshub.app/social-media.html#bilibili
建议
建议用别人的rsshub服务或者自己用docker建一个,官方设置的缓存时间太长了,导致B站已经点了收藏rsshub这里却还没刷新.
如何建自己的rsshub服务,官方已经给了教程了:https://docs.rsshub.app/install/#docker-jing-xiang
或者看下面教程
必要
脚本中注释已经写的很明白了,必须要修改的是bilidown-lux.sh文件中的RSS地址
和bilidown-lux-run.sh文件中,你要下载的 up主 的 id 和昵称
可选修改:视频存放地址
默认的视频存放地址
为/root/BiliFavoritesDownloader/bili-down/
目录
邮件通知使用的是 mailutils
,不是所有 VPS 都能用,自行测试(我觉的还是电报机器人通知好使)
必要2
如果是你的大会员用户
记得把bilidown-lux.sh文件的61行.if [[ $quality =~ "1080P" ]]; then
改成4K
注意大写!
不是大会员就不用改了
电报通知
telegram bot 的 token 和 chat_id 自行搜索获取方法 点我谷歌一下
cookies
高画质下载需要设置cookies.txt
,默认存放在/root/BiliFavoritesDownloader/bili-cookies/
Chrome 可以安装 EditThisCookie 插件,将导出格式
设置为Netscape HTTP Cookies File
然后导出粘贴在cookies.txt
中即可
弹幕转化
xml转ass使用的是DanmakuFactory,这里提供了已编译好的可执行文件,在/root/BiliFavoritesDownloader/bili-cookies/
目录下,一般不需要动了。
无法转换的话可能是权限问题,给下权限:chmod 0777 DanmakuFactory
上传云盘
OneDrive 使用的是rclone,需要自行配置。139行,自行修改
百度云 使用的是BaiduPCS-Go,需要自行配置
设置定时任务
配置完成后设置crontab
定时任务即可使用,默认十分钟循环一次
# 输入
crontab -e
# 然后填上一行
*/10 * * * * /bin/bash /root/BiliFavoritesDownloader/bilidown-lux-run.sh >/dev/null 2>&1
不会crontab的可以看:https://www.runoob.com/linux/linux-comm-crontab.html 在线测试工具看看你写的定时任务对不对:https://tool.lu/crontab/
在线生成定时任务的工具:https://www.bejson.com/othertools/cron/
上传完删除本地文件
第63行
效果:
docker自建rsshub服务
只是建议:(非必要,可以直接用rsshub官方的,或者别人的)
# 安装docker,自己查如何装吧
# 运行下面的命令下载 RSSHub 镜像
docker pull diygod/rsshub
# 然后运行 RSSHub 即可
docker run -d --name rsshub -p 1200:1200 diygod/rsshub
# 在浏览器中打开 http://你的域名/ip地址:1200/
# 能打开就够行,能用。
# 重启服务器后容器需要重启启动
# 开启容器
docker start rsshub
# 您可以使用下面的命令来关闭 RSSHub
docker stop rsshub
# 删除旧容器
docker stop rsshub
docker rm rsshub
# 高级操作
# 添加配置
# 配置运行在 docker 中的 RSSHub,最便利的方法是使用 docker 环境变量
# 以设置缓存时间为 1 小时举例,只需要在运行时增加参数:-e CACHE_EXPIRE=3600
# 直接复制下面这个就行,记得改缓存时间
docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=60 -e GITHUB_ACCESS_TOKEN=example diygod/rsshub
# 如果只是自己本地用的话,我设置的缓存时间为60秒
简单说下配置telegram提醒
配置telegram token
和chat id
创建bot
打开 @BotFather
url: https://t.me/BotFather 打开与它的聊天界面
- 输入
/newbot
后回车 - 设置唯一名称如
ceshibot
,当然名字可能被使用了,你可以先随便设置一个,想好了再改就行。 - 设置成功。会返回给你重要的
API token
获取 chatId
观察这个 url https://api.telegram.org/bot{token}/getUpdates
使用第二步获得的 token
替换上述 url 中的 {token}
然后得到新的 url,复制粘贴到浏览器地址栏,回车请求。不出意外你会得到如下 response
{
"ok": true,
"result": []
}
很好。这时你打开你的 bot,随便和它说一句话,比如给它发一句 “Hello World”,然后重新请求一遍上述的 url(替换过 token 的),不出意外你收到的 response 是这样了
其中的 result[0].message.chat.id 的值就是 chatId
也就是 123456789
知道了 token 和 chatId 就可以使用 bot 了。
转载:https://hellodk.cn/post/743