全自动录播、投稿工具,也支持twitch、ytb频道搬运。提供分p上传b站接口,腾讯云内网免流+大幅提速

全自动录播、投稿工具,也支持twitch、ytb频道搬运。提供分p上传b站接口,腾讯云内网免流+大幅提速

Property
Jul 4, 2022 11:12 AM
Status
Date
URL
https://github.com/biliup/biliup
notion image

notion image

biliup

notion image
notion image
notion image
  • 支持自动录制各大直播平台实时流,上传到bilibili
  • 自动选择上传线路,保证国内外vps上传质量和速度
  • 可分别控制下载与上传并发量
  • 支持 cos-internal,腾讯云上海内网上传,免流 + 大幅提速
  • 实验性功能:启动时加入-http选项并访问localhost:19159可使用webUI

INSTALLATION

  1. 创建配置文件 config.toml
    1. # 以下为必填项
      [streamers."1xx直播录像"] # 设置直播间1
      url = ["https://www.twitch.tv/1xx"]
      tags = ["biliup"]
      
      # 设置直播间2
      [streamers."2xx直播录像"]
      url = ["https://www.twitch.tv/2xx"]
      tags = ["biliup"]
  1. 安装 pip 并通过 pip 安装 biliuppip3 install biliup
# 在创建配置文件的目录启动 biliup
$ biliup start
# 退出
$ biliup stop
# 重启
$ biliup restart
# 查看版本
$ biliup --version
# 显示帮助以查看更多选项
$ biliup -h
# 启动 web ui, 默认 0.0.0.0:19159。 可使用-H-P选项配置。考虑到安全性,建议指定本地地址配合web server或者添加验证。
$ biliup --http start
# 指定配置文件路径
$ biliup --config ./config.yaml start
从 v0.2.15 版本开始,配置文件支持 toml 格式,详见 config.toml, yaml配置文件完整内容可参照 config(demo).yamlFFmpeg 作为可选依赖。如果还有问题可以 加群讨论
Linux下以daemon进程启动,录像和日志文件保存在执行目录下,程序执行过程可查看日志文件。 ps -A | grep biliup 查看进程是否启动成功。 详细安装过程可看 @waitsaber 写的 UbuntuCentOSWindows 教程 与 常见问题 解决方案

Docker使用

notion image

方式一

vim /host/path/config.yaml
docker run -P --name biliup -v /host/path:/opt -d ghcr.io/biliup/biliup/caution:latest

方式二

cd biliup
sudo docker build . -t biliup
sudo docker run -P -d biliup

进入容器

notion image
sudo docker ps (找到你的imageId)
sudo docker exec -it imageId /bin/bash

调试源码

  • 安装: pip3 install -e .
  • 启动: python3 -m biliup
  • 构建:
    • $ npm install
      $ npm run build
      $ python3 -m build
  • 调试 webUI: python3 -m biliup --http --static-dir public

yaml配置文件示例

可选项见完整配置文件, tid投稿分区见Wiki
user:
 cookies:
 SESSDATA: your SESSDATA
 bili_jct: your bili_jct
 DedeUserID__ckMd5: your ckMd5
 DedeUserID: your DedeUserID
 access_token: your access_key

streamers:
 xxx直播录像:
 url:
 - https://www.twitch.tv/xxx
 tags: biliup

EMBEDDING BILIUP

如果你不想使用完全自动托管的功能,而仅仅只是想嵌入biliup作为一个库来使用这里有两个例子可以作为参考

上传

from biliup.plugins.bili_webup import BiliBili, Data

video = Data()
video.title = '视频标题'
video.desc = '视频简介'
video.source = '添加转载地址说明'
# 设置视频分区,默认为122 野生技能协会
video.tid = 171
video.set_tag(['星际争霸2', '电子竞技'])
video.dynamic = '动态内容'
lines = 'AUTO'
tasks = 3
dtime = 7200 # 延后时间,单位秒
with BiliBili(video) as bili:
 bili.login("bili.cookie", {
 'cookies':{
 'SESSDATA': 'your SESSDATA',
 'bili_jct': 'your bili_jct',
 'DedeUserID__ckMd5': 'your ckMd5',
 'DedeUserID': 'your DedeUserID'
 },'access_token': 'your access_key'})
 # bili.login_by_password("username", "password")
 for file in file_list:
 video_part = bili.upload_file(file, lines=lines, tasks=tasks) # 上传视频,默认线路AUTO自动选择,线程数量3。
 video.append(video_part) # 添加已经上传的视频
 video.dtime = dtime # 设置延后发布(2小时~15天)
 video.cover = bili.cover_up('/cover_path').replace('http:', '')
 ret = bili.submit() # 提交视频

下载

from biliup.downloader import download

download('文件名', 'https://www.panda.tv/1150595', suffix='flv')

使用建议

国内VPS网络费用较高,建议使用国外VPS,根据机器的硬盘等资源设置合理并发量, 选择kodo线路较容易跑满带宽。
b站上传目前有两种模式,分别为bup和bupfetch模式。
bup模式支持的上传方式为upos,其线路有:
  • ws(网宿)
  • qn(七牛)
  • bda2(百度)
bupfetch模式支持的上传方式及线路有:
  1. kodo(七牛)
  1. gcs(谷歌)
  1. bos(百度)
国内基本选择upos模式的bda2线路。国外多为upos模式的ws和qn线路,也有bupfetch模式的kodo、gcs线路。bilibili采用客户端和服务器端线路探测相结合的方式,服务器会返回可选线路,客户端上传前会先发包测试选择一条延迟最低的线路,保证各个地区的上传质量。
登录有两种方案:
    • 操作浏览器模拟登录
    • 通过b站的OAuth2接口
线程池限制并发数,减少磁盘占满的可能性。检测下载情况卡死或者下载超时,重试三次保证可用性。代码更新后将在空闲时自动重启。
下载整合了ykdl、youtube-dl、streamlink,不支持或者支持的不够好的网站可自行拓展。 下载和上传模块插件化,如果有上传或下载目前不支持平台的需求便于拓展。
下载基类在engine/plugins/base_adapter.py中,拓展其他网站,需要继承下载模块的基类,加装饰器@Plugin.download
拓展上传平台,继承engine/plugins/upload/__init__.py文件中上传基类,加装饰器@Plugin.upload
实现了一套基于装饰器的事件驱动框架。增加其他功能监听对应事件即可,比如下载后转码:
# e.p.给函数注册事件
# 如果操作耗时请指定block=True, 否则会卡住事件循环
@event_manager.register("download_finish", block=True)
def transcoding(data):
 pass
''' Please install at least one of the following Javascript interpreter.' python packages: PyChakra, quickjs applications: Gjs, CJS, QuickJS, JavaScriptCore, Node.js, etc.'''

Deprecated

    • selenium操作浏览器上传两种方式(详见bili_chromeup.py)
    • Windows图形界面版在release中下载AutoTool.msi进行安装AutoTool.msi
    • 相关配置示例在config.yaml文件中,如直播间地址,b站账号密码 由于目前使用账号密码登录,大概率触发验证。请使用命令行工具登录,将登录返回的信息填入配置文件, 且使用引号括起yaml中cookie的数字代表其为字符串,

Credits

  • Thanks ykdl, youtube-dl, streamlink provides downloader.
类似项目:
notion image
:StreamerHelper