blob: 4214bbc2b7d8887222699dc1c4c53e6677a7e498 [file] [log] [blame]
# Part of get-flash-videos. See get_flash_videos for copyright.
package FlashVideo::Site::Stickam;
use strict;
use FlashVideo::Utils;
sub find_video {
my($self, $browser, $embed_url, $prefs) = @_;
my $perfomer_id;
if ($browser->content =~ /profileUserId=(\d+)/) {
$perfomer_id = $1;
}
else {
die "Can't get performer ID";
}
my $filename;
if ($browser->content =~ /userName=([^&]+)/) {
$filename = $1;
}
else {
$filename = $perfomer_id;
}
my $stream_info_url = sprintf
"http://player.stickam.com/servlet/flash/getChannel?" .
"type=join&performerID=%d", $perfomer_id;
$browser->get($stream_info_url);
if (!$browser->success) {
die "Couldn't get stream info: " . $browser->response->status_line;
}
my %stream_info;
foreach my $pair (split /&/, $browser->content) {
my ($name, $value) = split /=/, $pair;
# Special handling for server IP, as multiple can be specified.
if ($name eq 'freeServerIP') {
$value = (split /,/, $value)[0];
}
$stream_info{$name} = $value;
}
if ($stream_info{errorCode}) {
die "Stickam returned error $stream_info{errorCode}: $stream_info{errorMessage}";
}
my $rtmp_stream_url = sprintf
"rtmp://%s/video_chat2_stickam_peep/%d/public/mainHostFeed",
$stream_info{freeServerIP},
$stream_info{channelID};
return {
rtmp => $rtmp_stream_url,
flv => title_to_filename($filename),
live => '',
conn => [
'O:1',
"NS:channel:$perfomer_id",
'O:1',
],
swfhash($browser,
"http://player.stickam.com/flash/stickam/stickam_simple_video_player.swf")
};
}
1;