Skip to main content

stream download and upload

Project description

biliup

GitHub Telegram Discord chat

  • 支持自动录制各大主流直播平台实时直播流,包括但不限于acfun,afreecaTV,哔哩哔哩,斗鱼,抖音,虎牙,网易CC,猫耳FM,Twitch,YY直播等,并于录制结束后上传到哔哩哔哩视频网站。
  • 支持YouTube,twitch直播回放列表自动搬运至b站,如链接https://www.twitch.tv/xxxx/videos?filter=archives&sort=time
  • 自动选择上传线路,保证国内外vps上传质量和速度
  • 可分别控制下载与上传并发量
  • 支持 cos-internal,腾讯云上海内网上传,免流 + 大幅提速
  • 实验性功能:
    • 防止录制花屏
    • 启动时加入--http选项并访问localhost:19159可使用webUI (建议使用toml配置文件)

详细安装教程:

更新日志CHANGELOG.md

文档地址https://biliup.github.io/biliup

INSTALLATION

  1. 创建配置文件 config.toml
    # 以下为必填项
    [streamers."1xx直播录像"] # 设置直播间1
    url = ["https://www.twitch.tv/1xx"]
    tags = ["biliup"]
    
    # 设置直播间2
    [streamers."2xx直播录像"]
    url = ["https://www.twitch.tv/2xx"]
    tags = ["biliup"]            
    
  2. 安装 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.yamlFFmpeg 作为可选依赖。如果还有问题可以 加群讨论

使用上传功能需要登录B站,通过 命令行投稿工具 获取 cookies.json,并放入启动 biliup 的路径即可

Linux下以daemon进程启动,录像和日志文件保存在执行目录下,程序执行过程可查看日志文件。 ps -A | grep biliup 查看进程是否启动成功。

Docker使用 🔨

方式一 拉取镜像

从配置文件启动

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

从配置文件启动,并启动web-ui

vim /host/path/config.toml
docker run -P --name biliup -v /host/path:/opt -p 19159:19159 -d --restart always ghcr.io/biliup/caution:latest --http --password yourpassword

yourpassword为web-ui的密码,用户名为biliup

直接启动web-ui 自动生成配置文件

docker run -P --name biliup -v /host/path:/opt -p 19159:19159 -d --restart always ghcr.io/biliup/caution --http --password yourpassword

方式二 手动构建镜像

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

进入容器 📦

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

调试源码

  • 下载源码: git clone https://github.com/ForgQi/bilibiliupload.git
  • 安装: 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

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.delay_time(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:国内常用模式,视频直接上传到b站投稿系统。
  • bupfetch:目前见于国外网络环境,视频首先上传至第三方文件系统,上传结束后通知bilibili投稿系统,再由b站投稿系统从第三方系统拉取视频,以保证某些地区用户的上传体验。

bup模式支持的上传方式为upos,其线路有:

  • ws(网宿)
  • qn(七牛)
  • bda2(百度)

bupfetch模式支持的上传方式及线路有:

  • kodo(七牛)
  • gcs (谷歌)已失效
  • bos (百度)已失效

国内基本选择upos模式的bda2线路。国外多为upos模式的ws和qn线路,也有bupfetch模式的kodo、gcs线路。bilibili采用客户端和服务器端线路探测相结合的方式,服务器会返回可选线路,客户端上传前会先发包测试选择一条延迟最低的线路,保证各个地区的上传质量。


登录有两种方案:

  • 操作浏览器模拟登录

  • 通过b站的OAuth2接口

对于滑动验证码可进行二值化、灰度处理找缺口计算移动像素,系统会上传分析你的拖动行为,模拟人操作轨迹,提供加速度、抖动等,如直接拖动到目标位置不能通过验证,提示:“拼图被怪物吃了”。滑动验证码系统会学习,需不断更新轨迹策略保证通过验证的成功率。
OAuth2接口要提供key,需逆向分析各端

线程池限制并发数,减少磁盘占满的可能性。检测下载情况卡死或者下载超时,重试三次保证可用性。代码更新后将在空闲时自动重启。

下载整合了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.'''

开机自启可参照以下模板创建systemd unit:

创建service文件:

$ nano ~/.config/systemd/user/biliupd.service

[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 --user enable biliupd
$ systemctl --user start biliupd

Deprecated

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

关于B站为什么不能多p上传
目前bilibili网页端是根据用户权重来限制分p数量的,权重不够的用户切换到客户端的提交接口即可解除这一限制。 用户等级大于3,且粉丝数>1000,web端投稿不限制分p数量

Credits

  • Thanks ykdl, youtube-dl, streamlink provides downloader.

GUI:B站投稿客户端 biliup-app

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

biliup-0.4.1.tar.gz (265.7 kB view hashes)

Uploaded Source

Built Distribution

biliup-0.4.1-py3-none-any.whl (277.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page