[Func] InetGetSources()

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
DJSIR
Niveau 8
Niveau 8
Messages : 583
Enregistré le : mar. 01 juil. 2008 15:16
Localisation : 76, Le HAVRE (in the DJSIR World)
Status : Hors ligne

[Func] InetGetSources()

#1

Message 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.
Fichiers joints
7Zip.au3
fichier à inclure pour la fonction 7ZIPExtract
(35.73 Kio) Téléchargé 379 fois
Modifié en dernier par DJSIR le dim. 31 janv. 2010 10:26, modifié 2 fois.
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [Func] _GetRessources()

#2

Message 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)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] _GetRessources()

#3

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
DJSIR
Niveau 8
Niveau 8
Messages : 583
Enregistré le : mar. 01 juil. 2008 15:16
Localisation : 76, Le HAVRE (in the DJSIR World)
Status : Hors ligne

Re: [Func] _GetRessources()

#4

Message par DJSIR »

Je vais corriger ça !
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
Avatar du membre
DJSIR
Niveau 8
Niveau 8
Messages : 583
Enregistré le : mar. 01 juil. 2008 15:16
Localisation : 76, Le HAVRE (in the DJSIR World)
Status : Hors ligne

Re: [Func] InetGetSources()

#5

Message par DJSIR »

Mis à jour en version 2.2 ^^
$DJSIR = "1000110001010101011010000101001101001101001010101011010"
(ne décodez pas le binaire, ça veux rien dire)

[Func] ProgressBar, aller plus loin
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] InetGetSources()

#6

Message par Tlem »

Mouais, mais le nom de la fonction ne correspond toujours pas à son utilisation réelle.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre