perl调用curl下载m3u8
perl调用curl下载m3u8,特点:下载错误的检查,
use strict; use warnings; #格式: prefix,file1,file2... my $fn = $ARGV[0]; print "File=$fn\n"; sub slurp{ # 一次性读取文件, 参数是文件名 open(my $f, '<', shift); my $c = ''; while (<$f>){ $c = $c.$_; } close($f); return $c; } my $doc = slurp($fn); my @tns = split(/,/, $doc); my $prefix = shift(@tns); my @names = (); # 检查是否有后缀名 if (index($tns[0], '.ts') == -1){ print "auto edit url\n"; foreach my $tn (@tns){ $tn =~ s/\&/A/g; $tn =~ s/\?/B/g; $tn =~ s/\=/C/g; $tn = $tn.'.ts'; if (-e $tn) {} else { push(@names, $tn); } } } else { foreach my $tn (@tns) { if (-e $tn) {} else { push(@names, $tn); } } } my $tm = time; my @errs = (); my $app = "curl.exe -L -k -A \"Mozilla/5.0 (Windows NT 6.1; WOW64) Chrome/72.0.3626.96\" "; print "[0|0]\n"; for (my $j = 0; $j < scalar(@names); $j++){ my $name = $names[$j]; if (-e $name.".err"){ unlink($name.".err"); unlink($name); } my $cmd = $app." --stderr ".$name.".err -o ".$name.' "'.$prefix.'/'.$name.'"'; system($cmd); if (-e $name.".err"){ my $err = slurp($name.".err"); if (index($err, 'curl:') > -1){ #curl 下载错误 push(@errs, $name); if (-e $name){ unlink($name); } } unlink($name.".err"); } if (time - $tm >= 150){ print '['.$j.'|'.scalar(@errs)."]\n"; $tm = time; } } print "\n"; if (scalar(@errs) > 0){ print "Error:".join(',', @errs)."\n"; } print 'FINISH';

浙公网安备 33010602011771号