Page 1 sur 1

[Func] InetGetSources()

Posté : sam. 30 janv. 2010 11:31
par DJSIR
Welcome All !
J'ai fait une petite fonction simple (:D) qui permet de télécharger et d'extraire un fichier ZIP de ressources.
Il peux être utilisé pour alléger votre .exe par exemple !

J'ai poussé au maximum la fonction de façon à donner un maximum de paramètres.
Toutes les informations sur le déroulement de la fonction s'affichent sur la console.

Fonction :

Code : Tout sélectionner

Func InetGetSources($URL, $DIR, $ProgressDown = 1, $ProgressZip = 0, $ReDown = 0)
    ConsoleWrite("-> // InetGetSources() 2.2 by DJSIR Started" & @CRLF)

    #cs ----------------------------------------------------------------------------------------------------------------------
        InetGetSources() 2.2 by DJSIR
            Cette fonction permet de télécharger différentes ressources (images, audio, texte) dans un ZIP et de les extraire dans le dossier voulu.
        Paramètres :
            $URL (lien), lien vers le fichier à télécharger
            $DIR (dossier), lien vers dossier d'extraction
        Options :
            $ProgressDown / $ProgressZip (1/0), affiche où non une barre de progression (Down différent de Zip)
            $ReDown (1/0), si le fichier existe déja, le re-télécharger ?
        Remarques :
            La Fonction $FileExtention ne fonctionne pas avec les pages PHP. Le téléchargement fonctionnera.
            Ex : http://down.source.fr/.../fichier-win32.exe?langue=en
        Returns :
            1 : Finish Succefull
            0 : Finish with Errors and Set "@error"
        "@error" Returns :
            1 : $URL n'est pas un "String"
            2 : $DIR n'est pas un "String"
            3 : $ProgressDown n'est pas un nombre
            4 : $ProgressZip n'est pas un nombre
            5 : $ReDown n'est pas un nombre
            6 : Le fichier n'à pu être téléchargé
    #ce ----------------------------------------------------------------------------------------------------------------------

    Select
        Case IsString($URL) = 0
            _SetError(1)
            Return 0
        Case IsString($DIR) = 0
            _SetError(2)
            Return 0
        Case StringIsDigit($ProgressDown) = 0
            _SetError(3)
            Return 0
        Case StringIsDigit($ProgressZip) = 0
            _SetError(4)
            Return 0
        Case StringIsDigit($ReDown) = 0
            _SetError(5)
            Return 0
    EndSelect

    ConsoleWrite('> Retrieving File Information..' & @CRLF)
    $FileSize = InetGetSize($URL)
    $FileExtention = StringSplit($URL, ".")
    $FileExtention_Num = UBound($FileExtention) - 1
    ConsoleWrite(@TAB & '- File Format *.' & $FileExtention[$FileExtention_Num] & @CRLF & @TAB & '- File Size ' & $FileSize & ' bytes' & @CRLF)

    ConsoleWrite('> Getting File..' & @CRLF)

    If $ProgressDown = True Then
        ProgressOn("Getting Ressources..", "Downloading Ressources..", "0 %", -1, -1, 16)
    EndIf

    DirCreate(@ScriptDir & "\c60414ce")
    $FileDownload = InetGet($URL, @ScriptDir & "\c60414ce." & $FileExtention[$FileExtention_Num], $ReDown, 1)

    Do
        $IntPercent = Int(InetGetInfo($FileDownload, 0) * 100 / $FileSize)
        If $ProgressDown = True Then ProgressSet($IntPercent, $IntPercent & " %")
        ConsoleWrite(@TAB & InetGetInfo($FileDownload, 0) & " bytes of " & $FileSize & " downloaded" & @CRLF)
        Sleep(50)
    Until InetGetInfo($FileDownload, 2) = True
    
    If FileExists(@ScriptDir & "\c60414ce." & $FileExtention[$FileExtention_Num]) = 0 Then
        _SetError(6)
        Return 0
    EndIf   
    
    ConsoleWrite('+> Download Finished' & @CRLF)

    ConsoleWrite('> Extracting File..' & @CRLF)
    _7ZIPExtract(0, @ScriptDir & "\c60414ce." & $FileExtention[$FileExtention_Num], $DIR, 1, $ProgressZip)
    ConsoleWrite('+> Extraction Finished' & @CRLF)

    ConsoleWrite('-> \\ InetGetSources() 2.2 by DJSIR Finished' & @CRLF)
    Return 1
EndFunc   ;==>InetGetSources

Func _SetError($NUM)
    SetError($NUM)
    ConsoleWrite('!> // InetGetSources() 2.2 by DJSIR Finished' & @CRLF & @TAB & 'Error n°' & @error & @CRLF)
EndFunc   ;==>_SetError
Exemples d'utilisation :
► Afficher le texteExemple 1
► Afficher le texteExemple 2
WARNING : Ce code nécessite l'UDF 7-Zip.au3 disponible en pièce jointe. Elle est modifiée pour que vous n'ayez pas besoin d'avoir le fichier 7-Zip32.dll.

Re: [Func] _GetRessources()

Posté : sam. 30 janv. 2010 12:01
par timmalos
Pas testé mais ca a l'air pas mal. Il manque cependant quelques petites choses pour devenir une vraie belle fonction
  • Teste toutes les entrées : Never Trust Never Income , Il faut verifier certains parametres obligatoires, si ce sont bien des strings, si tu fais des comparaisons les faire en stringtolower etc... Aide toi des fonctions integrées à Autoit, tu verra que pour certaines les tests prennent beaucoup plus de code que la fonction elle meme. Mais c'est tres important.
  • Chose liée à la première. Il faut que tu gere le retour de la fonction d'une facon beaucoup plus ordonnée. Par exemple Rajouter un Flag pour demander ce que l'utilisateur veut comme retour, 1 ou 0, ou le lien vers le fichier si réussi, etc... Voir avec SetError pour mettre en @Extended Si besoin est.
  • Changer le nom de la fonction. Il faut prevenir qu'elle est la pour telecharger sur le net. Si tu comptes l'utiliser uniquement pour des fichiers .zip ou 7z, alors mets quelque chose genre _InetGet_Zip() pour que ce soit bien comprehensible.
  • Il faudrait prevoir le cas ou le fichier n'est pas compréssé pour qu'il soti traité quand meme mais sans la decompression.
  • Enfin pour que cette fonction se demarque, il faudrait peut etre accentuer le fait qu'il y ait les Progress Inclues, par exemple en les customisant (Tlem a mis des exemples sur le forum)

Re: [Func] _GetRessources()

Posté : sam. 30 janv. 2010 12:12
par Tlem
Tim m'a devancé de quelques minutes ... ;)

Le plus gros reproche que j'aurais à faire, c'est que le nom de la fonction ne correspond pas à son utilisation. Donc il faut la modifier.

Re: [Func] _GetRessources()

Posté : sam. 30 janv. 2010 18:39
par DJSIR
Je vais corriger ça !

Re: [Func] InetGetSources()

Posté : dim. 31 janv. 2010 10:27
par DJSIR
Mis à jour en version 2.2 ^^

Re: [Func] InetGetSources()

Posté : dim. 31 janv. 2010 16:19
par Tlem
Mouais, mais le nom de la fonction ne correspond toujours pas à son utilisation réelle.