# Part of get-flash-videos. See get_flash_videos for copyright.
package FlashVideo::Site::Redbull;
use strict;
use FlashVideo::Utils;
use URI;
use HTML::Entities;
sub find_video {
my ($self, $browser, $page_url) = @_;
my $video_info_url;
my $host = $browser->uri->host;
if ( ($browser->content =~ /data_url:\s+'([^']+)'/) or
($browser->content =~ m{displayVideoPlayer\('([^']+)'\)})) {
$video_info_url = $1;
$video_info_url = "http://$host$video_info_url";
}
if (!$video_info_url) {
die "Couldn't find video info URL";
}
$browser->get($video_info_url);
if ($browser->response->is_redirect) {
$browser->get($browser->response->header('Location'));
}
if (!$browser->success) {
die "Couldn't download Red Bull video info XML: " .
$browser->response->status_line;
}
# Red Bull's XML is screwed up:
# <?xml version=&"1.0&"
# All your double encoded entities is belong to them.
# If Red Bull want to thank us for pointing this out, please send a few cases
# to Zak and Monsieur.
my $xml = $browser->content;
$xml =~ s/&//g;
$xml = decode_entities($xml);
my $video_info = from_xml($xml);
my $file_type = "flv";
if ($video_info->{high_video_url} =~ /\.mp4$/) {
$file_type = "mp4";
}
return {
flv => title_to_filename($video_info->{title}, $file_type),
rtmp => $video_info->{high_video_url},
};
}
1;