QYN2
#!/bin/bash # 自动下载电视剧,支持按集断点下载,正在追的电视剧添加到计划任务每天定期执行一次即可 # 庆余年在线网站: https://www.jjwu.net/vodplay/46471_5_1.html # 使用Ubuntu系统,需要安装的工具 # apt-get install -y parallel wget ffmpeg # 创建存放视频和缓存的目录 mkdir -p mp4/cache # for x in `seq -w $(ls mp4 | wc -l) 36 ` do # 打印正在处理的剧集 echo -e "第 $x 集" # 清空缓存目录 rm -rf mp4/cache/* # 从m3u8文件中除去广告ts,获取电视剧ts,并生成ts文件的url保存到file.list curl -s "https://s3.bfengbf.com/video/qingyuniandierji/第$x集/index.m3u8" \ | awk '/^000.*ts$/{print "https://s3.bfengbf.com/video/qingyuniandierji/第'$x'集/"$1}' \ > mp4/cache/file.list # 如果这一集还没更新,那么file.list文件中不存在ts文件的url,退出脚本 cat mp4/cache/file.list | grep '^http.*ts$' &>/dev/null || exit # 100并发下载ts文件 parallel -j 30 -a mp4/cache/file.list wget --timeout=30 -nv -P mp4/cache while [ -s mp4/cache/file.list ] do for y in `ls mp4/cache/` do sed -i "/$y/d" mp4/cache/file.list done for z in `cat mp4/cache/file.list` do wget -c --timeout=30 --tries=10 -nv -P mp4/cache $z done done # 合并ts文件 for j in `ls mp4/cache` do cat mp4/cache/$j >> mp4/cache/input.ts done # 将ts文件转换成mp4文件 ffmpeg -n -loglevel quiet -i mp4/cache/input.ts -vcodec copy -acodec copy -absf aac_adtstoasc mp4/$x.mp4 done
直接生成 m3u8 文件的方法,有个小bug,自己找吧
#!/bin/bash # 第一版:去掉菠菜广告 fun_1(){ for i in `seq -w 36` do curl -s "https://s3.bfengbf.com/video/qingyuniandierji/第$i集/index.m3u8" \ | sed -e "s@^000@https://s3.bfengbf.com/video/qingyuniandierji/第$i集/000@" \ -e '/adjump/d' \ > $i.m3u8 done } # 第二版:与更新同步,没有更新的剧集不会生成 m3u8 文件 fun_2(){ for i in `seq -w 36` do curl -s "https://s3.bfengbf.com/video/qingyuniandierji/第$i集/index.m3u8" > $i.m3u8 cat $i.m3u8 | grep '^000.*ts$' &>/dev/null || break sed -i -e '/adjump/d' \ -e "s@^000@https://s3.bfengbf.com/video/qingyuniandierji/第$i集/000@" \ $i.m3u8 done rm -rf $i.m3u8 } # 第三版:前面已经处理过的剧集,不再重复处理 fun_3(){ for i in `seq -w $(ls *.m3u8 | wc -l) 36` do curl -s "https://s3.bfengbf.com/video/qingyuniandierji/第$i集/index.m3u8" > $i.m3u8 cat $i.m3u8 | grep '^000.*ts$' &>/dev/null || break sed -i -e '/adjump/d' \ -e "s@^000@https://s3.bfengbf.com/video/qingyuniandierji/第$i集/000@" \ $i.m3u8 done rm -rf $i.m3u8 } #fun_1 #fun_2 fun_3
直接生成 m3u8 文件的方法,有个小bug(bug最简单的修复方法)
#!/bin/bash # 第一版:去掉菠菜广告 fun_1(){ for i in `seq -w 36` do curl -s "https://s3.bfengbf.com/video/qingyuniandierji/第$i集/index.m3u8" \ | sed -e "s@^000@https://s3.bfengbf.com/video/qingyuniandierji/第$i集/000@" \ -e '/adjump/d' \ > $i.m3u8 done } # 第二版:与更新同步,没有更新的剧集不会生成 m3u8 文件 fun_2(){ for i in `seq -w 36` do curl -s "https://s3.bfengbf.com/video/qingyuniandierji/第$i集/index.m3u8" > $i.m3u8 cat $i.m3u8 | grep '^000.*ts$' &>/dev/null || break sed -i -e '/adjump/d' \ -e "s@^000@https://s3.bfengbf.com/video/qingyuniandierji/第$i集/000@" \ $i.m3u8 done rm -rf $i.m3u8 } # 第三版:前面已经处理过的剧集,不再重复处理 fun_3(){ for i in `seq -w $(ls *.m3u8 | wc -l) 36` do curl -s "https://s3.bfengbf.com/video/qingyuniandierji/第$i集/index.m3u8" > $i.m3u8 cat $i.m3u8 | grep '^000.*ts$' &>/dev/null || break sed -i -e '/adjump/d' \ -e "s@^000@https://s3.bfengbf.com/video/qingyuniandierji/第$i集/000@" \ $i.m3u8 done rm -rf $i.m3u8 } # 第四版:解决最后一集下载后被误删的情况 fun_4(){ for i in `seq -w $(ls *.m3u8 | wc -l) 37` do curl -s "https://s3.bfengbf.com/video/qingyuniandierji/第$i集/index.m3u8" > $i.m3u8 cat $i.m3u8 | grep '^000.*ts$' &>/dev/null || break sed -i -e '/adjump/d' \ -e "s@^000@https://s3.bfengbf.com/video/qingyuniandierji/第$i集/000@" \ $i.m3u8 done rm -rf $i.m3u8 } #fun_1 #fun_2 #fun_3 fun_4