Author: sparky
Date: Thu Oct 22 03:31:05 2009
New Revision: 10809

Modified:
   toys/rsget.pl/Get/HotFile
Log:
- use new qools: forms, click
- added captcha processor


Modified: toys/rsget.pl/Get/HotFile
==============================================================================
--- toys/rsget.pl/Get/HotFile   (original)
+++ toys/rsget.pl/Get/HotFile   Thu Oct 22 03:31:05 2009
@@ -3,7 +3,7 @@
 name: HotFile
 short: HF
 uri: qr{hotfile\.com/}
-status: OK 2009-08-29
+status: OK 2009-10-22
 
 start:
        GET( $-{_uri} );
@@ -22,50 +22,54 @@
        ! /starttimer.*?timerend=d\.getTime\(\)\+(\d+);/s;
        my $wait = $1 / 1000;
 
-       ! s/^.*?<form style=".*?" action="(.*?)" method=post name=f>//s;
-       $-{action} = $1;
-       ! s#^(.*?)</form>.*#$1#s;
-       my %post;
-       $post{$1} = $2 while s/<input type=hidden name=(.*?) value=(.*?)>//;
-       $-{post} = \%post;
+       ! $-{form} = $self->form( name => "f" );
 
        WAIT( $wait, "starting download" );
 
-       GET( $-{action}, post => $-{post} );
-       $-{dl_page} = $-{_referer};
+stage_getcaptcha:
+       CLICK( $-{form}->post() );
 
-       if ( m#<a href="(.*?)">Click here to download</a># ) {
-               return $self->stage_download();
-       }
-
-       ! s#^.*<form action="(.*?)" method="post">##s;
-       $-{form_uri} = $1;
+       GOTO stage_download if m#<a href="(.*?)">Click here to download</a>#;
 
-       my %post = ( action => "checkcaptcha" );
-       ! m#<input type=hidden name=captchaid value=(\d+)>#;
-       $post{captchaid} = $1;
-       ! m#<input type=hidden name=hash1 value=(\S+?)>#;
-       $post{hash1} = $1;
-       ! m#<input type=hidden name=hash2 value=(\S+?)>#;
-       $post{hash2} = $1;
-
-       $-{post} = \%post;
+       ! $-{capform} = $self->form( match => { body => qr/Enter word above/ } 
);
 
        ! m#<img src="(/captcha\.php.*?)">#;
-       my $img = $1;
-
-       GET( $img );
-       $-{_referer} = $-{dl_page};
+       GET( $1, keep_referer => 1 );
 
-       CAPTCHA( "image/jpeg" );
+       CAPTCHA(
+               qr/[a-zA-Z]{5,6}/,
+               process => \&hf_decaptcha
+       );
 
-       $-{post}->{captcha} = $_;
+       GOTO stage_getcaptcha unless defined $_;
+       $-{capform}->set( captcha => $_ );
 
-       GET( $-{form_uri}, post => $-{post} );
+       GET( $-{capform}->post() );
 stage_download:
 
-       RESTART( 0, "invalid captcha ?" ) unless m#<a href="(.*?)">Click here 
to download</a>#;
+       if ( m#<a href="(.*?)">Click here to download</a># ) {
+               CAPTCHA_RESULT( "OK" );
+       } else {
+               CAPTCHA_RESULT( "FAIL" );
+               GOTO stage_getcaptcha;
+       }
+
+       CLICK_DOWNLOAD( $1 );
+
+perl:
 
-       DOWNLOAD( $1 );
+sub hf_color_select_lowest
+{
+       my @s = sort { $a <=> $b } @_;
+       return $s[0];
+}
+
+sub hf_decaptcha
+{
+       my $img = shift;
+       $img->color_filter( \&hf_color_select_lowest );
+       $img->luma_emphasize( 90, 130 );
+       return $img->ocr();
+}
 
 # vim:ts=4:sw=4
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to