Monday, August 23, 2010

Grab youtube media

#!/bin/perl

$0 =~ s:.*/::g;
while ($ARGV[0] =~ /^-/) {
if (($ARGV[0] eq "-h") || ($ARGV[0] eq "--help")) {
print "Usage: $0 URL ... \n";
print "Grab youtube media\n";
exit;
} else {
$0 =~ s/.*\///;
$ARGV[0] =~ s/^-*//;
print "$0: invalid option -- $ARGV[0]\n";
exit;
}
}

use File::Spec::Functions qw(rel2abs);
use File::Basename;

use lib dirname(rel2abs($0))."/lib";

use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
my $u;
while (@ARGV) {
$_=shift;
($i) = /v=(.+)/;
$content = $ua->get($_)->content;
($title) = $content =~ m/<title>(.*)<\/title>/s;
$title =~ s/[\r\n \t][\r\n \t]*/ /sg;
$title =~ s/^\s*|\s*$//g;
$title =~ s/ /_/g;
for ($content =~ m/l_map": .+(?:%2C)?5\|(.+?)\|/) {
$u = $_;
$u =~ s/%(..)/chr(hex($1))/ge;
$u =~ s/\\\//\//g;
};
print "Getting ${title}_$i.flv...\n";
$ua->get($u, ":content_file" => "${title}_$i.flv");
}

No comments: