# $Id: TurboUpload 10867 2009-10-26 22:47:10Z sparky $
# Get::TurboUpload - File getter plugin for rsget.pl
#
# 2009 (c) Przemysław Iskra <sparky@pld-linux.org>
#		This program is free software,
# you may distribute it under GPL v2 or newer.

name: TurboUpload
short: TU
uri: qr{turboupload\.com/(../)?files/get/.+?/.+}
status: OK 2009-10-23

start:
	GET( $-{_uri} );

	ERROR( "file not found" ) if /File Not Found/;
	! m{<h2>\S* \S* (.*?)</h2>\s*<font .*?</font> \(($STDSIZE)\)</font>}s;
	INFO( name => $1, asize => $2 );

	! my $form = $self->form( match => { body => qr/"method_free"/ } );
	! $form->select( method_free => 0 );

	CLICK( $form->post() );

	ERROR( "file not found" )
		if /No such file with this filename/;

	if ( /You have to wait (.*) till next download/ ) {
		$_ = $1;
		my $wait = 0;
		$wait += 60 * 60 * $1 if /(\d+) hour/;
		$wait += 60 * $1 if /(\d+) minute/;
		$wait += $1 if /(\d+) second/;
		RESTART( $wait, "free limit reached" );
	}

	! $-{form} = $self->form( name => "F1" );

	! m#Enter code below:[\S\s]*?<div.*?>(.*?)</div>#;
	$-{form}->set( code => captcha( $1 ) );

	! m#<span id="countdown">(\d+)</span>#;
	WAIT( $1, "starting download" );
	
	CLICK_DOWNLOAD( $-{form}->post() );

perl:
	sub captcha
	{
		my %c = map /<span.*?padding-left:\s*?(\d+)px;.*?>(\d)</g, shift;
		my @c = map { $c{$_} } sort { $a <=> $b } keys %c;
		return join "", @c;
	}

# vim: filetype=perl:ts=4:sw=4
