# $Id: 4Shared 11988 2010-12-18 15:26:37Z sparky $
# Get::4Shared - File getter plugin for rsget.pl
#
# 2009-2010 (c) Przemysław Iskra <sparky@pld-linux.org>
#		This program is free software,
# you may distribute it under GPL v2 or newer.

name: 4Shared
short: 4S
web: "http://www.4shared.com/"
tos: "http://www.4shared.com/terms.jsp"
uri: qr{4shared\.com/(account/)?file/}
cookie: 4s
slots: max
status: OK 2010-12-18

unify:
	return "http://www.4shared.com/file/$1/$2"
		if m{/file/(\d+)/([0-9a-f]+)};

start:
	GET( $-{_uri} );

	DELAY( 600, "temporarily unavailable" )
		if m{<b>4shared servers are currently undergoing a short-time maintenance\.</b>};

	ERROR( "file not found" )
		if m{^\s*<img alt="" src="/images/spacer\.gif" class="warn" hspace="3" align="left" />\s*$}m;

	! m{<h1 id="fileNameText">(.*?)</h1>};
	my $name = de_ml( $1 );

	! m{<div class="small lgrey".*<b>(\d+(?:,\d+)? KB)</b>}s;
	( my $size = $1 ) =~ tr/,/./;
	INFO( name => $name, asize => $size );

	! m{<a href="(.*?)" class="dbtn" tabindex="1">};
	my $btn_uri = $1;

	if ( m{doFullImgExpand\(this,} ) {
		$-{file_uri} = $btn_uri;
		GOTO stage_download;
	}

	CLICK( $btn_uri );

	! m{id='divDLStart'>\s*<a href='(.*?)'>};
	$-{file_uri} = $1;

	! /var c = (\d+);/;
	WAIT( -$1, "starting download" );

stage_download:
	CLICK_DOWNLOAD( $-{file_uri} );

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