Package: biliup
biliup支持自动录制各大主流直播平台实时直播流，包括但不限于AcFun，afreecaTV，哔哩哔哩，斗鱼，抖音，虎牙，网易CC，NICO，猫耳FM，
Twitch，YY直播等，并于录制结束后自动上传到哔哩哔哩视频网站。支持YouTube，twitch直播回放列表自动搬运至b站，如链接https://www.twitch.tv/xxxx/videos?filter=archives&sort=time支持录制哔哩哔哩，斗鱼，虎牙，Twitch平台的直播弹幕，生成B站标准格式的XML弹幕文件，可被常见的各种弹幕挂载程序使用处理自动选择上传线路，保证国内外vps上传质量和速度可分别控制下载与上传并发量支持 cos-internal，腾讯云上海内网上传，免流 + 大幅提速实验性功能：防止录制花屏（使用默认的stream-gears下载器就会有这个功能）启动时访问 localhost:19159 可使用webUI，从 v0.4.32 版本开始，不依赖配置文件可直接使用webUI，若想和低于 v0.4.32 时一致使用配置文件，请在启动前删除 data 目录, 如rm -r data/ && biliup restart更新日志：CHANGELOG.md文档地址：https://biliup.github.io/biliup详细安装教程:快速上手视频教程by@milkUbuntu、CentOS、Windows教程 by@waitsaber常见问题解决方案by@waitsaberINSTALLATION安装Python 3.7+和pip如需录制 斗鱼(Douyu) 平台，请额外安装至少一个JavaScript 解释器。
支持且不限于以下的JavaScript 解释器，点击名字可跳转至下载页。
Please install at least one of the following Javascript interpreter.
python packages:QuickJSapplications:Node.js创建配置文件config.toml# 以下为必填项[streamers."1xx直播录像"]# 替换 1xx直播录像 为 主播名url=["https://www.twitch.tv/1xx"]tags=["biliup"]# 设置直播间2[streamers."2xx直播录像"]# 注意不能与其他 主播名 重复url=["https://www.twitch.tv/2xx"]tags=["biliup"]通过 pip 安装biliup：pip3 install biliup开始使用biliup：# 默认监听 0.0.0.0:19159。可使用-H及-P选项配置。# 考虑到安全性，建议指定本地地址配合web server或者添加验证。$biliupstart# 退出$biliupstop# 重启$biliuprestart# 查看版本$biliup--version# 显示帮助以查看更多选项$biliup-h# 指定配置文件路径$biliup--config./config.yamlstart从 v0.2.15 版本开始，配置文件支持 toml 格式，详见config.toml，
yaml配置文件完整内容可参照config.yaml。FFmpeg作为可选依赖。如果还有问题可以加群讨论。使用上传功能需要登录B站，通过命令行投稿工具获取 cookies.json，并放入启动 biliup 的路径即可ARM平台用户，需要使用到stream-gears（默认下载器与上传器）进行下载和上传的，请参考此教程降级stream-gears版本。https://github.com/biliup/biliup/discussions/407Linux下以daemon进程启动，录像和日志文件保存在执行目录下，程序执行过程可查看日志文件。启动之后使用命令ps -A | grep biliup查看进程biliup是否启动成功。Docker使用 🔨方式一 拉取镜像请注意替换 /host/path 为宿主机下载目录从自定义的配置文件启动# 在下载目录创建配置文件vim/host/path/config.toml# 启动biliup的docker容器dockerrun-P--namebiliup-v/host/path:/opt-dghcr.io/biliup/caution:master从自定义的配置文件启动# 在下载目录创建配置文件vim/host/path/config.toml# 启动biliup的docker容器，并启用用户验证。请注意替换 yourpassword 为你的密码。dockerrun-P--namebiliup-v/host/path:/opt-p19159:19159-d--restartalwaysghcr.io/biliup/caution:latest--passwordyourpasswordWeb-UI 默认用户名为 biliup。从默认配置文件启动dockerrun-P--namebiliup-v/host/path:/opt-p19159:19159-d--restartalwaysghcr.io/biliup/caution:latest--passwordyourpassword方式二 手动构建镜像# 进入biliup目录cdbiliup# 构建镜像sudodockerbuild.-tbiliup# 启动镜像sudodockerrun-P-dbiliup进入容器 📦查看容器列表，找到你要进入的容器的imageIdsudodockerps进入容器sudodockerexec-itimageId/bin/bash从源码运行biliup下载源码:git clone https://github.com/ForgQi/bilibiliupload.git安装:pip3 install -e .启动:python3 -m biliup构建:$npminstall
$npmrunbuild
$python3-mbuild调试 webUI:python3 -m biliup --static-dir publicyaml配置文件示例可选项见完整配置文件,
tid投稿分区见Wikistreamers:xxx直播录像:url:-https://www.twitch.tv/xxxtags:biliupEMBEDDING BILIUP如果你不想使用完全自动托管的功能，而仅仅只是想嵌入biliup作为一个库来使用这里有两个例子可以作为参考上传frombiliup.plugins.bili_webupimportBiliBili,Datavideo=Data()video.title='视频标题'video.desc='视频简介'video.source='添加转载地址说明'# 设置视频分区,默认为122 野生技能协会video.tid=171video.set_tag(['星际争霸2','电子竞技'])video.dynamic='动态内容'lines='AUTO'tasks=3dtime=7200# 延后时间，单位秒withBiliBili(video)asbili: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")forfileinfile_list:video_part=bili.upload_file(file,lines=lines,tasks=tasks)# 上传视频，默认线路AUTO自动选择，线程数量3。video.append(video_part)# 添加已经上传的视频video.delay_time(dtime)# 设置延后发布（2小时~15天）video.cover=bili.cover_up('/cover_path').replace('http:','')ret=bili.submit()# 提交视频下载frombiliup.downloaderimportdownloaddownload('文件名','https://www.panda.tv/1150595',suffix='flv')使用建议1. VPS上传线路选择国内VPS网络费用较高，建议使用国外VPS，根据机器的硬盘等资源设置合理并发量, 选择kodo线路较容易跑满带宽。b站上传目前有两种模式，分别为bup和bupfetch模式。bup：国内常用模式，视频直接上传到b站投稿系统。bupfetch：目前见于国外网络环境，视频首先上传至第三方文件系统，上传结束后通知bilibili投稿系统，再由b站投稿系统从第三方系统拉取视频，以保证某些地区用户的上传体验。bup模式支持的上传方式为upos，其线路有：ws（网宿）qn（七牛）bda2（百度）bupfetch模式支持的上传方式及线路有：kodo（七牛）已失效gcs (谷歌）已失效bos (百度）已失效国内基本选择upos模式的bda2线路。国外多为upos模式的ws和qn线路，也有bupfetch模式的kodo、gcs线路。bilibili采用客户端和服务器端线路探测相结合的方式，服务器会返回可选线路，客户端上传前会先发包测试选择一条延迟最低的线路，保证各个地区的上传质量。2. 登录方案登录有两种方案：操作浏览器模拟登录通过b站的OAuth2接口对于滑动验证码可进行二值化、灰度处理找缺口计算移动像素，系统会上传分析你的拖动行为，模拟人操作轨迹，提供加速度、抖动等，如直接拖动到目标位置不能通过验证，提示：“拼图被怪物吃了”。滑动验证码系统会学习，需不断更新轨迹策略保证通过验证的成功率。OAuth2接口要提供key，需逆向分析各端3. 推荐biliup配置线程池限制并发数，减少磁盘占满的可能性。检测到下载情况卡死或者下载超时，biliup会重试三次保证可用性。代码更新后将在空闲时自动重启。4. 关于录制的XML弹幕文件如何使用使用方法有很多种：使用DanmakuFactory将XML弹幕文件转化为ASS字幕文件，然后使用一般播放器外挂加载字幕AList检测到同文件夹下的XML文件会自动挂载弹幕，实现带弹幕的录播效果使用弹弹play可直接挂载XML弹幕文件观看自定义插件下载整合了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)deftranscoding(data):passLINUX下配置开机自启开机自启可参照以下模板创建systemd unit:创建service文件：$nano~/.config/systemd/user/biliupd.serviceservice文件的内容[Unit]
Description=Biliup Startup
Documentation="https://biliup.github.io/biliup"
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
WorkingDirectory=[在此填入你的config所在目录]
ExecStart=/usr/bin/biliup -v
ExecReload=/usr/bin/biliup restart
ExecStop=/usr/bin/biliup stop

[Install]
WantedBy=default.target启用service并启动：$systemctl--userenablebiliupd
$systemctl--userstartbiliupdDeprecatedselenium操作浏览器上传两种方式(详见bili_chromeup.py)Windows图形界面版在release中下载AutoTool.msi进行安装AutoTool.msi相关配置示例在config.yaml、config.toml文件中，如直播间地址，b站账号密码等等由于目前使用账号密码登录，大概率触发验证。请使用命令行工具登录，将登录返回的信息填入配置文件，且使用引号括起yaml中cookie的数字代表其为字符串关于B站为什么不能多p上传目前bilibili网页端是根据用户权重来限制分p数量的，权重不够的用户切换到客户端的提交接口即可解除这一限制。
用户等级大于3，且粉丝数>1000，web端投稿不限制分p数量CreditsThanksykdl, youtube-dl, streamlinkprovides downloader.ThanksTHMonster/danmaku.GUI：B站投稿客户端 biliup-appStars