]> git.llucax.com Git - personal/documentos.git/blob - bin/grab.php
Más.
[personal/documentos.git] / bin / grab.php
1 #!/usr/bin/php4 -qC
2 <?
3
4 if ( $argc < 3 )
5     die( "faltan argumentos! $argv[0] URL EXP PREFIX\n" );
6
7 $url    = $argv[1];
8 $exp    = $argv[2];
9 $prefix = $argv[3];
10
11 preg_match( '|(https?://)?(.*/)([^/]+)?|i', $url, $m );
12 $urlbasepath = ( empty( $m[1] ) ? 'http://' : $m[1] ) . ( empty( $m[2] ) ? '' : $m[2] );
13 preg_match( '|https?://[^/]*|i', $urlbasepath, $m );
14 $urlbase = $m[0];
15
16 $file = join( '', file( $url, 'r' ) );
17
18 if ( empty( $file ) )
19     die( "No se pudo abrir $url\n" );
20
21 preg_match_all( '|href="?(([^"]*/)?([^"/]+))"?|i', $file, $m, PREG_SET_ORDER );
22
23 foreach ( $m as $link ) {
24     list( $href, $url, $path, $file ) = $link;
25     if ( file_exists( "$prefix$file" ) and filesize( "$prefix$file" ) )
26         continue;
27     if ( preg_match( "|$exp|i", $url ) ) {
28         if ( preg_match( '|http://|i', $url ) )
29             $arch = $url;
30         elseif ( preg_match( '|^/|i', $url ) ) 
31             $arch = "$urlbase$path$file";
32         else
33             $arch = "$urlbasepath$path$file";
34         $fi = fopen( $arch, 'r' );
35         $fo = fopen( "$prefix$file", 'w' );
36         echo "Bajando $arch ";
37         while ( $fi and !feof( $fi ) ) {
38             fputs( $fo, fread( $fi, 4096 ) );
39             echo '.';
40         }
41         echo " listo!\n";
42         fclose( $fi );
43         fclose( $fo );
44     }
45 }
46
47 ?>