Giter Club home page Giter Club logo

ddrecorder's Introduction

DDRecorder

Headless 全自动 B 站直播录播、切片、上传一体工具

>=1.1.2 版本增加了自动检查更新功能,需要连接至 Github 服务器,敬请留意。

感谢

FortuneDayssss/BilibiliUploader MoyuScript/bilibili-api ForgQi/biliup-rs fastnlp/fastHan

参考文献

@inproceedings{geng-etal-2021-fasthan,
  author = {Geng, Zhichao and Yan, Hang and Qiu, Xipeng and Huang, Xuanjing},
  title = {fastHan: A BERT-based Multi-Task Toolkit for Chinese NLP},
  booktitle = {Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing: System Demonstrations},
  year = {2021},
  pages = {99--106}, 
  url = {https://aclanthology.org/2021.acl-demo.12}
}

安装指南(Windows)

  1. 在 Release 下载 zip 包解压。
  2. 修改配置文件 config.json 可以选择使用自带的 DDRecorderConfigManager(源码:AsaChiri/DDRecorderConfigManager)
  3. 双击运行 DDRecorder.exe(这将使用 config.json)或 DDRecorder.exe <配置文件>

安装指南(MacOS/Linux)

  1. 安装 Python >= 3.9 https://www.python.org/downloads/release/python-3104/
  2. 安装 ffmpeg https://ffmpeg.org/download.html
  3. 执行 pip install -r requirements.txt
  4. 修改 config 文件夹下的配置文件 config.json
  5. 执行 python main.py <配置文件>

配置文件字段解释

关于登录

由于 B 站风控原因,账号密码登录失败(被风控)的可能性极高,建议获取 access_token,refresh_token 和 cookies 项目填入配置文件中;目前推荐使用 biliup-rs 进行一次登录获取 access_token,refresh_token 和 cookies 项目后填入配置文件中。如果您使用 DDRecorderConfigManager,则相应功能已经集成。

关于占位符

目前可以在配置文件里使用的占位符如下:

  • {date} :日期(格式为“2022 年 02 月 02 日”)
  • {room_name} :最近的直播间标题
  • {year},{month},{day},{hour},{minute},{second}:直播开始时间的年、月、日、时、分、秒
  • {rough_time}:直播开始时间的大概描述(凌晨、上午、下午、晚上)

关于手动切片

手动切片功能类似于 Nvidia 的 ShadowPlay 功能,在配置文件中的"manual_clipper"部分可以找到手动切片器相关设置。

在启用相关功能并指定接受指令的用户 UID,该用户可以在直播时发送特定弹幕来控制 DDRecorder 进行切片。

特定弹幕格式为/DDR clip <回溯时间(秒)> [描述文本]。其中描述文本可选,如果不指定描述文本,将会自动设置一个“手动切片_{编号}”的表述文本。

比如说,如果想要截取当前时间向前 5 分钟的内容,只需要发送/DDR clip 300

如果想要指定描述文本为“主播锐评 ylg”,发送/DDR clip 60 主播锐评ylg即可。

手动切片的将会输出到与自动切片相同的文件夹,因此受到 uploader-clippers 中的设置项控制。即如果打开了自动上传切片功能,手动切片同样也会上传,不过分 P 名将不再是自动采集的弹幕关键词,而是上面所述的描述文本。

全局设置(root 部分)

  • check_interval: 直播间开播状态检查间隔,单位为秒,每个监控直播间单独计数,因此如果监控直播间较多,建议适当调大。由于 B 站 API 访问次数限制,建议不要小于 30。默认:100
  • print_interval:控制台消息打印间隔,单位为秒。
  • data_path: 数据文件路径。默认:"./"(即程序所在路径)
  • logger: 日志相关设置
    • log_path: 日志文件路径。默认:"./log"
    • log_level: 日志级别,可选 DEBUG\INFO\WARN
  • request_header: 请求时使用的头。代码中已经包含了一个默认的,在这里进行调整将会覆盖默认值,如无必要请留空。
  • uploader: 上传器相关设置
    • lines: 上传使用的线路,可以选择 bda2, kodo, ws, qn, cos, cos-internal(支持腾讯云内网免流 + 提速)
  • enable_baiduyun:是否开启百度云功能。

直播间特定设置(spec 部分,此部分是一个数组,如果需要同时监控多个直播间,依次添加至数组中即可)

  • room_id: 房间号
  • recorder: 录制器相关设置
    • keep_raw_record: 是否保留原始录像(flv)文件(录制器最后会合并所有 flv 文件导出 mp4)。默认:true
  • parser: 弹幕分析器相关设置
    • interval: 弹幕计数间隔,单位秒。默认:30.
    • up_ratio: 开始切片位置弹幕数量与上一个时段弹幕数量之比的阈值。默认:2.5
    • down_ratio: 结束切片位置弹幕数量与上一个时段弹幕数量之比的阈值。默认:0.75
    • topK: 提取弹幕关键词的数量。默认:5
  • clipper: 切片器相关设置
    • enable_clipper: 启用切片功能。默认:true
    • min_length: 切片最短长度,单位秒。默认:60
    • start_offset: 切片开始时间偏移量,正为向后偏移,负为向前偏移,单位秒。默认:0。建议根据直播间弹幕延迟调整。
    • end_offset: 切片结束时间偏移量,正为向后偏移,负为向前偏移,单位秒。默认:0。建议根据直播间弹幕延迟调整。
  • manual_clipper: 手动切片器相关设置
    • enabled:启用手动切片器功能。默认:false
    • uid:手动切片器接受指令的用户 UID。
    • command: 自定义手动切片触发指令。
  • uploader: 上传器相关设置
    • account: 上传账户信息
      • username: 用户名
      • password: 密码
      • access_token: Access token
      • refresh_token: Refresh token
      • cookies:
        • SESSDATA: your SESSDATA
        • bili_jct: your bili_jct
        • DedeUserID: your DedeUserID
        • DedeUserID__ckMd5: your DedeUserID__ckMd5
        • sid: your sid
    • copyright: 稿件类型(1:自制,2:转载)警告!未经授权投稿“自制”可能导致稿件无法通过审核!
    • record: 录播上传设置
      • upload_record: 是否上传录播。默认:true
      • keep_record_after_upload: 是否在上传过审后保留录播。默认:true
      • split_interval: 录播划分间隔,单位秒。由于 B 站无法一次上传大文件,因此长录播需要分片才能上传。默认:3600。如设为 0,表示不划分,如此请保证账号具有上传超大文件权限。
      • title:上传视频的标题,可以使用占位符。
      • tid:分区编号,可在 https://github.com/FortuneDayssss/BilibiliUploader/wiki/Bilibili%E5%88%86%E5%8C%BA%E5%88%97%E8%A1%A8 查询
      • tags:上传视频的标签
      • desc:上传视频的描述,可以使用占位符。
      • cover:上传视频使用的封面文件路径。
    • clippers: 切片上传设置
  • backup:是否将录像备份到百度云。

已知问题

  • record 文件夹下产生大量空文件夹。(Work-around patch)
  • 自动上传无法登录,电磁力不足无法投稿分 P 稿件。(已更新)
  • 被 B 站风控系统 412 后会无法工作。(预期下个功能更新优化。)
  • PK 导致分辨率不正确出现花屏。(正在调查。)

预期更新

  • 弹幕 jsonl 转为 ass 字幕并自动压入录播文件的功能。(预期下个功能更新。)
  • 不上传百度也会在切片和或录播上传完成后删去 merge 文件的功能。(预期下个功能更新。说实话不是很想加这个功能,可能这就是仓鼠症患者吧……
  • 增加斗鱼、Twitch 和油管支持。(预期当前功能稳定后加入。)

ddrecorder's People

Contributors

bybybybyb avatar dependabot[bot] avatar hugozys avatar jokerqyou avatar licamla avatar satouriko avatar zhaoweicheng98 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ddrecorder's Issues

录制后无输出

+--------+----------+---------+----------+--------------+---------------------+
| TID | 平台 | 房间号 | 直播状态 | 程序状态 | 状态变化时间 |
+--------+----------+---------+----------+--------------+---------------------+
| 332887 | BiliBili | 1991211 | 否 | 正在处理视频 | 2022-06-13 18:33:36 |
+--------+----------+---------+----------+--------------+---------------------+

Traceback (most recent call last):
File "/root/ddrecorder/DDRecorder-1.2.3/Processor.py", line 117, in concat
ret = subprocess.run(
File "/usr/lib/python3.8/subprocess.py", line 516, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command 'ffmpeg -y -f concat -safe 0 -i ./data/merge_confs/1991211_2022-06-13_18-32-19_merge_conf.txt -c copy -fflags +igndts -avoid_negative_ts make_zero ./data/merged/1991211_2022-06-13_18-32-19_merged.mp4' returned non-zero exit status 1.
Traceback (most recent call last):
File "/root/ddrecorder/DDRecorder-1.2.3/Processor.py", line 239, in run
ret = self.pre_concat()
File "/root/ddrecorder/DDRecorder-1.2.3/Processor.py", line 180, in pre_concat
self.live_start = self.times[0][0]
IndexError: list index out of range
使用cookies上传
DDRecorder 当前时间:2022-06-13 18:34:39.711213 正在工作线程数:2

outputs文件夹里啥也没有 records文件夹里有几个flv但是都是0字节的文件 不知道哪步错了呢
萌新一个 刚学着折腾 还请大佬指教一下x

能否增加弹幕录制功能

能否像b站录播姬一样,在录制视频的同时增加录制弹幕成xml文件的功能?
目前虽然能记录弹幕到log文件,但经观测发现弹幕缺失严重,而且没有style

录制文件占用空间过大

大佬,为什么录制文件有flv和ts格式的啊
一场直播下来就是两份一样的文件,只是格式不同
而且records文件夹里还有很多0kb的flv文件
然后为什么merged还有一份mp4文件啊
开了切割还会在splits里每小时一个文件
几乎就是一场直播,四份一样的。。。

编译出的DDRecorder.exe无法正常运行

打开DDRecorder.exe后

Traceback (most recent call last):
  File "main.py", line 12, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 476, in exec_module
  File "MainRunner.py", line 12, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 476, in exec_module
  File "DanmuRecorder.py", line 13, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 476, in exec_module
  File "brotli\__init__.py", line 3, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 476, in exec_module
  File "brotli\brotli.py", line 5, in <module>
ModuleNotFoundError: No module named '_cffi_backend'
[24396] Failed to execute script 'main' due to unhandled exception!

大概是封包时cffi模组出错

能否向已上传的录播合集添加分P?

实际自动上传录播时需要向同一bv号下新增视频 此时视频title固定 需要以编辑模式上传,变更视频名称。可以考虑新增这方面功能吗?
另外 考虑到直播连接不稳定的情况下,能否自定义录播的时长下限?

发布体积大

我自己用 pyinstaller 编译出来 12M exe 可以正常运行,不知道 60M 是包含了什么?没有看到有编译相关的配置文件

执行python main.py <配置文件>

DDRecorder git:(main) ✗ python main.py ./config/config.json
解析配置文件时出现错误,请检查配置文件!
错误详情:Invalid \escape: line 57 column 83 (char 1667)
sh:行1: pause:未找到命令
Traceback (most recent call last):
File "main.py", line 57, in
utils.check_and_create_dir(all_config.get(
NameError: name 'all_config' is not defined
DDRecorder已是最新版本!

能否增加继续之前任务的功能

录播录制完毕后正在合并flv文件时控制台出错,再次打开后就不会继续合成flv以及进行后续的切片操作了。能否增加继续之前未完成的任务的功能?

【bug】最新版exe文件运行报错

Thu, 21 Jul 2022 22:18:54 18996 MainThread retry.py[line:351] DEBUG Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None)
Thu, 21 Jul 2022 22:18:54 19340 Thread-1 ProjectHolder.py[line:58] INFO Using cache directory: C:\Users\asus\AppData\Local\lastversion\lastversion\Cache.
Thu, 21 Jul 2022 22:18:54 18996 MainThread connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): api.live.bilibili.com:443
Thu, 21 Jul 2022 22:18:54 19340 Thread-1 ProjectHolder.py[line:65] INFO Created instance of GitHubRepoSession
Thu, 21 Jul 2022 22:18:54 19340 Thread-1 controller.py[line:132] DEBUG Looking up "https://github.com/AsaChiri/DDRecorder/releases.atom" in the cache
Thu, 21 Jul 2022 22:18:54 19340 Thread-1 controller.py[line:147] DEBUG No cache entry available
Thu, 21 Jul 2022 22:18:54 19340 Thread-1 connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): github.com:443
Thu, 21 Jul 2022 22:18:54 18996 MainThread retry.py[line:594] DEBUG Incremented Retry for (url='/room/v1/Room/get_info?room_id=92613'): Retry(total=2, connect=None, read=None, redirect=None, status=None)
Thu, 21 Jul 2022 22:18:54 18996 MainThread connectionpool.py[line:810] WARNING Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory'))': /room/v1/Room/get_info?room_id=92613
Thu, 21 Jul 2022 22:18:54 18996 MainThread connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (2): api.live.bilibili.com:443
Thu, 21 Jul 2022 22:18:55 18996 MainThread retry.py[line:594] DEBUG Incremented Retry for (url='/room/v1/Room/get_info?room_id=92613'): Retry(total=1, connect=None, read=None, redirect=None, status=None)
Thu, 21 Jul 2022 22:18:55 18996 MainThread connectionpool.py[line:810] WARNING Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory'))': /room/v1/Room/get_info?room_id=92613
Thu, 21 Jul 2022 22:18:55 18996 MainThread connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (3): api.live.bilibili.com:443
Thu, 21 Jul 2022 22:18:55 18996 MainThread retry.py[line:594] DEBUG Incremented Retry for (url='/room/v1/Room/get_info?room_id=92613'): Retry(total=0, connect=None, read=None, redirect=None, status=None)
Thu, 21 Jul 2022 22:18:55 18996 MainThread connectionpool.py[line:810] WARNING Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory'))': /room/v1/Room/get_info?room_id=92613
Thu, 21 Jul 2022 22:18:55 18996 MainThread connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (4): api.live.bilibili.com:443
Thu, 21 Jul 2022 22:18:55 18996 MainThread BaseLive.py[line:48] ERROR [Site:BiliBili Room:92613] Request ErrorHTTPSConnectionPool(host='api.live.bilibili.com', port=443): Max retries exceeded with url: /room/v1/Room/get_info?room_id=92613 (Caused by ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory')))Traceback (most recent call last):
File "urllib3\connectionpool.py", line 700, in urlopen
File "urllib3\connectionpool.py", line 994, in prepare_proxy
File "urllib3\connection.py", line 364, in connect
File "urllib3\connection.py", line 499, in connect_tls_proxy
File "urllib3\util\ssl
.py", line 453, in ssl_wrap_socket
File "urllib3\util\ssl
.py", line 495, in _ssl_wrap_socket_impl
File "ssl.py", line 500, in wrap_socket
File "ssl.py", line 1040, in _create
File "ssl.py", line 1309, in do_handshake
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "requests\adapters.py", line 440, in send
File "urllib3\connectionpool.py", line 813, in urlopen
File "urllib3\connectionpool.py", line 813, in urlopen
File "urllib3\connectionpool.py", line 813, in urlopen
File "urllib3\connectionpool.py", line 785, in urlopen
File "urllib3\util\retry.py", line 592, in increment
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.live.bilibili.com', port=443): Max retries exceeded with url: /room/v1/Room/get_info?room_id=92613 (Caused by ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "BaseLive.py", line 41, in common_request
File "requests\sessions.py", line 542, in get
File "requests\sessions.py", line 529, in request
File "requests\sessions.py", line 645, in send
File "requests\adapters.py", line 513, in send
requests.exceptions.ProxyError: HTTPSConnectionPool(host='api.live.bilibili.com', port=443): Max retries exceeded with url: /room/v1/Room/get_info?room_id=92613 (Caused by ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory')))

Thu, 21 Jul 2022 22:18:55 18996 MainThread init.py[line:14] ERROR Uncaught exception:
Traceback (most recent call last):
File "main.py", line 77, in
File "MainRunner.py", line 126, in init
File "MainRunner.py", line 27, in init
File "BiliLive.py", line 16, in init
File "BiliLive.py", line 23, in get_room_info
AttributeError: 'NoneType' object has no attribute 'json'

手动切片支持自定义命令

Is your feature request related to a problem? Please describe.

手动切片的指令在直播间弹幕中有点刺眼。

Describe the solution you'd like

每个直播间的spec中manual_clipper可以指定一个自定义命令。例如这样:

...
"manual_clipper": {
  "uid": "UID",
  "enabled": true,
  "command": "/太草了"
},
...

则在直播间发送/太草了 60即可快速切片(从弹幕时间回溯60秒)。
如果没有设置command则还是使用默认的/DDR clip

Describe alternatives you've considered

无。

Additional context

我这边可以提PR。

上传时间过久

系统环境Ubuntu20

录播下载完成后显示运行ffmpeg,状态显示正在处理视频。
处理完毕后状态显示为正在上传至BiliBIli
弹出如下

upload 31384_2022-03-25_09-24-41_0001.mp4 added in pool
chunk0/1156
filename: 31384_2022-03-25_09-24-41_0000.mp4
200

该chunk值增加缓慢(超过一小时该主播录播未上传完毕)
后台显示上传速率10~20M左右

机器位于LV,带宽1000M,使用biliup-rs测试选择kodo线路,单文件并发上传数3~6可以跑满至900M
猜测时候是上传时选择了其他线路问题
不知如何更改,且不确定问题原因

主播pk的时候,分辨率变化了,导致录的视频乱码出错

录播的主播用手机直播,竖屏状态。然后录播到pk的时候,录像乱码了。
目前猜测是因为分辨率变化,根据时间戳,我用另一个工具录播姬,录播的视频是正常的,因为主播pk时候,会中断直播,然后跳转出来的新视频源是横屏,分辨率发生了改变。
竖屏分辨率:720 X 1280
横屏分辨率:1280 X 720
pk异常
pk
录像的音频还在,声音能正常播放,就是分辨率不对,并花了。

有个小建议,现在outputs文件输入的名称格式是 开播时间+偏移的秒数,能不能直接把偏移的描述换算成时间,方便定位片段的真实时间。
文件名优化

登录失败

昨天开始突然就不自动上传了
提示这个“login fail, error code = -449”
请问是怎么回事?

本次登录环境存在风险, 需使用手机号进行验证或绑定

【下面是Processor的log】
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 retry.py[line:351] DEBUG Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None)
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): api.live.bilibili.com:443
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 connectionpool.py[line:456] DEBUG https://api.live.bilibili.com:443 "GET /room/v1/Room/get_info?room_id=24402048 HTTP/1.1" 200 None
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 BiliLive.py[line:26] DEBUG [Site:BiliBili Room:24402048] 房间API消息:ok
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 connectionpool.py[line:456] DEBUG https://api.live.bilibili.com:443 "GET /live_user/v1/UserInfo/get_anchor_in_room?roomid=24402048 HTTP/1.1" 200 773
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 connectionpool.py[line:456] DEBUG https://api.live.bilibili.com:443 "GET /room/v1/Room/get_info?room_id=24402048 HTTP/1.1" 200 None
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 BiliLive.py[line:26] DEBUG [Site:BiliBili Room:24402048] 房间API消息:ok
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 connectionpool.py[line:456] DEBUG https://api.live.bilibili.com:443 "GET /live_user/v1/UserInfo/get_anchor_in_room?roomid=24402048 HTTP/1.1" 200 773
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 BaseLive.py[line:66] INFO [Site:BiliBili Room:24402048] 等待开播
Mon, 11 Jul 2022 13:37:30 140254103205440 Thread-3 connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): api.bilibili.com:443
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 connectionpool.py[line:456] DEBUG https://api.bilibili.com:443 "GET /x/web-interface/nav HTTP/1.1" 200 None
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): member.bilibili.com:443
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 connectionpool.py[line:456] DEBUG https://member.bilibili.com:443 "GET /x/geetest/pre/add HTTP/1.1" 200 None
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 connectionpool.py[line:228] DEBUG Starting new HTTP connection (1): api.bilibili.com:80
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 connectionpool.py[line:456] DEBUG http://api.bilibili.com:80 "GET /x/space/myinfo HTTP/1.1" 200 None
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 bili_webup.py[line:547] INFO 用户权重: 1
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 bili_webup.py[line:570] INFO 使用客户端api端提交
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): passport.bilibili.com:443
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 connectionpool.py[line:456] DEBUG https://passport.bilibili.com:443 "GET /x/passport-login/web/key HTTP/1.1" 200 None
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 connectionpool.py[line:456] DEBUG https://passport.bilibili.com:443 "POST /x/passport-login/oauth2/login HTTP/1.1" 200 None
Mon, 11 Jul 2022 13:37:31 140254103205440 Thread-3 Uploader.py[line:132] ERROR [Site:BiliBili Room:24402048] Error while uploading:{'code': 0, 'message': '0', 'ttl': 1, 'data': {'status': 2, 'message': '本次登录环境存在风险, 需使用手机号进行验证或绑定', 'url': 'https://passport.bilibili.com/account/mobile/security/managephone/phone/verify?tmp_token=fd076ba81c3cef60b257ee349cfbd171&requestId=5a34c07a963e452b9f911074d4ab736b&source=risk', 'token_info': None, 'cookie_info': None, 'sso': None}}Traceback (most recent call last):
File "/root/ddrec/DDRecorder-main/Uploader.py", line 124, in upload
record_video_ret = self.uploader.submit()
File "/usr/local/lib/python3.10/dist-packages/biliup/plugins/bili_webup.py", line 556, in submit
ret = self.submit_client()
File "/usr/local/lib/python3.10/dist-packages/biliup/plugins/bili_webup.py", line 574, in submit_client
self.login_by_password(**self.account)
File "/usr/local/lib/python3.10/dist-packages/biliup/plugins/bili_webup.py", line 226, in login_by_password
raise RuntimeError(r)
RuntimeError: {'code': 0, 'message': '0', 'ttl': 1, 'data': {'status': 2, 'message': '本次登录环境存在风险, 需使用手机号进行验证或绑定', 'url': 'https://passport.bilibili.com/account/mobile/security/managephone/phone/verify?tmp_token=fd076ba81c3cef60b257ee349cfbd171&requestId=5a34c07a963e452b9f911074d4ab736b&source=risk', 'token_info': None, 'cookie_info': None, 'sso': None}}

录制是成功了的 就是上传没对

另外问一下ffmpeg的log【/bin/sh: 1: ffmpeg: not found】是什么情况呢 我设置了环境变量的 直接输入ffmpeg指令能调用出来
还请大佬指教orz

录播上传问题

录播上传问题

datestr = datetime.datetime.strptime(global_start, '%Y-%m-%d_%H-%M-%S').strftime('%Y{y}%m{m}%d{d}').format(y='年', m='月', d='日')

报错信息

Traceback (most recent call last):
  File "D:\Application\Anaconda\lib\multiprocessing\process.py", line 258, in _bootstrap self.run()
  File "D:\Application\Anaconda\lib\multiprocessing\process.py", line 93, in runself._target(*self._args, **self._kwargs)
  File "E:\DD\DDRecorder-main\DDRecorder-main\main.py", line 24, in procd = u.upload(p.global_start)
  File "E:\DD\DDRecorder-main\DDRecorder-main\Uploader.py", line 66, in uploadglobal_start, '%Y-%m-%d_%H-%M%S').strftime('%Y{y}%m{m}%d{d}').format(y='年', m='月', d='日')
TypeError: strptime() argument 1 must be str, not datetime.datetime

还有个问题就是当没有弹幕的时候不会生成弹幕文件,无法继续执行上传操作

请求加入上传路线手动选择功能

biliup内置了 ws qn bda2 kodo gcs bos cos等多个上传线路,auto模式下检测延迟后自动选择

但海外vps及某些特殊情况下,kodo等线路延迟会较大,但却可以跑满带宽,故经常不会被auto模式选中,而选中某些低速线路。

故请求加入可配置的lines参数

biliup的配置文件:
b站上传线路选择,默认为自动模式,目前可手动切换为bda2, kodo, ws, qn, cos, cos-internal(支持腾讯云内网免流+提速)
lines: AUTO
嵌入库例子:
for file in file_list:
video_part = bili.upload_file(file, lines=lines, tasks=tasks)

(感谢大佬,我太菜了不然我就pr了QAQ)

上传成功后不会自动删除录播文件

使用的是latest(edba212)编译的Docker版跑在Ubuntu18.04上。
config.json里已经设置"keep_raw_record" : false"keep_record_after_upload": false
今天发现昨天的录播上传成功且过审之后,数据文件夹内records是没有没有视频文件的(应该是"keep_raw_record" : false参数起了作用),但merged文件夹内保留了完整的录像mp4文件以及splits文件夹内保留了所有split的mp4文件,"keep_record_after_upload": false参数并没有起到作用。

完整的config.json如下:

{
  "root": {
    "check_interval": 120,
    "print_interval": 10,
    "data_path": "/downloads",
    "logger": { "log_path": "/app/log", "log_level": "DEBUG" },
    "request_header": {},
    "uploader": {
      "upload_by_edit": true,
      "thread_pool_workers": 4,
      "max_retry": 10
    },
    "enable_baiduyun": false
  },
  "spec": [
    {
      "room_id": "22637920",
      "recorder": { "keep_raw_record": false },
      "parser": {
        "interval": 30,
        "up_ratio": 2.5,
        "down_ratio": 0.75,
        "topK": 5
      },
      "clipper": {
        "enable_clipper": false,
        "min_length": 60,
        "start_offset": -20,
        "end_offset": 10
      },
      "uploader": {
        "account": {
          "username": "xxxxxx",
          "password": "xxxxxx"
        },
        "copyright": 2,
        "record": {
          "upload_record": true,
          "keep_record_after_upload": false,
          "split_interval": 3600,
          "title": "{date} 直播录播",
          "tid": 65,
          "tags": ["直播录播"],
          "desc": "本视频由全自动切片型智能DD机剪辑上传~"
        },
        "clips": {
          "upload_clips": false,
          "keep_clips_after_upload": false,
          "title": "{date} 直播精彩剪辑【自动切片】",
          "tid": 65,
          "tags": ["直播录播"],
          "desc": "本视频由全自动切片型智能DD机剪辑上传~"
        }
      },
      "backup": false
    }
  ]
}

[BUG]录播完成后不能正常将录播视频分段

在录播完成后视频处理阶段,某些python文件会报错导致不能正常将视频按照设置分段和上传,且导致录播源文件丢失,已开启保留源文件。
正在翻找log以确认具体错误。

自动上传稿件失败

日志:
Sun, 07 Aug 2022 23:22:09 12484 MainThread connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): api.bilibili.com:443
Sun, 07 Aug 2022 23:22:10 12484 MainThread connectionpool.py[line:456] DEBUG https://api.bilibili.com:443 "GET /x/web-interface/nav HTTP/1.1" 200 None
Sun, 07 Aug 2022 23:22:10 12484 MainThread connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): member.bilibili.com:443
Sun, 07 Aug 2022 23:22:10 12484 MainThread connectionpool.py[line:456] DEBUG https://member.bilibili.com:443 "GET /x/geetest/pre/add HTTP/1.1" 200 114
Sun, 07 Aug 2022 23:22:10 12484 MainThread connectionpool.py[line:228] DEBUG Starting new HTTP connection (1): api.bilibili.com:80
Sun, 07 Aug 2022 23:22:10 12484 MainThread connectionpool.py[line:456] DEBUG http://api.bilibili.com:80 "GET /x/space/myinfo HTTP/1.1" 200 None
Sun, 07 Aug 2022 23:22:10 12484 MainThread bili_webup.py[line:481] INFO 用户权重: 1
Sun, 07 Aug 2022 23:22:10 12484 MainThread bili_webup.py[line:504] INFO 使用客户端api端提交
Sun, 07 Aug 2022 23:22:10 12484 MainThread connectionpool.py[line:228] DEBUG Starting new HTTP connection (1): member.bilibili.com:80
Sun, 07 Aug 2022 23:22:10 12484 MainThread connectionpool.py[line:456] DEBUG http://member.bilibili.com:80 "POST /x/vu/client/add?access_key=f2f000a9b504072184d50e014ee75b71 HTTP/1.1" 200 80
Sun, 07 Aug 2022 23:22:10 12484 MainThread Uploader.py[line:140] ERROR [Site:BiliBili Room:11612417] Error while uploading:{'code': 21150, 'message': '投稿入口升级中,请重新编辑稿件', 'ttl': 1}Traceback (most recent call last):
File "Uploader.py", line 91, in upload
File "biliup\plugins\bili_webup.py", line 496, in submit
Exception: {'code': 21150, 'message': '投稿入口升级中,请重新编辑稿件', 'ttl': 1}

长时间运行后子线程意外结束

环境:ubuntu 18.04
软件版本:1.2.2

运行过程中程序正常运行,但正在工作线程数会逐渐减少,相应直播间不再受到监控,录制也不正常工作,但没有任何报错信息。
求问会是什么原因造成的,如何操作才能提供更多的相关信息?

开始运行时
20220220233618

约两天后
20220222202652

约五天后,仅剩2个线程在工作,且正在直播的直播间没有被录制。
20220226015552

时间格式自定义,定时发布

现在的时间格式是2021年10月6日这样的,希望能加入一个自定义功能,我想改成2021-10-6.

啊b的定时发布希望实现以下,我想每天上午9点定时发布而不是直播完就上传审核发布。

如果可能的话,信息刷新时加一个写入状态吧,如果状态不对可以及时发现修复。

自动或手动分段(切换录制文件)

Is your feature request related to a problem? Please describe.

有时候直播内容切换了,仅需要前一部分的录制内容进行快速切片发布,不想等到整场直播结束之后才开始剪辑。(尤其见于耐久直播)

Describe the solution you'd like

希望可以按文件大小或时长进行自动切换文件,这样可以直接获取已经关闭的flv录播文件进行剪辑。

Describe alternatives you've considered

或者,可以像手动切片一样,通过弹幕指令触发文件切换。
但是手动切片指令是在处理完成整场直播的录制文件之后才处理的。但这个手动分段指令则要求实时处理。

Additional context

暂无。单个的flv文件可不考虑进行时间轴修复,由用户手动通过 yamdi 等工具注入元数据进行修复。

希望加入弹幕过滤功能

最近不是有那个粉丝团灯牌活动嘛,然后有个感谢机器人一直刷屏,自动切片切出来的没法看。
希望可以屏蔽用户或者屏蔽关键词。
(最近dd机自动切片没法看,自己翻弹幕文件xml也是抓不到高能点,全被感谢礼物机器人淹没了)

以及,我倍率已经拉很高了,但还是感觉没抓到点上,是不是主播太拉了,切片机也切不出
屏幕截图 2021-12-10 023104

额,还有,我明明release页面下的最新的,运行起来还是提示有更新?

手动切片

请问有没有可能增加手动切片功能, 比如自己在看的时候,看到想要切的地方, 一键保存历史x分钟, 然后自己再对获得的视频文件做别的编辑等 类似nvidia驱动自带的阴影时间

登录方式

请问一下 登录方式能够换成token登录吗,账号风控以后用用户名密码登录会登录不上

一个小建议

希望可以增加一个投稿默认封面图,或当前直播间封面图。

8号开始无法自动切片了

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

长时间运行造成大量空目录

Describe the bug
长时间运行后,会生成大量空目录

To Reproduce
Steps to reproduce the behavior:

  1. 监控两个直播时间不定的直播间
  2. 几天后发现数据输出目录中的绝大多数子目录都是空的

Expected behavior
不应该生成大量空目录。

Screenshots
image

Desktop (please complete the following information):

  • OS: VMWare运行的Ubuntu 20.04 LTS,文件输出位置为远程绑定(SMB cifs /etc/fstab自动挂载)的win10共享目录。

电磁力低于LV3自动投稿分P功能失效

环境:win10
软件版本:1.2.1
账号等级lv1
录播和切片的分P功能无效,自动投稿变成单P稿件

PS:目前网页端无法多P投稿,ForgQi/Caution这个项目目前可以通过客户端口提交多P稿件

录制正常,上传显示'新增稿件分P不能为空'

下面是Processor的log
Wed, 06 Jul 2022 22:07:22 140207663871552 Thread-3 Processor.py[line:273] INFO Processing clipper
Wed, 06 Jul 2022 22:07:22 140207663871552 Thread-3 retry.py[line:351] DEBUG Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None)
Wed, 06 Jul 2022 22:07:22 140207663871552 Thread-3 connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): api.live.bilibili.com:443
Wed, 06 Jul 2022 22:07:22 140207663871552 Thread-3 connectionpool.py[line:456] DEBUG https://api.live.bilibili.com:443 "GET /room/v1/Room/get_info?room_id=1991211 HTTP/1.1" 200 None
Wed, 06 Jul 2022 22:07:22 140207663871552 Thread-3 BiliLive.py[line:26] DEBUG [Site:BiliBili Room:1991211] 房间API消息:ok
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:456] DEBUG https://api.live.bilibili.com:443 "GET /live_user/v1/UserInfo/get_anchor_in_room?roomid=1991211 HTTP/1.1" 200 740
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:456] DEBUG https://api.live.bilibili.com:443 "GET /room/v1/Room/get_info?room_id=1991211 HTTP/1.1" 200 None
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 BiliLive.py[line:26] DEBUG [Site:BiliBili Room:1991211] 房间API消息:ok
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:456] DEBUG https://api.live.bilibili.com:443 "GET /live_user/v1/UserInfo/get_anchor_in_room?roomid=1991211 HTTP/1.1" 200 740
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 BaseLive.py[line:66] INFO [Site:BiliBili Room:1991211] 等待开播
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): api.bilibili.com:443
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:456] DEBUG https://api.bilibili.com:443 "GET /x/web-interface/nav HTTP/1.1" 200 None
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:1001] DEBUG Starting new HTTPS connection (1): member.bilibili.com:443
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:456] DEBUG https://member.bilibili.com:443 "GET /x/geetest/pre/add HTTP/1.1" 200 None
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:228] DEBUG Starting new HTTP connection (1): api.bilibili.com:80
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:456] DEBUG http://api.bilibili.com:80 "GET /x/space/myinfo HTTP/1.1" 200 None
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 bili_webup.py[line:547] INFO 用户权重: 1
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 bili_webup.py[line:570] INFO 使用客户端api端提交
Wed, 06 Jul 2022 22:07:23 140207663871552 Thread-3 connectionpool.py[line:228] DEBUG Starting new HTTP connection (1): member.bilibili.com:80
Wed, 06 Jul 2022 22:07:24 140207663871552 Thread-3 connectionpool.py[line:456] DEBUG http://member.bilibili.com:80 "POST /x/vu/client/add?access_key=2780e54b8b72a27b69be55325f3cba71 HTTP/1.1" 200 None
Wed, 06 Jul 2022 22:07:24 140207663871552 Thread-3 Uploader.py[line:132] ERROR [Site:BiliBili Room:1991211] Error while uploading:{'code': 21011, 'message': '新增稿件分P不能为空', 'ttl': 1}Traceback (most recent call last):
File "/root/ddrec/DDRecorder-main/Uploader.py", line 86, in upload
clips_video_ret = self.uploader.submit()
File "/usr/local/lib/python3.10/dist-packages/biliup/plugins/bili_webup.py", line 562, in submit
raise Exception(ret)
Exception: {'code': 21011, 'message': '新增稿件分P不能为空', 'ttl': 1}

在CentOS 7.9下安装时报错 ERROR: Can not execute `setup.py` since setuptools is not available in the build environment.

via 阿里云ECS服务器
OS = CentOS 7.9
python = 3.10.2

下面是报错细节
`[root@iZuf65sjhgk33mv8gbk7e2Z DDRecorder]# python -m pip install -r requirements.txt
Looking in indexes: http://mirrors.cloud.aliyuncs.com/pypi/simple/
Collecting git+git://github.com/FortuneDayssss/BilibiliUploader.git (from -r requirements.txt (line 58))
Cloning git://github.com/FortuneDayssss/BilibiliUploader.git to /tmp/pip-req-build-wenebb5a
Running command git clone --quiet git://github.com/FortuneDayssss/BilibiliUploader.git /tmp/pip-req-build-wenebb5a
Resolved git://github.com/FortuneDayssss/BilibiliUploader.git to commit 23266861c155c75eae5a29a424a15d87da81c132
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [1 lines of output]
ERROR: Can not execute setup.py since setuptools is not available in the build environment.
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.`

请问应该怎么解决?

下载1.3.0后提示无法获取DDRecorder的版本信息,当前版本号: {},请到https://github.com/AsaChiri/DDRecorder/releases 检查最新版本'.format(CURRENT_VERSION))

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.