最初是起源于一位up@等我稍后补充昵称,他做过类似的事情。我只是外行,模仿,接近了这个目的。
#! /bin/bash
#Bilibili Auto Live Script
#Date 2020.5.25
#Version 1.1.0
#
log=/home/moonhikari/sh/log/bililive.log
MAX_1=119
MAX_2=37
MAX_3=71
MAX_4=79
MAX_5=39
MAX_6=38
#这里先获取一边日志里的数据,避免出错,如果不需要可以删掉
section=$(cat $log | awk 'END {print}' | awk -F" " '{print $1F}') #取得章节
episode=$(cat $log | awk 'END {print}' | awk -F" " '{print $2F}') #取得集数
function push (){
# echo ${1} ${2} start
# ffmpeg -i "$section-$episode" -c copy ""
ffmpeg -re -i /home/moonhikari/Videos/Ming/$section/$section-$episode.mp4 \
-vcodec copy -preset veryfast -acodec copy -strict -2 -f flv \
"rtmp://txy.live-send.acg.tv/live-txy/?streamname=live_XXXXXXXXXX&key=XXXXXXXXXXXXXXXXXXXX"
tmp=$?
if [[ $tmp -ne 0 ]];then
return 1
fi
echo ${1} ${2} end time:$(date +'%F %T')>> $log
sleep 3
}
function check (){ #检查
if [[ $section -eq 1 ]];then #分部讨论,确定最大集数
let max=$MAX_1
elif [[ $section -eq 2 ]];then
let max=$MAX_2
elif [[ $section -eq 3 ]];then
let max=$MAX_3
elif [[ $section -eq 4 ]];then
let max=$MAX_4
elif [[ $section -eq 5 ]];then
let max=$MAX_5
elif [[ $section -eq 6 ]];then
let max=$MAX_6
else
let max=$MAX_1
let section=1
fi
if [[ $episode -ge 1 && $episode -lt $max ]];then
let episode+=1
elif [[ $episode -eq $max ]];then #如果已经是最后一集
if [[ $section -eq 6 ]];then #判断是否为最后一部
let section=1 #若是则从第一部开始
else
let section+=1 #不是则换至下一部
fi
episode=1 #换至第1集
else
let episode=1 #没有数据,就从1开始
fi
}
while [[ 1 -eq 1 ]]
do
check
push $section $episode
if [[ $? -eq 1 ]];then
break
fi
done