Xpoint
   [напомнить пароль]

Скачать видеоролики с популярных видеосервисов YouTube, RuTube, etc.

Утилита для скачивания видеороликов из Интернета

Этот скрипт скачает вам видео с любого популярного сайта: youTube , ruTube , vKontake, mySpace, и многих других.

Использование: pownload.pl videoURL [outputfile]

Примеры:

perl pownload.pl 'http://www.break.com/index/ridiculous-chimp-rides-and-crashes-segway.html' chimp.flv

perl pownload.pl 'http://www.youtube.com/watch?v=N9Unv4zioSc'

Если outputfile не задан, то скрипт сам подбирает имя для ролика по шаблону video_ХХХХ.flv

В Интернете есть сайты, преобразующие url странички с видеороликом в ссылку на скачку видео.
Скрипт пользуется этими сайтами вместо того, чтобы разбирать html с разных видеосервисов.

Cкрипт является переводом(с небольшими изменениями) на Perl лисповского кода http://wagner.pp.ru/~slobin/newlisp/ownload.html

pownload.pl

#!/usr/bin/perl --
#
# pownload.pl   -- a tool for downloading video from popular videoservices
# see http://wagner.pp.ru/~slobin/newlisp/ownload.html for comments
#

use strict;
use warnings;
use LWP::UserAgent;

$| = 1;

my %services = (
   'http://cs.videosaver.ru/xurl/'
                => 'href="([^"]*)"\s+title="FLV',
   'http://keepvid.com/'
                => '<a href="([^"]*)"[^>]*>[^:]*\.flv',
   'http://vidirect.ru/backend/main_backend.php'
                => '^(.*)$',
   'http://0download.ru/'
                => q{copytoclipboard\('([^']*)'\)},
);

die "Usage: pownload.pl VideoURL [outputfile]\n" unless @ARGV;

my ($videourl, $outflv) = @ARGV;

my $i = 0;
$outflv = sprintf('video_%04d.flv', $i++)
   while !$outflv or -e $outflv;

my $ua = LWP::UserAgent->new;

foreach my $service (keys %services) {
    print "Trying $service...\n";
    my $response = $ua->get($service . '?url=' . $videourl);
    next unless $response->is_success
                && $response->content =~ /$services{$service}/;

    print "Saving video to $outflv...\n";

    my $received_size = 0;
    open my $fh, '>' , $outflv or die $!;
    binmode $fh;
    $ua->get($1, ':content_cb' => sub {
       my ($data, $response) = @_;
       $received_size += length $data;
       print {$fh} $data;
       printf "\r" . [qw(- \\ | /)]->[++$i % 4] . ' %d%%         ',
     100 * $received_size / ($response->header('Content-Length') || 1);
     });
    print "\nDone.\n";
    exit;
}

print "Sorry.\n";
Powered by POEM™ Engine Copyright © 2002-2005