use Term::Prompt; use Getopt::Std; use HTTP::Request::Common; require LWP::UserAgent; sub login { my ($ua, $user, $pass) = @_; $ua->cookie_jar({ file => "$ENV{HOME}/.cookies.txt" }); my $req = POST 'http://www.gomtv.net/user/loginCheck.php', [cmd => 'login', returl => '', mb_username => $user, mb_password => $pass]; $res = $ua->request($req); if ($res->header('Set-Cookie') =~ /SES_memberno/) { return 1; } return 0; } sub pageRequest { my ($ua, $url) = @_; if(@_ < 2) { print STDERR "not enough parameter in pageRequest\n"; return; } my $req = new HTTP::Request 'GET', $url; my $res = $ua->request($req)->decoded_content; die "Can't fetch url $url\n" unless defined $res; return $res; } sub urlencode { my $str = shift; $str =~ s/%([A-Fa-f0-9]{2})/pack('C',hex($1))/seg; return $str; } getopts('y:u:p:'); $quality = ($opt_y) ? $opt_y : "HQ"; $username = ($opt_u) ? $opt_u : prompt('x', 'username:', '', 'your pass'); $password = ($opt_p) ? $opt_p : prompt('p', 'password:', '', ''); $ua = LWP::UserAgent->new; login($ua, $username, $password) or die "cannot login\n"; $page = pageRequest $ua, "http://www.gomtv.net/2010gslopens2/live/"; $page =~ /(http:\/\/www.gomtv.net\/gox\/flash_live\.php\?num=$quality.*?)'/ or die "url not found\n"; my $resp = urlencode(pageRequest($ua, $1)); if ($resp =~ /(http:\/\/.*?)"/) { $url = urlencode($1); exec ("vlc '$url'"); }