[R] Double barre téléchargement

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

[R] Double barre téléchargement

#1

Message par Sea »

Bonjour je fais acutellement un système qui télécharge automatiquement des new.Cependant j'aimerais avoir 2 progressbar: la 1ere indiquant la progression du téléchargement actuel et la seconde l'état de téléchargement total.

Pour cela j'ai donc fais ceci
► Afficher le texte
En gros dans la boucle for qui parcours chaque fichier je recup et j'addition a mon total, la taille du précédent , puis je le converti en pourcentage.
Apres dans la boucle do(ce fini quand le téléchargement est fini) j'update la progress bar en faisais la valeur des pourcentage déjà effectuer + la valeur du pourcentage du téléchargement courant. Logiquement a la fin du dl la taille téléchargé équivaut à la taille retourné par InetGetSize.
La boucle recommence dans le for n'ayant pas changer la valeur de ma variable de stockage de InetGetSize je l'additionne à mon total etc....
Cependant la barre représentant le total arrive avant celle du dessus ce qui n'est pas normal ^^'

PS: je me suis dis que j'indiquais peut être une mauvaise taille dans le ini mais voici ce que j'utilise pour déterminer la taille
► Afficher le texte
Merci d'avance pour votre aide car la je ne comprend pas pourquoi j'ai ce petit problème :/
Modifié en dernier par Sea le lun. 03 sept. 2012 14:38, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Double barre téléchargement

#2

Message par Tlem »

Vous vous compliquez bien la tâche !!!

Puisque vous connaissez le nombre de fichier dès le départ, utilisez la barre de progression totale sur le nombre de fichier et non sur une taille totale que vous ne connaissez pas d'entrée de jeu. :mrgreen:
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é".
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Double barre téléchargement

#3

Message par Sea »

Mais si je le fais ainsi la barre total sera sur le nombre de fichier et non sur la taille pour prendre un exemple j'ai des fichiers de quelques ko dans mes maj et des fichiers de plusieurs centaines de mb des fois ^^'

De plus je connais la taille total car les fichiers sont sur mon serveur. Comme je le dis j'ai fais le script du dessous pour connaitre la taille d'un répertoire. Après je n'ai plus qu'a le mettre dans mon ini dans "taille" => Local $s_ReleaseTaille = IniRead($s_DatFile_Local, 'INI', 'taille', 'Erreur de lecture')
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Double barre téléchargement

#4

Message par mikell »

Si pour la progressbar 1 tu fais le % téléchargé/total pour chaque fichier successivement, alors pour la 2 tu peux concaténer ces quantités téléchargées pour calculer le % avec la taille de l'ensemble des fichiers
Regarde la fonction InetGetX de matwachich, elle est super-bien faite et te renvoie dans une petite fonction Callback() toutes les infos dont tu as besoin
Un exemple assez complet ici
http://www.autoitscript.fr/forum/viewto ... 806#p68806
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Double barre téléchargement

#5

Message par Sea »

Je n'ai pas compris la réelle différence qu'il a avec mon script.
le seul changement que j'ai vu c'est qu'au lieu d'avoir la taille par InetGetSize ça sera les donnés reçu par les socket?
Sh4dows
Status : Hors ligne

Re: [..] Double barre téléchargement

#6

Message par Sh4dows »

Serait il possible d'avoir les fichiers INI avec des valeurs par défaut de manière à effectuer quelques tests ?
Sinon j'ai du mal a comprendre ton premier calcul :

Code : Tout sélectionner

$_perc_total = Round ( ( 100 * $_FileSize ) / $s_ReleaseTaille )
 
Peut importe la valeur de $s_ReleaseTaille tu obtiendra toujours 0 puisque 0/(x>0) = 0 !!!
Autant faire :

Code : Tout sélectionner

$_perc_total =0
 
J'en déduis donc que tes calculs sont faux :lol: Cependant, j'ai commencé à faire une analyse commenté de ton code, mais sans les INI cela devient un peu plus complexe et je ne peux pas poursuivre.
Mon code -> http://pastebin.com/E6m7quiK

Je te conseil de le coller dans un éditeur de code il sera bien plus que lisible :wink:

Sh4dows,
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Double barre téléchargement

#7

Message par Tlem »

Sh4dows a écrit :Sinon j'ai du mal a comprendre ton premier calcul :

Code : Tout sélectionner

$_perc_total = Round ( ( 100 * $_FileSize ) / $s_ReleaseTaille )
 
Peut importe la valeur de $s_ReleaseTaille tu obtiendra toujours 0 puisque 0/(x>0) = 0 !!!
:shock:
Comment un nombre entier > 0 multiplié par 100 (100 * $FileSize) peut-il être égal à zéro ?
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é".
Sh4dows
Status : Hors ligne

Re: [..] Double barre téléchargement

#8

Message par Sh4dows »

@Tlem en regardant son code vous auriez remarqué que $FileSize valait aussi 0 :roll:
Première ligne :

Code : Tout sélectionner

Local $size = 0 ,$_FileSize = 0
 
Donc un nombre entier 0 multiplié par 100 donne bien 0 chez moi :P Ensuite la division est complètement inutile derrière puisque le résultat restera la même !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Double barre téléchargement

#9

Message par mikell »

Initialisation de variable :roll:

Code : Tout sélectionner

$_FileSize = 0
...
For $i = 0 to $s_ReleaseNum
    $_perc_total = Round ( ( 100 * $_FileSize ) / $s_ReleaseTaille )
    ...
    $_FileSize = InetGetSize($s_ReleaseAdr&$s_ReleaseFile)
    ...
Next
Modifié en dernier par mikell le sam. 14 juil. 2012 10:22, modifié 1 fois.
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Sh4dows
Status : Hors ligne

Re: [..] Double barre téléchargement

#10

Message par Sh4dows »

mikell a écrit ::roll:

Code : Tout sélectionner

$_FileSize = 0
...
For $i = 0 to $s_ReleaseNum
    $_perc_total = Round ( ( 100 * $_FileSize ) / $s_ReleaseTaille )
    ...
    $_FileSize = InetGetSize($s_ReleaseAdr&$s_ReleaseFile)
    ...
Next
+1 :lol:
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Double barre téléchargement

#11

Message par mikell »

T'as vraiment du mal avec les boucles For toi...

Code : Tout sélectionner

$_FileSize = 0
For $i = 1 to 5
    $_perc_total = Round ( ( 100 * $_FileSize ) / 1000 )
    $_FileSize += $i*100
    Msgbox(0,"", $_perc_total)
Next
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Sh4dows
Status : Hors ligne

Re: [..] Double barre téléchargement

#12

Message par Sh4dows »

Qui ? moi ? du mal avec les boucles for ?
J'ai compris :roll: Je retourne me couché ça vaut mieux :lol:
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Double barre téléchargement

#13

Message par Sea »

Désolé pour le retard voici la structure de mon ini(pour avoir la taille j'utilise le script que j'ai donné au dessus dans le 1er post, de plus j'ai essayé de mettre la taille cumulé des truc téléchargé retourné par inetgetsize et toujours le même problème :/)

Code : Tout sélectionner

[INI]
nb_file=2
taille=1000
adresse=http://monsite.com/monRépertoire/maMaj/
new_ini=http://monsite.com/monRépertoire/maMaj/Version.ini
file1=1.txt
real_name1=#onB}Z+yYKddN
file2=2.txt
real_name2=%.UWaee!Zyeo`AE5.$a!!k
 
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Double barre téléchargement

#14

Message par Sea »

up....

Si vous avez besoin de plus d'information dites le moi ^^'
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Double barre téléchargement

#15

Message par Sea »

Up...

Je pense recoder tout le système donc si vous pouvez me donner un exemple pour faire ceci( de préférence sans ini en gros en allant sur l'index récupéré le nombre de fichier dans le dossier et faire un InetFileGetSize sur chaque fichier. Je pense que c'est possible donc mon problème c'est bien de faire 2 barre de téléchargement)
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Double barre téléchargement

#16

Message par blacksoul305 »

Bonsoir, je propose une idée :

si vous connaissez exactement la taille des fichiers à télécharger, car comme vous l'avez dit, ils 'agit de votre serveur. Pourquoi ne pas envoyer tout simplement une requête au serveur qui dans ce cas là, renverrait la taille total des fichiers.

Le calcul du pourcentage devrait s'effectuer sans encombres, j'me trompe ?
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Double barre téléchargement

#17

Message par mikell »

Au risque de paraître lourd je redis que la fonction InetGetX de matwachich est un excellent plan, dans la mesure où elle fournit toutes les données nécessaires et surtout permet une interruption/reprise du (des) téléchargement(s)
Exemple complet avec les 2 progressbar :
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Double barre téléchargement

#18

Message par Sea »

@Mikell => Au risque de paraître lourd
Mikell exactement ce que je voulais donc je t'en voudrais pas d'être un gros chat :P
blacksoul305 a écrit : si vous connaissez exactement la taille des fichiers à télécharger, car comme vous l'avez dit, ils 'agit de votre serveur. Pourquoi ne pas envoyer tout simplement une requête au serveur qui dans ce cas là, renverrait la taille total des fichiers.
Il s'agit d'un serveur Xamp donc à ce que je sache il n'existe pas de requête comme ceci par contre ce que je peux faire c'est un script php qui va me retourné la taille à téléchargé puis je récup cette valeur avec un _inetgetsource
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Double barre téléchargement

#19

Message par blacksoul305 »

Oui, enfin je pensais à une fonction personnalisée que vous auriez au préalablement créé qui retournerait la taille totale. Mais vous avez trouvé votre solution donc c'est parfait !

Bonne continuation !
Étudiant en 2ème année de Licence Informatique.
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] Double barre téléchargement

#20

Message par Sea »

Par contre j'ai une petite question je vois que celui-ci supporte l’arrêt et le redémarrage du téléchargement.Ce basant sur le nombre de byte contenu en local.

Mais prenons cette exemple.
Contenu MAJ 1 =>
sur le serveur => 1.txt a téléchargé en local => 1.txt
sur le serveur => 2.txt a téléchargé en local => 2.txt
Contenu MAJ 2 =>
sur le serveur => 1.txt a téléchargé en local => 1.txt
sur le serveur => 2.txt a téléchargé en local => 2.txt

Que va t'il ce passé dans le cas ou les fichiers locaux ont les mêmes noms et destination?
Comment le script détecte que c'est bien les deux mêmes fichiers?
Pour cela je pense ajouter une fonction MD5 a l'udf
(j'ai un script php qui me donne le nombre de fichier/le hash md5 de chaque fichier/ la taille de chaque fichier/ le total de la taille / le nombre total de fichier)

► Afficher le texteCodé en 3min a 1h du mat donc possibilité de non optimisation >.<
Répondre