stream download and upload
Project description
biliup
文档地址:https://forgqi.github.io/biliup
详细安装过程可看 @waitsaber 写的 Ubuntu 和 CentOS 教程 与 常见问题 解决方案
- 支持自动录制各大直播平台实时流,上传到bilibili。
- 支持YouTube频道自动搬运
- 支持twitch直播回放列表自动搬运至b站,如链接https://www.twitch.tv/xxxx/videos?filter=archives&sort=time
- 自动选择上传线路,保证国内外vps上传质量和速度
- 可分别控制下载与上传并发量
- 支持Web API与客户端API上传
相关配置示例在config.yaml文件中,如直播间地址,b站账号密码
由于目前使用账号密码登录,大概率触发验证。请使用命令行工具登录,将登录返回的信息填入配置文件,且使用引号括起yaml中cookie的数字代表其为字符串
演示视频:BV1ip4y1x7Gi
登录B站获取cookie和token:命令行投稿工具
B站图形界面:投稿客户端GUI
INSTALLATION
- 创建配置文件config.yaml,内容参照config(demo).yaml (或可调整配置后直接修改文件名)
- 安装 FFmpeg, pip
- 安装 biliup:
pip3 install biliup
# 启动
$ biliup start
# 退出
$ biliup stop
# 重启
$ biliup restart
# 查看版本
$ biliup --version
# 显示帮助以查看更多选项
$ biliup -h
Linux下以daemon进程启动,录像和日志文件保存在执行目录下,程序执行过程可查看日志文件。
ps -A | grep biliup 查看进程是否启动成功。
Docker使用 🔨
方式一
vim /host/path/config.yaml
docker run --name biliup -v /host/path:/opt -d ghcr.io/forgqi/biliup/caution
方式二
cd biliup
sudo docker build . -t biliup
sudo docker run -d biliup
进入容器 📦
sudo docker ps (找到你的imageId)
sudo docker exec -it imageId /bin/bash
调试源码
- 下载源码: git clone https://github.com/ForgQi/bilibiliupload.git
- 安装:
pip3 install -e .或者pip3 install -r requirements.txt - 启动:
python3 -m biliup
最小配置文件示例
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
EMBEDDING BILIUP
如果你不想使用完全自动托管的功能,而仅仅只是想嵌入biliup作为一个库来使用这里有两个例子可以作为参考
上传
from biliup.plugins.bili_webup import BiliBili, Data
video = Data()
video.title = '视频标题'
video.desc = '视频简介'
video.source = '添加转载地址说明'
# 设置视频分区,默认为160 生活分区
video.tid = 171
video.set_tag(['星际争霸2', '电子竞技'])
with BiliBili(video) as bili:
bili.login_by_password("username", "password")
for file in file_list:
video_part = bili.upload_file(file) # 上传视频
video.append(video_part) # 添加已经上传的视频
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
Deprecated
selenium操作浏览器上传两种方式(详见bili_chromeup.py)Windows图形界面版在release中下载AutoTool.msi进行安装AutoTool.msi QQ群:837362626
关于B站为什么不能多p上传
目前bilibili网页端是根据用户权重来限制分p数量的,权重不够的用户切换到客户端的提交接口即可解除这一限制。 用户等级大于3,且粉丝数>1000,web端投稿不限制分p数量
Credits
- Thanks
ykdl, youtube-dl, streamlinkprovides downloader.
类似项目:
:StreamerHelper
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file biliup-0.2.2.tar.gz.
File metadata
- Download URL: biliup-0.2.2.tar.gz
- Upload date:
- Size: 40.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cbabc6c6bb78e6d9f202ed28e8f02032666d4cb324612c73008d33ceb82747b
|
|
| MD5 |
48b3aadf7df31a5dea58010d47c1755d
|
|
| BLAKE2b-256 |
c30b69496ac63313cc2b82af83c35b0ef914e486ad2080ea8eb732a8bb7ff79b
|
File details
Details for the file biliup-0.2.2-py3-none-any.whl.
File metadata
- Download URL: biliup-0.2.2-py3-none-any.whl
- Upload date:
- Size: 46.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ec3272362e36b91c7e2cebc6065e17a417454a0b5a483b38e5ac48371211f48
|
|
| MD5 |
fdc27fc03270705f82c960319ab45c5e
|
|
| BLAKE2b-256 |
34dcf95771f53fe13b997106c1a1bb68f86bcdd9b97f153b7b0b5860f2c195a0
|