🍰 Never miss your Streamer again
StreamerHelper 部署后,会在后台批量监测各个平台主播是否在线,并实时录制直播保存为视频文件,停播后投稿到b站。
(关于版权问题,投稿的参数默认一律设置的转载,简介处默认放有直播间链接)
cp templates/info-example.json templates/info.json
配置文件: /app/templates/info.json
视频目录: /app/download
容器的保活使用docker提供的restart
参数,不再使用PM2。
DNS参数可以根据地区以及实际情况进行配置。
# 本地编译
docker build -t streamerhelper .
# /your_project_path/info.json 指你配置好的info.json文件的绝对路径,后面的同理。
docker run --name stream -itd -v /your_project_path/info.json:/app/templates/info.json -v /your_project_path/download/:/app/download --dns 114.114.114.114 --restart always streamerhelper
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
# Mac
brew update
brew install ffmpeg
# Linux
sudo add-apt-repository ppa:djcj/hybrid
sudo apt-get update
sudo apt-get install ffmpeg
现在只支持扫码登录和access_token
登录,程序启动后会在控制台打印二维码,如果无法正常显示,请打开./qrcode.png
如果选择access_token
登录,需要手动填写personInfo
中access_token
的值
npm i -g pm2
# 如果装不动,添加 --registry=https://registry.npm.taobao.org 参数,npm i 同理
git clone https://github.com/ZhangMingZhao1/StreamerHelper.git && cd StreamerHelper
npm i
npm run serve
info.json
中字段的含义
字段 | 说明 | 可选值 | 是否必填 | 默认值 |
---|---|---|---|---|
debug | debug开关,开启后会有多余的记录 | true/false | 否 | false |
recycleCheckTime | 检测本地文件上传以及删除的间隔 | 否 | 300(s) | |
roomCheckTime | 检测直播间的间隔 | 否 | 600(s) | |
videoPartLimitSize | 小于此大小的文件不上传 | 否 | 100(mb) | |
logLevel | 此级别之上(包括)的日志将被推送,无视大小写 | "TRACE"|"DEBUG"|"INFO"|"WARN"|"ERROR" | 否 | "error" |
日志推送配置,WeChat 推送使用 Server 酱
字段 | 说明 | 是否必填 | 默认值 |
---|---|---|---|
enable | 是否开启 | 是 | true |
host | STMP 服务主机 | 否 | |
port | STMP 服务端口 | 否 | 465 |
from | STMP 服务邮箱,作为发送邮件的邮箱 | 否 | |
pwd | STMP 服务密码 | 否 | |
to | 接受邮件的邮箱 | 否 | |
secure | 是否开启安全服务 | 否 | true |
字段 | 说明 | 是否必填 | 默认值 |
---|---|---|---|
enable | 是否开启 | 是 | false |
sendKey | Server酱sendkey | 否 |
以下各字段的值会在登录后自动填写,如果选择access_token
登录,需要手动填写personInfo
中access_token
的值。
字段 | 说明 | 是否必填 |
---|---|---|
nickname | B站昵称 | 否 |
access_token | 用于鉴权的token 凭证 |
否 |
refresh_token | 否 | |
expires_in | 否 | |
tokenSignDate | 否 | |
mid | 否 |
是一个数组,描述需要录制的主播信息。
字段 | 说明 | 可选值 | 是否必填 | 默认值 |
---|---|---|---|---|
name | 主播名 | 是 | ||
uploadLocalFile | 是否投稿 | true/false | 否 | true |
deleteLocalFile | 是否删除本地视频文件 | true/false | 否 | true |
delayTime | 投稿成功后延迟删除本地文件的时间(需要deleteLocalFile为true) | 否 | 2(天) | |
templateTile | 稿件标题,支持占位符{{name}} {{time}} |
否 | 直播间名称 | |
desc | 稿件描述 | 否 | Powered By StreamerHelper. https://github.com/ZhangMingZhao1/StreamerHelper | |
source | 稿件直播源(需要copyright为2) | 否 | {直播间名称} 直播间 {直播间地址} | |
dynamic | 稿件粉丝动态 | 否 | {直播间名称} 直播间 {直播间地址} | |
copyright | 稿件来源,1为自制2为转载 | 1/2 | 否 | 2 |
roomUrl | 直播间地址 | 是 | ||
tid | 稿件分区 | 详见tid表 | 是 | 为空会导致投稿失败 |
tags | 稿件标签 | 是 | 至少一个,总数量不能超过12个,并且单个不能超过20个字,否则稿件投稿失败 |
{
"StreamerHelper": {
"debug": false,
"roomCheckTime": 600,
"recycleCheckTime": 1800,
"videoPartLimitSize": 100
"logLevel": "error",
"push": {
"mail": {
"enable": true,
"host": "smtp.qq.com",
"port": 465,
"from": "***@qq.com",
"pwd": ""***",
"to": ""***@gmail.com",
"secure": true
},
"wechat": {
"enable": true,
"sendKey": ""***"
}
}
},
"personInfo": {
"nickname": "",
"access_token": "",
"refresh_token": "",
"expires_in": 0,
"tokenSignDate": 0,
"mid": 0
},
"streamerInfo": [
{
"name": "主播1",
"uploadLocalFile": true,
"deleteLocalFile": true,
"templateTitle": "{{name}}{{time}} 直播",
"delayTime": 0,
"desc": "",
"source": "",
"dynamic": "",
"copyright": 2,
"roomUrl": "https://live.xxx.com/111",
"tid": 121,
"tags": [
"tag1",
"tag2",
"tag3"
]
},
{
"name": "主播2",
"uploadLocalFile": true,
"deleteLocalFile": false,
"templateTitle": "{{name}}{{time}} 直播",
"delayTime": 1,
"desc": "",
"source": "",
"dynamic": "",
"copyright": 2,
"roomUrl": "https://live.xxx.com/222",
"tid": 171,
"tags": [
"tag1",
"tag2",
"tag3"
]
}
]
}
我们的测试机器配置以及环境如下:
cpu | mem | bps | OS | Node.js |
---|---|---|---|---|
Intel i5-4590 @ 3.30GHz | 2GB | 100m | Ubuntu 18.04 | 12.18.3 |
可以同时下载4个主播,不会产生卡顿。
Thanks:
- 支持斗鱼,虎牙,b站直播,afreeca,抖音直播,快手直播,西瓜直播,花椒直播,YY 直播,战旗直播,酷狗繁星,NOW 直播,CC 直播,企鹅电竞直播
- 自动监测主播在线
- 自动上传b站
- 多p下载多p上传
- 支持多个主播
- tag可配置,对应在info.json的每个主播
- 支持access_token验证,防验证码
- 重启后同时检测本地是否有上传失败的视频文件,并上传。
- 爬虫定时区间,节省服务器流量,现支持配置房间检测间隔
- 支持docker部署
- 上传文件大小监测,解决主播断流问题出现很多小切片导致上传审核失败
- 增加一个独立脚本遍历download文件夹下的视频文件重新上传(重启上传的折中解决办法,还有解决第一次账号密码配置错误失败上传的问题)
- 支持twitch
- 规范化log,完善debug log
见:https://space.bilibili.com/3356199 或者 https://space.bilibili.com/11314291
建议使用管口大的vps,否则上传下载速度可能会受影响。更新后请及时拉取像或git pull重新pm2 stop && npm run serve。vps比较低配的话配置的主播数量不要太多,也要注意vps的磁盘大小。日志文件会自动创建,在./logs/下。
有问题加qq群1142141023,备注streamerHelper