Hoy vi una publicación en S8S8. Un script de shell, lenguaje C, C ++, VBS, PHP, Perl, Java y C#, es un capricho. , pero después de leer algunas fotos, no eran todas adecuadas para los niños.
Código completo del programa:
// La escritura es relativamente dura, pero básicamente puede darse cuenta de la función de descarga, por lo que no puedo controlar tanto.
unidad getmm;
interfaz
usos
Windows, mensajes, sysutils, variantes, clases, gráficos, controles, formularios,
Diálogo, stdctrls, idbasecomponent, idcomponent, idtcpconnection,
IdtcpClient, idhttp;
estúpido
Url = 'http: //www.sergeaura.net/tgp/';
Offi = 192;
OffJ = 16; /el número máximo de imágenes en cada directorio
GirlPic = 'c:/girlpic/';
// clase de hilo
tipo
Tgetmm = class (tthread)
Protegido
Fmmurl: cadena;
FDestpath: cadena;
Fsubj: cadena;
procedimiento ejecutar; anular;
público
constructor create (mmurl, destpath, subj: string);
fin;
tipo
TForm1 = class (tForm)
Botón 1: tbutton;
Button2: tbutton;
Memo1: tmemo;
Idhttp1: tidhttp;
Casilla de verificación1: tcheckbox;
procedimiento botón1Click (remitente: tobject);
procedimiento Button2Click (remitente: tobject);
Privado
{Declaraciones privadas}
Rgetmm: tthread;
procedimiento getmmThread (mmurl, destpath, subj: string);
público
{Declaraciones públicas}
fin;
varilla
Form1: tform1;
Implementación
{$ R *.dfm}
// proceso de descarga
procedimiento tForm1.Button1Click (remitente: tobject);
varilla
I, J: entero;
Subi, Subj, Cururl, Destpath: String;
strm: tmemorystream;
Comenzar
Memo1.lines.clear;
// Crear un directorio
Si no es directorioxista (GirlPic) entonces
Mkdir (Girlpic);
intentar
strm: = tMemoryStream.Create;
para i: = 1 para hacer
Comenzar
para j: = 1 para hacer
Comenzar
if (i <10) entonces
Subi: = '00'+intToStr (i)
más if (i> 9) y (i <100) entonces
Subi: = '0'+intToStr (i)
else subi: = intToStr (i);
if (j> 9) entonces
Subj: = intToStr (j)
else subj: = '0'+intToStr (j);
Cururl: = url+subi+'/images/';
DestPath: = GirlPic+Subi+'/';
Si no es directorioxists (DestPath) entonces
ForceCedirectorios (Destpath);
// usa hilos, la velocidad se puede aumentar en más de n veces
Si la casilla de verificación 1.
Comenzar
GetmmThread (Cururl, Destpath, Subj);
dormir (500);
fin
// No se usan hilos
Comenzar
intentar
strmmear;
Idhttp1.get (cururl+subj+'. Jpg', strm);
strm.savetofile (DestPath+Subj+'. Jpg');
Memo1.lines.add (Cururl+'Descargar OK!');
strmmear;
Idhttp1.get (cururl+'tn _'+subj+'. Jpg', strm);
strm.savetofile (DestPath+'tn _'+subj+'. jpg');
Memo1.lines.add (Cururl+'Descargar OK!');
excepto
Memo1.lines.add (Cururl+'Descargar error!');
fin;
fin;
fin;
fin;
Memo1.lines.add ('¡Todo bien!');
Finalmente
Strm.Free;
fin;
fin;
procedimiento tForm1.Button2Click (remitente: tobject);
Comenzar
Cerca;
fin;
{Tgetmm}
constructor tgetmm.create (mmurl, destpath, subj: string);
Comenzar
Fmmurl: = mmurl;
FDestpath: = DestPath;
Fsubj: = subj;
create heredado (falso);
fin;
procedimiento tgetmm.Execute;
varilla
strm: tmemorystream;
Idgmm: tidhttp;
DestFile: String;
Comenzar
intentar
strm: = tMemoryStream.Create;
Idgmm: = tidhttp.create (nil);
intentar
Destfile: = fDestPath+fsubj+'. Jpg';
Si no los fileexistas (Destfile) entonces
Comenzar
strmmear;
Idgetmm.get (fmmurl+fsubj+'. Jpg', strm);
strm.savetofile (destfile);
fin;
Destfile: = fDestPath+'tn _'+fsubj+'. Jpg';
si no los fileexistas (Destfile) entonces
Comenzar
strmmear;
Idgetmm.get (fmmurl+'tn _'+fsubj+'. Jpg', strm);
strm.savetofile (destfile);
fin;
excepto
fin;
Finalmente
Strm.Free;
IDgetmm.Free;
fin;
fin;
procedimiento tform1.getmmThread (mmurl, destpath, subj: string);
Comenzar
Rgetmm: = tgetmm.create (mmurl, destpath, subj);
fin;
fin.