# $Id: 4Shared 10867 2009-10-26 22:47:10Z sparky $
# Link::4Shared - Link retriever 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: 4Shared
short: L:4Shared
uri: qr{4shared\.com/dir/}
slots: max
cookie: !4sh
status: OK 2009-10-24

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(/file/\d+/[0-9a-f]+)(?:/.*?)?"}g;
	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
