in reply to Re: YouTube Video Downloader
in thread YouTube Video Downloader

Well the times they keep a changin' ...
#!/usr/bin/perl use strict; use warnings; use LWP::Simple; use LWP::UserAgent; # shamelessly reversed engineered from a python script :-) print "starting first page retrieval\n"; my $urlin = shift || "http://youtube.com/watch?v=vCsQLQ00hvs"; my $content = get( $urlin ) or die "argh : $!\n"; print "done first page retrieval : $urlin\n"; # print "$content" ; # regex for 2 key text strings which identify the video file # the second one $2 is unique for each download attempt # $content =~ /player2\.swf\?video_id=([^&]+)&.*t=([^&]+)&/ ; my $infile = ($content =~ m{<title>([^<]+)</title>})[0] . '.flv'; my ($video_id) = ($content =~ /watch_fullscreen\?(?:.*?)video_id=([^&] ++)/); my ($t_id) = ($content =~ /watch_fullscreen\?(?:.*?)t=([^&]+)/); my $get_url = "http://www.youtube.com/get_video?video_id=$video_id&t=$ +t_id"; print "gettin video file : $infile\n"; # don't buffer the prints to make the status update $| = 1; open(IN,"> $infile") or die "$_\n"; my $ua = LWP::UserAgent->new(); my $received_size = 0; my $url = $get_url; print "Fetching $url\n"; my $request_time = time; my $last_update = 0; my $response = $ua->get($url, ':content_cb' => \&callback, ':read_size_hint' => 8192, ); print "\n"; close IN; #play the flv file with mplayer # system( "mplayer $infile" ); ############################################# sub callback { my ($data, $response, $protocol) = @_; my $total_size = $response->header('Content-Length') || 0; $received_size += length $data; # write the $data to a filehandle or whatever should happen # with it here. print IN $data; my $time_now = time; # this to make the status only update once per second. return unless $time_now > $last_update or $received_size == $total_s +ize; $last_update = $time_now; print "\rReceived $received_size bytes"; printf " (%i%%)", (100/$total_size)*$received_size if $total_size; printf " %6.1f/bps", $received_size/(($time_now-$request_time)||1) if $received_size; } __END__
Works like a charm again! :)

Replies are listed 'Best First'.
Re^3: YouTube Video Downloader
by wazoox (Prior) on Jan 31, 2008 at 08:13 UTC
    thanks for the update !
      i cannot get this to work on my macintosh. nothing is displayed or played but it completes the script.
        Works for me. You need to have mencoder installed and to modify the paths in the script accordingly.
      Can you get this to work with videos from clipfish.de, too? (Wrong URL in previous posting, sorry...)