biliup / biliup

全自动录播、直播录制、分p投稿工具,支持twitch、ytb频道搬运。
https://biliup.github.io/biliup/
MIT License
3.16k stars 417 forks source link

录制抖音直播时“分段时后处理”脚本不执行 #1011

Closed hfdem closed 1 month ago

hfdem commented 1 month ago

Code of Conduct

运行环境

AlmaLinux 9.4 && Python 3.9.18

biliup 版本

v0.4.72

所录制的主播网址

https://live.douyin.com/627164659309

错误描述

只用webui,脚本内容如下:

#!/bin/sh

DEBUG_LOGFILE="debug_log.txt"

while read -r LINE; do

    echo "Read line: $LINE" >> "$DEBUG_LOGFILE"

    # 获取文件名
    FILENAME=$(basename "$LINE")
    echo "Filename: $FILENAME" >> "$DEBUG_LOGFILE"

    # 提取文件名前缀(假设前缀是第一个数字前的部分)
    PREFIX=$(echo "$FILENAME" | grep -oP '^[^\d]+')
    echo "Prefix: $PREFIX" >> "$DEBUG_LOGFILE"

    # 目标目录
    DEST_DIR="onedrive:/直播录屏/${PREFIX}"
    echo "Destination directory: $DEST_DIR" >> "$DEBUG_LOGFILE"

    # 移动 .mp4 文件
    rclone -v  move "$LINE" "$DEST_DIR" --log-file=/home/hfdem/rclone.log

    # 获取对应的 .xml 文件路径
    XML_FILE="${LINE%.mp4}.xml"
    echo "XML file: $XML_FILE" >> "$DEBUG_LOGFILE"

    # 移动 .xml 文件
    rclone -v move "$XML_FILE" "$DEST_DIR" --log-file=/home/hfdem/rclone.log
done

作用是录制分段时就rclone move到网盘里,我同时设置了“后处理”和“分段时后处理” run = sh /home/hfdem/update_video.sh

这个脚本在“后处理”时能正常执行,录制bilibili直播时“分段时后处理”也能正常执行,但录制抖音直播时“分段时后处理”就不工作了,日志中出现了segment_processor,但脚本没有被执行,我也在脚本里用"$DEBUG_LOGFILE" debug了一下,也没有检测到脚本被执行,只能在主播下播后执行“后处理”时一起上传到网盘里。

任务平台

任务平台 ```bash ▶ root:{} 20 keys version:"0.4.72" uploader:"Noop" huya_imgplus:true twitch_disable_ads:true youtube_enable_download_live:true youtube_enable_download_playback:true downloader:"ffmpeg" segment_processor_parallel:true ▶ user:{} 2 keys bilibili_danmaku:true bili_cdn_fallback:false filename_prefix:"{streamer}%Y-%m-%dT%H_%M_%S{title}" filtering_threshold:20 segment_time:"02:00:00" douyin_quality:"origin" douyin_protocol:"flv" ▶ LOGGING:{} 2 keys ▶ url_upload_count:{} 5 keys upload_filename:[] 0 items ▶ streamers:{} 5 keys ▶ 阿怪:{} 10 keys url:"https://live.bilibili.com/27743521" format:"mp4" ▶ segment_processor:[] 1 item ▶ 0:{} 1 key run:"sh /home/hfdem/update_video.sh" ▶ postprocessor:[] 1 item ▶ 0:{} 1 key run:"sh /home/hfdem/update_video.sh" ▶ preprocessor:[] 1 item copyright:2 uploader:"Noop" user_cookie:"data/3546730515662986.json" ▶ tags:[] 1 item tid:241 ▶ 我不妮姐:{} 10 keys ▶ 啵比啵:{} 10 keys url:"https://live.douyin.com/627164659309" format:"mp4" ▶ segment_processor:[] 1 item ▶ 0:{} 1 key run:"sh /home/hfdem/update_video.sh" ▶ postprocessor:[] 1 item ▶ 0:{} 1 key run:"sh /home/hfdem/update_video.sh" ▶ preprocessor:[] 1 item copyright:2 uploader:"Noop" user_cookie:"data/3546730515662986.json" ▶ tags:[] 1 item tid:241 ▶ 小gai:{} 10 keys ▶ 小耶:{} 10 keys``` ```

报错日志以及其他描述(如果有)

### 日志 ```bash 2024-07-30 09:02:24,869 download.py[line:223](Pid:3041 Tname:Asynchronous1_0) DEBUG video:2768866kB audio:113164kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.307072% 2024-07-30 09:02:24,869 download.py[line:448](Pid:3041 Tname:Asynchronous1_0) INFO 更名 啵比啵2024-07-30T07_02_26给我一支舞的时间....mp4.part 为 啵比啵2024-07-30T07_02_26给我一支舞的时间....mp4 2024-07-30 09:02:24,890 tools.py[line:71](Pid:3041 Tname:segment_processor_啵比啵2024-07-30T07_02_26给我一支舞的时间...) INFO ```

其他补充描述

日志中出现了segment_processor,但脚本没有被执行

xxxxuanran commented 1 month ago

没复现成功。有完整日志文件吗?

hfdem commented 1 month ago

没复现成功。有完整日志文件吗?

ds_update (12).log info级别日志,抖音录屏17:08:15-19:08:14(278行)分段,但没有执行上传脚本 bilibili录屏19:51:26-21:51:24(305行)分段,成功执行了上传脚本 另外可以看下21:18:00(296行)的错误,不知道和这个有没有关系

debug级别的日志占用太大已经删掉了,我可以重新抓取一下,不过之前我也没看到什么特殊的,和这个一样

laomu61996 commented 1 month ago

-223714

xxxxuanran commented 1 month ago

image 还是无法复现该问题。 看日志是已经成功执行,但你的脚本没有输出,所以线程最终输出为空。

如果还是未执行,考虑从 sh 换成 bash 来运行呢?

hfdem commented 1 month ago

image 还是无法复现该问题。 看日志是已经成功执行,但你的脚本没有输出,所以线程最终输出为空。

如果还是未执行,考虑从 sh 换成 bash 来运行呢?

之前一直以为是脚本未执行,受你的启发在脚本开头加了个echo,发现脚本被执行了,只是while read -r LINE; do后面的内容没有被执行。看来问题应该是文件路径没有作为标准输入传入?

#!/bin/sh
echo "脚本已执行"
while read -r LINE; do
      echo "Read line: $LINE"
done
echo "脚本执行完毕"
2024-08-01 03:41:42,982 tools.py[line:71](Pid:2026841 Tname:segment_processor_向香蕉2024-08-01T03_36_51) INFO 脚本已执行
脚本执行完毕
xxxxuanran commented 1 month ago

经定位,问题为传入数据的结尾没有添加换行符导致。可以按照如下示例修改脚本即可正常运行。

#!/bin/bash
while read -r LINE || [[ -n "$LINE" ]]; do
    echo "$LINE"
done

image

hfdem commented 1 month ago

经定位,问题为传入数据的结尾没有添加换行符导致。可以按照如下示例修改脚本即可正常运行。

#!/bin/bash
while read -r LINE || [[ -n "$LINE" ]]; do
    echo "$LINE"
done

image

谢谢有效!我在chatgpt的帮助下也定位到换行符的问题了,不知道这个算是bug不,我先close了。

Heporis commented 1 month ago

分段后处理时传递的参数是固定的两行,直接读取不用while 图片