in reply to Re: Whats wrong with this code
in thread Whats wrong with this code

I did the above changes and tried but no use. Still I am getting corrupted video.

Replies are listed 'Best First'.
Re^3: Whats wrong with this code
by Anonymous Monk on Jul 22, 2011 at 13:52 UTC

    I did the above changes and tried but no use.

    Show the changed code :) your probably forgot to binmode ... you could simply use mirror( $url, $filename ) or get-flash-videos ...

      Please see the modified code
      use LWP; use URI::Escape; my $url; foreach $_ (@ARGV) { $_ =~ s[^.*[=/]?([\w\-]{11}).*][$1]; my $ua = LWP::UserAgent->new; #$ua->proxy(['http', 'ftp'], 'http://192.16.3.254:8080/'); $c = uri_unescape($t = $ua->get("http://www.youtube.com/get_video_info +?&video_id=$_&el=detailpage&ps=default&eurl=&gl=US&hl=en")->content); $t =~ /&title=([^&]+)&/ ? $t = uri_unescape($1) : ''; $t =~ s[\+|/][ ]g ? $t = quotemeta $t : ''; $c =~ s/.*fmt_url_map=[\d\|]+([^,]+).*/$1/; print $c."\n"; open(FILE, '>Test.mp4'); binmode (FILE); my $resp = $ua->get( $c ) or die; if ( $resp->is_success) { print FILE $resp->content; close(FILE); } else { print "Failed\n"; } }
        You're not fixing problems already identified in responses above, starting with the first, urging you to test your open (and, by implication, your close, too)...
        open(FILE, '>Test.mp4');
        which would be better written as
        open(my $file, '>Test.mp4') or die "Can't open for writing, $FILE", $!;
        and you just might find using strict and warnings helpful