SVN: toys/rsget.pl/Get/GigaSize
sparky
sparky at pld-linux.org
Mon Oct 12 14:35:14 CEST 2009
Author: sparky
Date: Mon Oct 12 14:35:13 2009
New Revision: 10764
Added:
toys/rsget.pl/Get/GigaSize
Log:
- new, very poor service
Added: toys/rsget.pl/Get/GigaSize
==============================================================================
--- (empty file)
+++ toys/rsget.pl/Get/GigaSize Mon Oct 12 14:35:13 2009
@@ -0,0 +1,80 @@
+#!/usr/bin/perl
+
+name: GigaSize
+short: GS
+uri: qr{gigasize\.com/get\.php\?d=}
+cookie: gs
+status: OK 2009-10-11
+
+pre:
+ use IPC::Open2;
+ my @cap;
+ if ( require_prog( "djpeg" ) ) {
+ push @cap, 'djpeg -pnm -grey';
+ } elsif ( require_prog( "jpegtopnm" ) ) {
+ push @cap, 'jpegtopnm';
+ push @cap, 'ppmtopgm' if require_prog( "ppmtopgm" );
+ warn "Using jpegtopnm, but djpeg would give better results\n";
+ } else {
+ die "Required djpeg (preferred) or jpegtopnm\n";
+ }
+
+ push @cap, 'pamcut -left 15 -top 3 -right 42 -bottom 16'
+ if require_prog( "pamcut" );
+
+ if ( require_prog( "gocr" ) ) {
+ push @cap, 'gocr -f ASCII -a 5 -m 56';
+ } elsif ( require_prog( "ocrad" ) ) {
+ push @cap, 'ocrad';
+ warn "Using ocrad, but gocr would give better results\n";
+ } else {
+ die "Required gocr (preferred) or ocrad\n";
+ }
+ my $cap_prog = join " | ", map "$_ 2>/dev/null", @cap;
+
+ sub captcha
+ {
+ my $data = shift;
+
+ IPC::Open2::open2( *READ, *WRITE, $cap_prog );
+ print WRITE $$data;
+ close WRITE;
+ my $out = <READ>;
+ close READ;
+
+ return $1 if $out =~ /([a-zA-Z]{3})/;
+ return undef;
+ }
+
+start:
+ GET( $-{_uri} );
+
+ ERROR( "file not found" ) if /The file has been deleted/;
+
+ ! m{<strong>Name</strong>:\s*<b>(.*?)</b></p>\s*<p>Size:\s*<span>($STDSIZE)</span>};
+ INFO( name => $1, asize => $2 );
+
+stage_captcha:
+ PRINT( "solving captcha" );
+ ! $-{form} = $self->form( match => { action => qr{^/formdownload\.php$} } );
+
+ GET( "/randomImage.php", keep_referer => 1 );
+
+ my $cap = captcha( \$_ );
+ RESTART( -1, "Can't decode captcha" ) unless $cap;
+ $-{form}->set( txtNumber => $cap );
+
+ GET( $-{form}->post() );
+
+ GOTO stage_captcha if $-{_referer} =~ /err=invalidchecksum$/;
+ RESTART( -180 - int rand 360, "free limit reached, waiting time unknown" )
+ if /YOU HAVE REACHED YOUR FREE DOWNLOAD LIMIT/;
+
+ ! $-{form} = $self->form( id => "formDownload" );
+
+ ! m{var seconds=(\d+)};
+ WAIT( $1, "starting download" );
+
+ DOWNLOAD( $-{form}->post() );
+
+# vim:ts=4:sw=4
More information about the pld-cvs-commit
mailing list