# $Id: 4Shared 11656 2010-07-12 01:58:33Z sparky $
# Link::4Shared - Link retriever 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: L:4Shared
web: "http://www.4shared.com/"
tos: "http://www.4shared.com/terms.jsp"
uri: qr{4shared\.com/dir/}
slots: max
cookie: !4sh
status: OK 2010-07-12

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

start:
	GET( $-{_uri} );

	ERROR( "file not found" )
		if m{^\s*<img alt="" src="/images/spacer\.gif" class="warn" hspace="3" align="left" />\s*$}m;
	
	$-{links} = [];
	
	my @dirs = m{href="javascript:changeDir\((\d+)\)"}g;
	$-{dirs} = [ @dirs ];

stage_morelinks:
	my @links =m{<a id="ml_file_\d+"\s+href="(/account/.*?)"}sg;
	push @{$-{links}}, @links;

	if ( @{ $-{dirs} } ) {
		! my $form = $self->form( name => "leftPanelForm" );
		$form->set( changedir => shift @{ $-{dirs} } );
		$form->set( refreshAfterUnzip => "false" );
		GET_NEXT( stage_morelinks, $form->post() );
	}

	LINK( map "http://www.4shared.com$_", @{ $-{links} } );

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