perl调用curl下载m3u8
2022/5/1 17:12:54
本文主要是介绍perl调用curl下载m3u8,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
perl调用curl下载m3u8
1 use strict; use warnings; 2 #格式: prefix,file1,file2... 3 my $fn = $ARGV[0]; 4 print "File=$fn\n"; 5 6 sub slurp{ 7 # 一次性读取文件, 参数是文件名 8 open(my $f, '<', shift); my $c = ''; while (<$f>){ $c = $c.$_; } close($f); return $c; 9 } 10 11 my $doc = slurp($fn); 12 my @tns = split(/,/, $doc); 13 my $prefix = shift(@tns); 14 my @names = (); 15 # 检查是否有后缀名 16 if (index($tns[0], '.ts') == -1){ 17 print "auto edit url\n"; 18 foreach my $tn (@tns){ 19 $tn =~ s/\&/A/g; 20 $tn =~ s/\?/B/g; 21 $tn =~ s/\=/C/g; 22 $tn = $tn.'.ts'; 23 if (-e $tn) {} else { push(@names, $tn); } 24 } 25 } else { 26 foreach my $tn (@tns) { 27 if (-e $tn) {} else { push(@names, $tn); } 28 } 29 } 30 31 my $tm = time; 32 33 my @errs = (); 34 my $app = "curl.exe -L -k -A \"Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/72.0.3626.96\" "; 35 print "[0|0]\n"; 36 for (my $j = 0; $j < scalar(@names); $j++){ 37 my $name = $names[$j]; 38 if (-e $name.".err"){ 39 unlink($name.".err"); 40 unlink($name); 41 } 42 my $cmd = $app." --stderr ".$name.".err -o ".$name.' "'.$prefix.'/'.$name.'"'; 43 system($cmd); 44 45 if (-e $name.".err"){ 46 my $err = slurp($name.".err"); 47 if (index($err, 'curl:') > -1){ 48 #curl 下载错误 49 push(@errs, $name); 50 51 if (-e $name){ 52 unlink($name); 53 } 54 } 55 unlink($name.".err"); 56 57 } 58 if (time - $tm >= 150){ 59 print '['.$j.'|'.scalar(@errs)."]\n"; 60 $tm = time; 61 } 62 63 } 64 65 print "\n"; 66 if (scalar(@errs) > 0){ 67 print "Error:".join(',', @errs)."\n"; 68 } 69 print 'FINISH';
这篇关于perl调用curl下载m3u8的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享