Aujourd'hui, j'ai vu un article sur S8S8. Un script de shell, un langage C, C ++, VBS, PHP, Perl, Java et C #, c'est un coup de tête. , mais après avoir lu quelques photos, ils ne conviennent pas aux enfants.
Code de programme complet:
// L'écriture est relativement rude, mais elle peut essentiellement réaliser la fonction de téléchargement, donc je ne peux pas contrôler autant.
unité getmm;
interface
usages
Windows, messages, systèmes, variantes, classes, graphiques, contrôles, formulaires,
Dialogues, stdctrls, idbascomponent, idComponent, idtcpConnection,
IdtcpClient, idhttp;
const
Url = 'http: //www.sergeaura.net/tgp/';
Offi = 192; // nombre de répertoires
Offj = 16; // le nombre maximum d'images dans chaque répertoire
girlpic = 'c: / girlpic /';
// classe de fil
taper
Tgetmm = classe (tthread)
Protégé
Fmmurl: chaîne;
FdestPath: String;
Fsubj: String;
procédure exécute; remplacer;
publique
Constructor Create (mmurl, destpath, subj: string);
fin;
taper
Tform1 = classe (tform)
Button1: Tbutton;
Button2: TBUTTON;
Memo1: TMEMO;
IDHTTP1: TIDHTTP;
Checkbox1: tCheckbox;
Procédure Button1Click (expéditeur: tobject);
Procédure Button2Click (expéditeur: tobject);
Privé
{Déclarations privées}
RGETMM: TTHREAD;
Procédure getmmthread (mmurl, destpath, subj: string);
publique
{Déclarations publiques}
fin;
var
FORM1: TFORM1;
Mise en œuvre
{$ R * .dfm}
// Télécharger le processus
Procédure tform1.button1Click (expéditeur: tobject);
var
I, J: entier;
Subi, subj, cururl, destpath: string;
Strm: TmemoryStream;
Commencer
memo1.lines.clear;
// Créer un répertoire
Si pas DirectoryExists (Girlpic) alors
Mkdir (Girlpic);
essayer
strm: = tmeMoryStream.Create;
pour i: = 1 à offi faire
Commencer
pour j: = 1 à offj do
Commencer
si (i <10) alors
Sub: = '00' + inttoStr (i)
sinon si (i> 9) et (i <100) alors
Sub: = '0' + inttoStr (i)
else subi: = inttoStr (i);
si (j> 9) alors
Subj: = inttoStr (j)
else subj: = '0' + inttoStr (j);
Cururl: = url + sub + '/ images /';
Destpath: = girlpic + subi + '/';
Si pas DirectoryExists (destpath) alors
ForceDirectries (destpath);
// utilise des threads, la vitesse peut être augmentée de plus de n fois
Si Checkbox1. est venu alors
Commencer
Getmmthread (cururl, destpath, subj);
sommeil (500);
fin d'autre
// Aucun thread n'est utilisé
Commencer
essayer
str.Clear;
Idhttp1.get (cururl + subj + '. Jpg', strm);
str.savetofile (destpath + subj + '. jpg');
Memo1.lines.add (cururl + 'télécharger ok!');
str.Clear;
Idhttp1.get (cururl + 'tn _' + subj + '. Jpg', strm);
str.savetofile (destpath + 'tn _' + subj + '. jpg');
Memo1.lines.add (cururl + 'télécharger ok!');
sauf
Memo1.lines.add (cururl + 'error de téléchargement!');
fin;
fin;
fin;
fin;
Memo1.lines.add («All ok!»);
Enfin
str.free;
fin;
fin;
Procédure tform1.button2click (expéditeur: tobject);
Commencer
Fermer;
fin;
{TGetMM}
Constructeur TGETMM.Create (MMURL, destpath, subj: string);
Commencer
Fmmurl: = mmurl;
FdestPath: = destpath;
Fsubj: = subj;
hérité de création (false);
fin;
procédure tgetmm.execute;
var
Strm: TmemoryStream;
IdGetmm: TidHttp;
Destfile: String;
Commencer
essayer
strm: = tmeMoryStream.Create;
IdGetmm: = tidhttp.create (nil);
essayer
Destfile: = fdestpath + fsubj + '. Jpg';
Si ce n'est pas des fichiers (destfile) alors
Commencer
str.Clear;
IdGetmm.get (fmmurl + fsubj + '. Jpg', strm);
str.savetofile (destfile);
fin;
Destfile: = fdestpath + 'tn _' + fsubj + '. Jpg';
Si ce n'est pas des fichiers (destfile) alors
Commencer
str.Clear;
IdGetmm.get (fmmurl + 'tn _' + fsubj + '. Jpg', strm);
str.savetofile (destfile);
fin;
sauf
fin;
Enfin
Str.free;
IdGetmm.free;
fin;
fin;
Procédure tform1.getmmthread (mmurl, destpath, subj: string);
Commencer
RGETMM: = TGETMM.CREATE (MMURL, destpath, subj);
fin;
fin.