Featured image of post 自动下载B站收藏夹以及up主更新

自动下载B站收藏夹以及up主更新

自动下载B站收藏夹以及up主更新

脚本不是下载收藏夹全部视频的,只下载最新一条视频。

如果你需要把收藏夹全部视频下载下来,请看这几个工具:

为啥需要呢?

B站收藏了好多舞蹈区的视频,但有的up过段时间就删除稿件了,也有的被B站和谐了

bilidown-img-1

如果可以定时扫描我的收藏夹或者某些up的更新,我的收藏夹或者up的投稿有新的就自动下载到本地,然后传到云盘。

找到一个脚本,原版:https://blog.left.pink/archives/2712

https://github.com/Left024/BiliFavoritesDownloader

稍微改了一下,修改版:https://github.com/hechuan4/BiliFavoritesDownloader

修改了以下

修改原版的you-get下载为lux下载

因为you-get默认下载视频格式为h265/hevc格式,导致谷歌浏览器(大多数浏览器都)在线播放不了,hevc授权费太贵了所以替换为lux可默认下h264格式

2024/1/12 谷歌浏览器早就可以解码hevc了,不过还是用lux吧,毕竟安装简单,you-get还得安装python

增加一个bilidown-lux-run.sh脚本用来传递参数,每行可以对应不同的用户和收藏夹

快快把你关注的舞蹈区 up 留言给我

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/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系的需要自行修改.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#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定时任务即可使用,默认十分钟循环一次

1
2
3
4
5
# 输入
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行

效果:

bilidown-img-2

docker自建rsshub服务

只是建议:(非必要,可以直接用rsshub官方的,或者别人的)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 安装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 tokenchat id

创建bot

打开 @BotFatherurl: https://t.me/BotFather 打开与它的聊天界面

  • 输入 /newbot 后回车
  • 设置唯一名称如ceshibot,当然名字可能被使用了,你可以先随便设置一个,想好了再改就行。
  • 设置成功。会返回给你重要的 API token

获取 chatId

观察这个 url https://api.telegram.org/bot{token}/getUpdates

使用第二步获得的 token 替换上述 url 中的 {token} 然后得到新的 url,复制粘贴到浏览器地址栏,回车请求。不出意外你会得到如下 response

1
2
3
4
{
    "ok": true,
    "result": []
}

很好。这时你打开你的 bot,随便和它说一句话,比如给它发一句 “Hello World”,然后重新请求一遍上述的 url(替换过 token 的),不出意外你收到的 response 是这样了

其中的 result[0].message.chat.id 的值就是 chatId 也就是 123456789

知道了 token 和 chatId 就可以使用 bot 了。

转载:https://hellodk.cn/post/743

萌ICP备 20202244号
Built with Hugo
主题 StackJimmy 设计
访问量 - span> span> 访客数 - span>人次 span> i> 本文总阅读量