有天研发找我回归一个客户报障情况。。。。。。。。。。。。
需要拿客户的源文件做测试:研发给的是:http://此处是客户域名不展示了/record/live/05147Y2GJK0/hls/05147Y2GJK0-05147Y2GJK0-20201117150440.m3u8
我要把每个ts片下载下来,片有很多,总不能手工拼接下载吧?关键我还要吧这些个东西上传到我的测试账号的存储空间(云厂商都是客户区分存储空间的)?
我的办法:
1、脚本从05147Y2GJK0-05147Y2GJK0-20201117150440.m3u8中获取每个片,拼接ts片的下载地址
2、写shell把当前目录的文件上传到测试账户的空间
后来实际操作,一个python几行就搞定了:
wget下载m3u8文件
脚本搞定
开始我脚本只是拼接,cmd是wget下载ts片到本地了,写了shell上传
files=`ls` //获取当前目录的所有文件
#echo ${files}
IParr=(${files//,/ }) //放入数组
for var in ${IParr[@]} //循环操作ts文件上传
do
echo $var
./ks3_upload_tool $var /qa-screenshot/offline_source_file/kehu_m3u8/$var qa-screenshot //这个是我们的上传命令行工具
done
纯纯的shell解决下
#/bin/bash
# 举例子sh down_m3u8.sh m3u8地址 qa-vod hanfang1/test111/
if [ -n '$1' ];then
echo "需要下载的链接:$1"
wget $1
if test $? -ne 0;then
echo "文件下载失败"
exit 1
fi
file_title=${1%/*}'/'
file_name=`echo $1 |awk -F / '{print $NF}'|awk -F ? '{print $1}'`
awk -va=$file_title '$1 ~ /.ts/ {for(i=1;i<=NF;i++) temp=a$i;system("wget "temp"")}' $file_name
for file in `ls *.ts`
do
./ks3_upload_tool $file $3$file $2 #ks3_upload_tool上传的工具(自研的)
rm -rf $file
done
./ks3_upload_tool $file_name $3$file_name $2
if test $? -ne 0;then
echo "文件下传失败$file_name"
exit 1
fi
rm -rf $file_name
echo "操作完毕"
fi