确定视频何时完成缓冲

Pha*_*mar 6 shell scripting

我前几天正在编写这个小脚本.这是一个小程序,基本上可以在浏览器中找到flash视频并下载它们.代码就是这样的......

码:

path=$(stat -c %N /proc/*/fd/* 2>&1|awk -F[\`\'] '/lash/{print$2}')
pid=$(echo $path | cut -d / -f3)
name=$( ps --no-header -o comm -p $pid)
mid=$(wmctrl -l | grep -i $name)
filename=`echo $mid | cut -c 21-$(($(echo $mid | wc -c)-16))`
cp $path /home/Downloads/"$filename.avi"
Run Code Online (Sandbox Code Playgroud)

这只是代码的一部分.代码的第一行获取已删除临时文件的路径.第二行获取pid.第三个进程名称.第四个是窗口id和窗口标题.第五行操纵wmctrl输出以提取视频播放的名称(大多数时候视频名称包含在窗口标题中...例如youtube )

现在,当整个视频缓冲后运行此脚本时,它运行完美(上面的脚本适用于谷歌浏览器)..并将文件从/ proc // fd文件夹复制到downloads文件夹并将其名称更改为提取文件名.

现在这里有诀窍部分.我想自动化这段代码,比如,我现在要运行这段代码,我必须等待视频完成缓存(比如youtube).

我希望这个脚本确定视频何时完成缓冲,然后继续复制部分,而不必在视频结束时手动运行它.

那么有什么方法可以让我知道视频何时完成缓冲?

我是初学者.欢迎任何改进代码的建议

tec*_*rus 0

要获取文件大小,您可以使用:

stat -c %s $filename
Run Code Online (Sandbox Code Playgroud)

这样你就可以设置一个 while 循环来检查文件是否仍在更改

CURSIZE=0
LASTSIZE=1
while ([ $CURSIZE -ne $LASTSIZE ]) do
  LASTSIZE=`stat -c %s $filename`
  sleep 1
CURSIZE=`stat -c %s $filename`
done
Run Code Online (Sandbox Code Playgroud)

之后,假设您的互联网连接中断时间不超过睡眠值,您应该能够复制它