[..] Besoin d'aide pour Réaliser un Downloader

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
dexter74
Niveau 3
Niveau 3
Messages : 40
Enregistré le : sam. 06 févr. 2010 04:45
Status : Hors ligne

[..] Besoin d'aide pour Réaliser un Downloader

#1

Message par dexter74 »

Bonjour à tous,
J'aimerai de l'aide pour réaliser un downloader du jeux World of Warcraft pour éviter de télécharger les mise à jour 1 par 1.
J'aimerai signaler que le downloader de wow est trouvable légalement sur clubic. (http://www.clubic.com/lancer-le-telecha ... s-mac.html)


L'utilisation sera strictement personnel.

Voici le principe de fonctionnement:

Code : Tout sélectionner

* Un fichier texte contenant le listing de tous les fichiers
* Lancement du Downloader
* Lis le fichier Texte
* Télécharge les données à partir du TXT
* Possibilité de choisir l'endroit de réception des Données (Fichier config)
* Possibilité de Reprendre le DL
* Barre de Chargement
* Tray icon
 
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#2

Message par ZDS »

Hello,

J'ai réalisé un outil un peu similaire dans le domaine de Dofus, un module d'update pour un logiciel externe fonctionnant à base de modules "greffables" :
- Le logiciel va chercher un fichier XML de description, contenant les noms versions urls et MD5 des différents fichiers.
- On sélectionne les fichiers à récupérer (on peut comparer les versions).
- Le logiciel va chercher les archives zip et les décompresse après avoir valider l'archive grace au hash MD5.
- On valide l'opération.
- Le logiciel copie les nouveaux fichiers dans le répertoire voulu.

Je pense que tu peux t'en inspirer pour faire ton outil. De plus pour ton contexte, je pense qu'il n'y a aucun problème d'éthique, puisqu'il s'agit d'automatiser une installation et non faire un bot de jeu ^^ Je te laisse chercher sur Google pour trouver le script en lui même, le script étant dans le domaine des jeux et ayant des fonctionnalités à la limite des CGUs (acceptable pour Ankama et JoL, mais pas forcément pour le forum AutoIt), je ne pense pas être autorisé à poster de lien.

Si tu as un souci, poste ton code ici, et je serai ravi de te donner un coup de main.

A bientôt !
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
dexter74
Niveau 3
Niveau 3
Messages : 40
Enregistré le : sam. 06 févr. 2010 04:45
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#3

Message par dexter74 »

Pourrais tu poster ton code si tot plait.
Comme je l'est dit ta l'heure , mon but est de réaliser un downloader du jeux WoW , celui-ci est légale comme on peut le trouver sur le site officiel.


Si le site officiel permet de télécharger le jeux , alors mon projet est dans la Légalité .
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#4

Message par ZDS »

Ton projet à toi est peut-être 100% légal, le mien peut poser un dilemme un chouia éthique sur certains points : comme dit plus haut, il peut ne pas être considéré comme acceptable sur ce forum, le principe du nAiO (logiciel global contenant le module Update en question) étant à la limite des règles du forum AutoIt.

Je préfère te laisser le trouver par tes propres moyens. Mais si tu regarde bien, toutes les informations sont là pour le trouver sur son site d'origine.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
legend
Niveau 7
Niveau 7
Messages : 472
Enregistré le : dim. 26 sept. 2010 12:55
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#5

Message par legend »

Tout ce que t'a listé est possible avec les fonctions :
FileReadLine. (chaque partie dans une ligne qui facilite la tache)
utiliser les fonctions de l'udf IE.au3 et télécharger les fichiers avec IE et un Winsetstate @sw_hide.
FileGetSize sur le fichier entrain d'être téléchargé et la taille finale estimée ou un wingettext (recommandé) sur la fenêtre de téléchargement IE. (PS : IE = internet explorer)
Créer une gui et modifier la barre de téléchargement (je conseille une image avec taille modifiable pour l'avancement)
Filechangedir qui deplace le fichier vers la répertoire choisie par l'utilisateur.
* Possibilité de Reprendre le DL =>> Depend de l'hébergeur de fichiers et du navigateur (il faut faire des essais.)
Et pour le tray les commandes existent mais je les ai oublié :P
bonne journée
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#6

Message par ZDS »

Hello !

Depuis quand on passe par un navigateur pour traiter du contenu web depuis un programme? surtout par un navigateur comme IE? ^^
Bref, je ne suis pas d'accord du tout avec la façon de faire de Legend, je te conseille plutot d'utiliser les fonctions INet de base. Voici un exemple de script :

Code : Tout sélectionner

    ; Téléchargement du code source
    FileClose(FileOpen($destination,10))
    Local $flux = InetGet($urlSource, $destination,1,1), $size = 0
    Do
        Sleep(200)
        If $size = 0 Then
            $size = Number(InetGetInfo($flux,1))
        Else
            ; Affiche le pourcentage d'avancement du téléchargement
            Local $pourcentage = 100*InetGetInfo($flux,0)/$size
;~          setProgress($pourcentage,2,1)
        EndIf
    Until $FORCE_STOP Or $STOP Or InetGetInfo($flux, 2)
    Local $donnees = InetGetInfo($flux)
    InetClose($flux)
Les données reçues sont dans le fichier $destination, les données relatives au téléchargement (échec, état, code d'erreur) sont dans le tableau $donnees. la fonction setProgress($valeur, $decoupageMax,$decoupageIndex) me permet de modifier le remplissage d'une progressBar pendant le téléchargement.

Sinon, juste une remarque. Si tu as des données un tant soit peu structurée, utilise un fichier XML ou INI; avec des fonctions spécifiques comme $XML.SelectNodes/$XML.GetAttribute ou IniRead/IniWrite. Plutôt que de faire des FileRead et compagnie, avec des structures bancales et des séparateurs arbitraires.

Je te poste tout de même le code de mon module, ce dernier en fait n'a rien à voir avec le domaine des jeux, puisqu'il ne s'applique qu'au conteneur.

A bientôt !

PS: Il s'agit d'une version en cours de développement, il se peut qu'il présente des bugs, notamment à l'affichage de l'avancement dans la progressBar. Et pour que tu puisses le tester sans plantage majeur, il est accompagné de son icone et de la dll 7Zip (puisque les fichiers téléchargés sont des zip à décompresser).
Fichiers joints
Update.zip
Update (nAiO) v1.1.0.3DEV
(345.86 Kio) Téléchargé 141 fois
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
dexter74
Niveau 3
Niveau 3
Messages : 40
Enregistré le : sam. 06 févr. 2010 04:45
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#7

Message par dexter74 »

Je voudrais pas traiter du contenue web par un programme .

Ce que je désire:

Code : Tout sélectionner

Lire un txt sur un site qui aura dedans tous le listing des fichiers à télécharger (url compris)
Ensuite à partir de ce listing , lancer le téléchargement
Et pour finir choisir l'endroit ou il sera télécharger.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#8

Message par ZDS »

Bonjour,

"Lire un txt sur un site" c'est traiter du contenu web, lancer un téléchargement aussi ^^ Ce que je disais par là, c'est que tu n'as pas besoin qu'AutoIt lance Internet Explorer pour télécharger le fichier en faisant bouger la souris et en tapant à ta place au clavier; alors qu'un script AutoIt peut te le télécharger directement lui même avec les commandes INet, chose que fait mon script, inspires-t'en.

Je crois avoir compris que le fichier txt en question est un fichier en ligne, tu peux me donner son url pour pouvoir faire un essai de script? Et sinon, tu as la main sur le contenu de ce fichier txt? Si oui, ça serait sans doute plus simple de rester dans les données structurées pour être un peu polyvalent au cas où tu aies des modifs à faire, non?

Je voudrais aussi savoir si tu avais des exemples de fichiers en ligne (les archives en question) pour savoir exactement ce que tu souhaites, car là tu ne donnes pas assez de billes.

A bientôt !

EDIT: Choisir l'endroit est facile en comparaison du reste, dans ton script tu peux demander un répertoire de destination avec FileSelectFolder(titre, root, flag, start, hwnd) par exemple.
EDIT@Legend: A moins que je ne me trompe, dexter74 confirmera en fonction de ses besoins, il s'agit de lire un fichier txt disponible sur Internet, ou de télécharger des archives genre zip. Rien à voir avec HTML ou JS, juste de l'HTTP des plus simples (et encore, que du GET, non?). Donc je ne vois pas pourquoi passer par l'UDF d'un navigateur pour faire du web. C'est comme si tu voulais absolument utiliser MSN pour faire communiquer deux programmes en réseau : il y a plus simple que le rouleau compresseur pour écraser une mouche ^^
Et sinon, à moins que je ne me gourre, même si la fenêtre est invisible, utiliser l'UDF IE pour télécharger un fichier, ça nécessite d'avoir IE, et ça lance IE et bouffe des ressources.
Donc discrète peut être, mais efficace, j'en doute, surtout si en plus de ça on gère le cas où IE n'est pas là et qu'on tente avec l'UDF FF : Autant faire directement un téléchargement par une commande de base et s'abstraire complètement du navigateur qui est installé ou pas => "Les navigateurs, c'est pas automatique" ^^
Modifié en dernier par ZDS le jeu. 05 mai 2011 16:14, modifié 3 fois.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
legend
Niveau 7
Niveau 7
Messages : 472
Enregistré le : dim. 26 sept. 2010 12:55
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#9

Message par legend »

@ZDS : Tu a peut être oublié les fonctions de l'udf IE.au3 ou firefox qui sont discrètes (invisbile) et efficaces.
INet ne peut pas accéder au contenu d'une page web contrairement a ces 2udf.
C'est aussi efficace pour faire des commandes sur des objets de formulaire, des liens, des boutons et même des trucs en javascript (et non pas en html).
bonne journée a vous.
dexter74
Niveau 3
Niveau 3
Messages : 40
Enregistré le : sam. 06 févr. 2010 04:45
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#10

Message par dexter74 »

Bonjour,

Concernant le type de fichier que le "downloadeur" téléchargera sera varier. (*.MPQ , *.rar , *.exe .....)
Ensuite faudra savoir que les fichiers sont héberger chez Free.
Rien n'empêche pas de télécharger le fichier texte et de le lire ensuite.
URL DU TXT:

Code : Tout sélectionner

http://monsite.free.fr/wow/Listing.txt
Racine du site:

Code : Tout sélectionner

./  => (La Racine correspondra à http://monsite.free.fr/wow/ comme il se trouvera dans le répertoire wow)
Lister Fichier: Tlem

Listing.txt
Liste Des Fichiers (type URL)
(9.61 Kio) Téléchargé 91 fois
RecFileListToArray.au3
Include
(30.03 Kio) Téléchargé 96 fois
teste.au3
Script Listing
(245 Octets) Téléchargé 90 fois
overflow
Niveau 5
Niveau 5
Messages : 138
Enregistré le : sam. 05 déc. 2009 23:49
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#11

Message par overflow »

la solution a été donner au dessus deja ^^

bon dans l ordre :

Recuperation du listing

Code : Tout sélectionner

inetget("url_du_listing",@scriptdir &"\list.txt")
 
Au faite enlève les "." en debut de ligne

quand tu a ton fichier tu fait un _filereadtoarray comme sa tu a un tabelau avec chaque nom de fichier
et en place zero du tableau tu a le nombre de fichier a down

apres et bien tu applique le code de down donné plus haut

ZDS a écrit :

Code : Tout sélectionner

    ; Téléchargement du code source

   $flux = InetGet($urlSource, $destination,1,1), $size = 0
    Do
        Sleep(200)
        If $size = 0 Then
            $size = Number(InetGetInfo($flux,1))
        Else
            ; Affiche le pourcentage d'avancement du téléchargement
            Local $pourcentage = 100*InetGetInfo($flux,0)/$size
;~          setProgress($pourcentage,2,1)
        EndIf
    Until $FORCE_STOP Or $STOP Or InetGetInfo($flux, 2)
    Local $donnees = InetGetInfo($flux)
    InetClose($flux)
Avec une boucle for/next tu vas recup le nom du fichier dans le tableau
pour changer l url de telechargement
un petit stringsplit($url,"/") pour recup le nom de destination
et voila c est torché ^^

j ai pas tester mais ca doit ressembler a ca :

Code : Tout sélectionner

Dim $Malist
Global $racine="http://monsite.free.fr/wow/"
InetGet("http://monsite.free.fr/wow/Listing.txt", @ScriptDir & "\list.txt")

_FileReadToArray(@ScriptDir & "\list.txt",$Malist)

For $x=1 to $Malist[0]
    $name=StringSplit($Malist[$x],"/")
    $name=$name[$name[0]]
    $flux = InetGet($racine & $Malist[$x], @ScriptDir & "\" & $name,1,1)
    $size = 0
    Do
        Sleep(200)
        If $size = 0 Then
            $size = Number(InetGetInfo($flux,1))
        Else
            ; Affiche le pourcentage d'avancement du téléchargement
            Local $pourcentage = 100*InetGetInfo($flux,0)/$size
;~          setProgress($pourcentage,2,1)
        EndIf
    Until $FORCE_STOP Or $STOP Or InetGetInfo($flux, 2)
    Local $donnees = InetGetInfo($flux)
    InetClose($flux)
Next
 
dexter74
Niveau 3
Niveau 3
Messages : 40
Enregistré le : sam. 06 févr. 2010 04:45
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#12

Message par dexter74 »

Bonjour,

URL de Pour tester: (TXT contient une ligne vers un rar)
http://disciplesdelahorde.free.fr/wow/jeux/list.txt


Voici donc le code après modification:

Code : Tout sélectionner

 Dim $Malist
Global $racine="http://disciplesdelahorde.free.fr/wow/"
InetGet("http://disciplesdelahorde.free.fr/wow/jeux/list.txt", @ScriptDir & "\list.txt")

_FileReadToArray(@ScriptDir & "\list.txt",$Malist)

For $x=1 to $Malist[0]
    $name=StringSplit($Malist[$x],"/")
    $name=$name[$name[0]]
    $flux = InetGet($racine & $Malist[$x], @ScriptDir & "\" & $name,1,1)
    $size = 0
    Do
        Sleep(200)
        If $size = 0 Then
            $size = Number(InetGetInfo($flux,1))
        Else
            ; Affiche le pourcentage d'avancement du téléchargement
            Local $pourcentage = 100*InetGetInfo($flux,0)/$size
;~          setProgress($pourcentage,2,1)
        EndIf
    Until $FORCE_STOP Or $STOP Or InetGetInfo($flux, 2)
    Local $donnees = InetGetInfo($flux)
    InetClose($flux)
Next
 


Code Erreur:

Code : Tout sélectionner

Line 5: (File "teste.au3"):
_FileReadToArray(@ScriptDir & "\list.txt,$Malist)
^Error
Error: Unknown function name
 

Depuis l’éditeur de script Autoit:

Code : Tout sélectionner

_FileReadToArray(@ScriptDir & "\list.txt",$Malist)
^ ERROR

-----------------------------------------




Se Serai possible avec :
* Barre de chargement qui affichera la progression
* Vitesse de téléchargement
overflow
Niveau 5
Niveau 5
Messages : 138
Enregistré le : sam. 05 déc. 2009 23:49
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#13

Message par overflow »

Heu comment dire tu en fait un minimum quand même stp ??

c est des commandes en bleu claire donc ? . . .
sinon l aide d autoit sur cette fonction contient la réponse
Avatar du membre
legend
Niveau 7
Niveau 7
Messages : 472
Enregistré le : dim. 26 sept. 2010 12:55
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#14

Message par legend »

Tout simplement il manque une ligne au début qui est :
#include <File.au3>
met la ligne sur la fonction et clic sur F1.
sinon tu peut rien apprendre si les gens te donnent toujours la solution.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Besoin d'aide pour Réaliser un Downloader

#15

Message par ZDS »

Bonjour !

@Legend / overflow : #sinon tu peut rien apprendre si les gens te donnent toujours la solution.# => Personnellement, si quelqu'un demande de l'aide dans "Demande de création de Scripts", je vais pas lui donner des leçons d'AutoIt, libre à toi/vous de l'aider en créant un script de bout en bout, ou pas. C'est pas comme si il postait dans la section "Aide générale", où toute remarque concernant l'apprentissage de l'AutoIt est la bienvenue ^^

@dexter74 : Si tu veux d'ailleurs qu'on puisse avancer pour le coté algo, ton lien vers le fichier txt n'est plus bon, remets le en place si possible. Voici quand même un petit dépannage pour la récup :
► Afficher le texteScript
A bientôt !
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Répondre