[..] Creation d'une GUI pour speedtest

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Utilisateur 3309 supprimé
Status : Hors ligne

[..] Creation d'une GUI pour speedtest

#1

Message par Utilisateur 3309 supprimé »

Bonjour,

tout le monde connaît Speedtest.net qui permet de vérifier les performance de sa ligne internet.
Le test se fait depuis un navigateur web + Flash.

Il existe un exécutable en ligne de commande qui permet de faire le test, il est disponible ici:
https://github.com/zpeters/speedtest

J'ai donc décidé d'utiliser autoit pour piloter cet exécutable et d'afficher le résultat dans une GUI.

tout d'abord j'ai récupéré la liste des serveurs avec la commande:

Code : Tout sélectionner

speedtest.exe -l >servers.txt
Puis j'ai supprimé tous les serveurs inutiles, et conservé que les français. J'ai ensuite bidouillé le fichier txt pour l'adapter à mes besoins.

Voici le résultat:
Image

Vous pouvez récupérer l'ensemble des fichiers ici:
http://liveboxinfo.tk/download/speedtest-gui.zip
► Afficher le texte
Donc voici ma question:
y a t'il moyen de se passer de l'exécutable de zpeters et de tout intégrer dans autoit ? avec winhttprequest par exemple ? si oui comment faire ? je ne sais pas comment le test fonctionne...ou les données sont téléchargées et ou elles sont uploadées etc...

Merci pour votre aide. :D
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#2

Message par walkson »

Bonjour,
Je viens de tester speedtest et cela me donne des idées pour vous répondre.
J'avais utilisé Inetget() pour récupérer un exécutable et ça marche bien. Le seul inconvénient est que si vous mettez l'adresse du site et qu'il y a une nouvelle version, ça ne marche plus.
Après, vous pouvez mettre l'exécutable sur votre site, c'est une solution.
Enfin, il y a la solution d'écrire l'exécutable en binaire et de le mettre sous forme de fonction afin de le redéployer. Il y a BinaryToAu3Kompressor de wakillon (forum US) qui fait trés bien celà. Sous forme Au3, le script pèse 1,85 Mo pour 5,62 Mo pour l'exécutable. Si vous le souhaitez, je peux mettre le script sur le forum.
Si je peux me permettre une remarque, j'ai été étonné que vous passiez par des TXT pour récupérer les retours de speedtest.
Ça ne serait pas plus simple d'utiliser StdoutRead() comme ceci
► Afficher le texte

Dans le cas présent, je récupère tous les serveurs, ce qui me permet de faire le trie pour choisir un pays.
Une dernière remarque, je ne sais pas si c'est mon PC qui est lent (ou la connexion) mais attendre sans savoir si le programme a beuguer, c'est long. Un petit progressbar ou autre ferait du bien pour patienter (enfin, c'est mon avis perso)
[Edit]
J'oubliais, votre script beugue quand un serveur n'est pas disponible ou quand la connexion est impossible au niveau de

Code : Tout sélectionner

 $result = "Serveur : " & $sSelection & @CRLF & _
                      "Ping : " & $aPing[0] & @CRLF & _
                      "Download : " & $aDownload[0] & @CRLF & _
                      "Upload : " & $aUpload[0] & "Mbps"

Autoit ne trouve pas d'array (normal!)
Il faudrait la condition If IsArray ( variable ) = 1 Then ... avant ces lignes pour résoudre le problème
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Utilisateur 3309 supprimé
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#3

Message par Utilisateur 3309 supprimé »

Bonjour,
merci pour vos réponses.
intégrer l'exécutable speedtest.exe dans le script pourrait être une solution mais ca ne me plait pas trop, car on ne comprends toujours pas ce qu'il fait.
Pour le passage par un fichier TXT effectivement j'ai fait au mieux de mes connaissances, je ne savais pas qu'on pouvait faire de cette façon pour récupérer le retour...Merci pour l'info :wink:

OK pour le isarray() à ajouter :wink:
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#4

Message par walkson »

cetipabo a écrit :intégrer l'exécutable speedtest.exe dans le script pourrait être une solution mais ca ne me plait pas trop, car on ne comprends toujours pas ce qu'il fait.
Pourquoi ? Vous déclarer la fonction _Speedtestexe ( "speedtest.exe", @TempDir & "\", 0 ), Speedtest.exe est créé dans (Par exemple) un dossier Temp et puis reste à appeler l'exécutable.
Le réel inconvénient est de surcharger le script
[Petit edit]
"Une actuce"

Code : Tout sélectionner

            $chemin = @ScriptDir & '\speedtest.exe -l'
            $ecoute = run( $chemin, @WorkingDir, @SW_HIDE, $STDOUT_CHILD)
Fonctionne parce que le chemin est intégré dans la variable $chemin Autrement Ke néni ! @ScriptDir & '\speedtest.exe en direct ! passez votre chemin
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Utilisateur 3309 supprimé
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#5

Message par Utilisateur 3309 supprimé »

j'ai bien compris, mais ce que je souhaite faire c'est la même chose que fait cet exécutable, avec winhttprequest par exemple, mais pas l'intégrer. Du 100% autoit quoi...
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#6

Message par walkson »

Bonjour,
J'ai du mal à vous suivre !
Pour faire du 100% autoit, il faudrait réécrire speedtest en autoit. En ce qui concerne winhttprequest, vous téléchargez l'exécutable comme peut le faire Inetget(), selon mes humbles connaissances...
Après, lancer l'exécutable directement de son site, il me semble totalement impossible à faire.
Donc je ne vois que 3 solutions, ou télécharger speedtest, ou faire le test sur une page d'un site et récupérer les données, ou incorporer l'exécutable dans le script sous forme binaire, à moins qu'un expert ne vienne me contredire...
La forme la plus indépendante de votre programme serait la dernière solution. A titre d'exemple, dans votre Zip, il y a une icone "Speedtest.ico". Il serait tout à fait possible de l'introduire dans le script sous forme binaire afin de l'utiliser au lancement de votre programme. Ce qui ferait un pièce jointe en moins.
Il y a aussi la solution de FileInstall () mais je ne l'utilise plus car il y a des problèmes de faux positifs avec les antivirus
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Utilisateur 3309 supprimé
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#7

Message par Utilisateur 3309 supprimé »

On ne se comprend pas.
l'application de Zpeters fait en ligne de commande la même chose que l'on fait sur le site web : speedtest.net en flash.
il se connecte sur les serveurs de OOKLA et utilise leur protocole pour envoyer des données et en recevoir afin d'établir une valeur de download/upload/ping.
C'est ca que je voudrais faire en 100% autoit, s'il le fait en langage GO on devrait pouvoir le faire en autoit, il suffit de comprendre comment fonctionne le protocol de speedtest.net.

Déja pour récupérer la liste des serveurs on se connecte sur cette page:
http://www.speedtest.net/speedtest-servers.php
c'est ce que fait l'appli de zpeters lorsqu'on fait un speedtest.exe -l

Et après ce qu'il reste a savoir c'est quelles sont les variables POST ou GET ou cookies à envoyer au serveur pour initier un test. je ne pense pas qu'on puisse le faire facilement avec inetget, par contre avec winhttprequest oui.

intégrer un exécutable qui fait le boulot dans mon code autoit ne m'interesse pas, ce n'est pas du tout ce que je cherche a faire. :wink:

Si Zpeters et sivel y arrivent, respectivement en GO et en Python, on devrait y arriver aussi en autoit.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#8

Message par walkson »

Re,
Vous l'aviez vu https://www.autoitscript.com/forum/topi ... tinfo-udf/ ?
Je l'ai testé rapidement et j'ai eu un problème avec $My_Location = _NetInfo_GetIPLocation() qui n'est pas reconnu comme array. Le reste a fonctionné.
J'ai regardé aussi les scripts de Zpeters et sivel. Il semble qu'ils utilisent https://www.speedtest.net/speedtest-config.php et https://www.speedtest.net/speedtest-servers-static.php qui renvoie les adresses des serveurs.
Tous les serveurs semblent être configurés à l'identique comme ceci http://speedtest.oltv.ru/speedtest/
Voilà, si ça peut vous être utile...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#9

Message par jguinch »

Oui, il suffit de prendre le code source et jeter un oeil :wink:
Il y a un intéressant sur Speedtest : https://support.speedtest.net/hc/en-us/ ... alculated-

@cetipabo : j'aimerais bien connaître la finalité de ton script... Il est censé remplacer les outils existants ?
Si c'est juste pour un test approximatif, c'est plutôt simple. Si tu peux faire un truc assez chiadé, ça va être un poil plus compliqué.

D'après ce que j'ai vu, le script Zpeters passe par les étapes suivantes :
- téléchargement de la liste des serveurs
- calcul du serveur le plus proche (par coordonnées géographiques)
- calcul du serveur le plus rapide
- envoi des requêtes GET pour téléchargement d'un fichier .jpg aléatoire puis calcul du temps de réponse
- calcul du temps de réponse moyen en download à partir des temps de réponse précédents
- envoi des requêtes POST pour upload via le formulaire (je n'ai pas compris ce qui est envoyé :? )
- calcul du temps de réponse moyen en upload à partir des temps de réponse précédents
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Utilisateur 3309 supprimé
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#10

Message par Utilisateur 3309 supprimé »

ha!!! merci beaucoup ! c'est exactement ce que je voulais, donc quelqu'un a déjà fait ce que je voulais faire :lol: :lol:
Utilisateur 3309 supprimé
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#11

Message par Utilisateur 3309 supprimé »

@Jguinch
le but c'est juste de faire le test speedtest tel qu'on le ferait si on allait sur leur site, mais sans y aller :lol: donc conserver leur méthode de calcul pour que les résultats soient cohérents.
c'est aussi pour m'exercer à l'utilisation de winhttprequest que vous m'avez fait découvrir dans l'utilitaire LiveBoxinfo. :wink:
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#12

Message par mikell »

Tu pourrais jeter un coup d'oeil à la version 'light' de speedtest.net http://speedtest.api-digital.com/
Même moteur, mêmes serveurs, même protocole, mais avec Firebug on y voit beaucoup mieux :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Utilisateur 3309 supprimé
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#13

Message par Utilisateur 3309 supprimé »

merci mikell !
encore mieux !! :wink:
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#14

Message par mikell »

Juste pour le concept j'ai bricolé ça pour voir
► Afficher le texte
c'est simplissime, le script prend le plus performant parmi les serveurs speedtest français et fait un upload et un download
Les valeurs obtenues sont un peu inférieures à celles de speedtest mais j'imagine que leurs machines n'ont rien à voir avec les notres (et sont dédiées) :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#15

Message par jguinch »

Sympa ton script mikell :wink:
J'ai trouvé que ta regex mettait du temps à s'exécuter, j'ai pas compris pourquoi...

Ci-dessous un code qui permet la géo-localisation en fonction de l'adresse IP publique (en se basant sur ip-api.com), afin de déterminer quel est le serveur le plus proche. Je ne sais pas s'il y a un intérêt, mais c'est quelque chose qui est effectué sur SpeedTest.
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#16

Message par mikell »

Pour le regex c'est vrai que c'est un peu long... c'est peut-être que le fichier fait 940 Ko et contient 3857 serveurs ?
Sinon je n'ai pas fait la géo-localisation parce que de toute façon speedtest teste ensuite le ping sur les serveurs les plus proches, donc je suis allé au plus court :roll:
En fait j'ai essayé de faire le plus rapide possible. Le script avec l'exe de cetipabo, chez moi il met environ 4 minutes à s'exécuter... j'imagine que si un utilisateur fait du speedtest sans arrêt c'est que c'est un obsédé de la vitesse, et là 4 minutes ça va vite le faire ch*er :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#17

Message par jguinch »

Ce que je voulais dire, c'est que ta regex est anormalement longue (j'avais mis un timer pour voir combien de temps ça met). Je l'ai testé sur regex101 et j'ai l'erreur Catastrophic backtracking. Je sais pas pourquoi...
https://regex101.com/r/tZ7zG8/1
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#18

Message par mikell »

Je crois que j'ai compris, c'est une histoire de backtracking

Code : Tout sélectionner

$a = StringRegExp($txt, '(?><server url="([^"]+))(?>.*?name="([^"]+))(?>.*?cc="FR" sponsor="([^"]+))', 3)
 
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#19

Message par jchd »

C'est bien de l'avoir enregistré car je n'utilise pas de LB.
Un simple U dans les options cicatrise l'hémorragie. Après je ne sais pas si le résultat est celui attendu, mais c'est l'idée et là je n'ai pas le temps de creuser plus.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Creation d'une GUI pour speedtest

#20

Message par mikell »

Je ne comprends pas l'utilisation de (?U) dans ce cas vu que les seuls quantifiers greedy dans l'expression initiale étaient sur des classes, donc restrictifs
C'est confirmé par regex101 (même si les groupes atomiques font encore 1/3 d'étapes en moins) en revanche dans le script le résultat est inattendu :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre