sub new {
my $class = shift;
- my $self = $class->SUPER::new();
-
- $self->{'NAME'} = 'redtube';
- $self->{'PATTERNS'} = ['(http://(?:[-a-zA-Z0-9_.]+\.)*redtube.com/(\d+))'];
-
- bless($self, $class);
- $self->_prepare_parameters();
-
- return $self;
+ my $self = $class->SUPER::new(
+ NAME => 'redtube',
+ _SELFTESTURL => 'http://www.redtube.com/8269',
+ _SELFTESTTITLE => 'Porn bloopers with pretty girl',
+ PATTERNS => ['(http://(?:[-a-zA-Z0-9_.]+\.)*redtube.com/(\d+))'],
+ @_,
+ );
+
+ return bless($self, $class);
}
sub div($$) {
my $metadata = {};
my $p;
my $r;
+ my $tag;
my $dir;
my $hash;
$p = HTML::TokeParser->new(\$content);
# Look for the title
- if ($p->get_tag('title')) {
- my $t = $p->get_text();
- if ($t =~ /\xa0RedTube - /) {
+ while ($tag = $p->get_tag('title', 'script')) {
+ if ('title' eq $tag->[0]) {
+ my $t = $p->get_text();
$metadata->{'TITLE'} = $t;
- $metadata->{'TITLE'} =~ s/\xa0RedTube - //;
- }
- }
+ $metadata->{'TITLE'} =~ s/ \| Redtube.*//;
+ } elsif ('script' eq $tag->[0]) {
+ my $t = $p->get_text();
- # Redtube uses a selfmade hash system to create the filename
- ($dir, $hash) = mkfilename($metadata->{'ID'});
+ if ($t =~ m|so\.addParam\("flashvars","([^\x22]+)"|) {
+ my %h;
- $metadata->{'DLURL'} = sprintf('http://dl.redtube.com/_videos_t4vn23s9jc5498tgj49icfj4678/%s/%s.flv', $dir, $hash);
+ $self->debug("Found flashvars: %s", $1);
+ %h = map { $self->decode_hexurl($_) } split(/[&=]/, $1);
+
+ $self->debug("Decoded flashvars: %s", Dumper(\%h));
+
+ if (exists($h{mp4_url})) {
+ $metadata->{'DLURL'} = $h{mp4_url};
+ }
+ }
+ }
+ }
unless(defined($metadata->{'DLURL'}) && defined($metadata->{'TITLE'})) {
$self->error('Could not extract download URL and title');