# $Id: RapidShareDE 10867 2009-10-26 22:47:10Z sparky $
# Get::RapidShareDE - 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: RapidShareDE
short: RS.de
uri: qr{rapidshare\.de/}
status: OK 2009-10-22

start:
	GET( $-{_uri} );

	ERROR( "file not found" )
		if m{<p><script>alert.*?</script>(File not found|This file has been deleted).*?</p>};

	! $-{form} = $self->form( match => { action => qr{^http://rapidshare\.de$} } );
	! $-{form}->select( "dl.start" => 1 );
	CLICK( $-{form}->post() );

	! m{<p><p>You have requested the file <b>(.*?)</b> \(($STDSIZE)\)\.</p>};
	INFO( name => $1, asize => $2 );

	RESTART( $1 * 60 + 10, "free limit reached" )
		if /Instant download access! \(Or wait (\d+) minutes\)/;

	MULTI() if /Your IP-address .+? is already downloading a file/;

	! m{<script>var c = (\d+); fc\(\);};
	$-{wait} = $1;

	! m{getElementById\("dl"\).innerHTML = unescape\('(.*?)'\)};
	my $form = uri_unescape( $1 );
	$-{dlform} = $self->form( source => $form );

	! $form =~ m{<img src="(.*?)">};
	$-{img} = $1;

	GET( $-{img}, keep_referer => 1 );

	CAPTCHA(
		qr/[A-Z0-9]{3}/,
		process => \&rsde_decaptcha
	);

	RESTART( -1, "captcha unsolved" )
		unless defined $_;

	$-{dlform}->set( captcha => $_ );

	WAIT( $-{wait}, "starting download" );

	DOWNLOAD( $-{dlform}->post() );

	if ( /Access-code wrong/ ) {
		CAPTCHA_RESULT( "FAIL" );
		RESTART( -1, "invalid captcha" );
	}

perl:

sub rsde_color_select
{
	my @s = sort { $a <=> $b } @_;
	return $s[0];
}

sub rsde_decaptcha
{
	my $img = shift;

	$img->color_filter( \&rsde_color_select );
	$img->luma_emphasize( 100, 200 );
	return $img->ocr();
}


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