Page 1 sur 1

[R] Télécharger sur sourceforge et concaténation

Posté : mar. 21 août 2012 11:52
par foozoor
A priori il ne serait pas possible avec InetGet de télécharger directement sur sourceforge. :?
Est-ce réellement le cas, y a-t-il une alternative ?

J'ai eu un petit problème de 'concaténation' avec mes paramètres :

Code : Tout sélectionner

Const $installDir = @ProgramFilesDir & "\HTPC"
$mpcInstall = $installDir & "\MPC-HC"
$mpcParams = '/verysilent /dir=' & '"' & $mpcInstall & '"'
MsgBox(0, "Paramètres d'installation", $mpcParams)
Est-ce la bonne solution pour entourer une variable de guillemet ?
Cela me semble un peu tiré par les cheveux, mais cela a l'air de marcher. :wink:

Merci d'avance !

Re: [..] Télécharger sur sourceforge et concaténation

Posté : mar. 21 août 2012 12:16
par jbnh
Je ne comprend pas trop votre question :)

Certes, vous pouvez remplacer la troisième ligne par :

Code : Tout sélectionner

$mpcParams = '/verysilent /dir="' & $mpcInstall & '"'
mais comme vous dites votre solution marche.

Re: [..] Télécharger sur sourceforge et concaténation

Posté : mar. 21 août 2012 13:59
par mikell
Et ceci suffirait (vaut mieux mettre "\" après le nom de dossier)

Code : Tout sélectionner

$mpcInstall = @ProgramFilesDir & "\HTPC\MPC-HC\"

Re: [..] Télécharger sur sourceforge et concaténation

Posté : mar. 21 août 2012 14:52
par foozoor
Je voulais savoir si c'était bien la bonne solution, je me suis mis à AutoIt depuis hier et je n'ai jamais programmé.
En gros je viens de voir la concaténation :shock: , mais comme elle est différente pour chaque langage... :?
J'ai lu aussi des trucs sur l'échappement, mais je ne sais absolument pas comment faire avec AutoIt.

Sinon personne ne connaîtrait une UDF pour télécharger sur sourceforge à partir de ce type d'url ?

Code : Tout sélectionner

$mpcUrl = "http://sourceforge.net/projects/mpc-hc/files/latest/download?source=files"
En fait, c'est l'url permanente pour télécharger la dernière version d'un logiciel (ici mpc-hc).
Le problème étant qu'il y a une sorte de sécurité, je suppose pour ne pas surcharger les serveurs. :?
Le lien renvoi vers une page d'attende (5s) qui renvoie vers le téléchargement du logiciel.


J'ai réduit mon code au strict minimum, la MsgBox me sert pour faire du debug.
J'ai une constante, car je vais installer plusieurs logiciels dans @ProgramFilesDir & "\HTPC

Comme ça, c'est plus facile de changer une ligne que plusieurs. :wink:
Je compte faire un GUI avec le choix de cette constante par l'utilisateur, mais c'est pas pour tout de suite. :roll:

Re: [..] Télécharger sur sourceforge et concaténation

Posté : mar. 21 août 2012 15:01
par timmalos
Pour faire ca legalement, vous devez utiliser l'udf IE.au3, vous tourvez du coté de _IECreate, _IENavigate et _IELoadWait. Un paramètre de _IECreate permet de faire ceci en arrière plan, vous ne verrez donc pas la difference ;)

Re: [..] Télécharger sur sourceforge et concaténation

Posté : mar. 21 août 2012 15:56
par foozoor
Arg ! Je voulais éviter de passer par IE, car certaines personnes dont moi-même l'ont viré complètement de Windows.

En quoi est-ce illégal de ne pas passer par un navigateur ?

Re: [..] Télécharger sur sourceforge et concaténation

Posté : mar. 21 août 2012 17:31
par Sea
Pour téléchargé tu dois avoir le lien DIRECT de l'exécutable la ou il est sur le serveur(pour l'obtenir fais click droit sur "direct link" et fais "Copier l'adresse du lien")

Ainsi par exemple pour mpc-hc l'url sera =>

Code : Tout sélectionner

$mpcUrl = http://downloads.sourceforge.net/project/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.6.3.5818_x86/MPC-HC.1.6.3.5818.x86.exe?r=&ts=1345562725&use_mirror=freefr
 
et ça marche parfaitement ;)

Re: [..] Télécharger sur sourceforge et concaténation

Posté : mar. 21 août 2012 21:15
par mikell
Et pour que ça marche aussi pour les futures versions ça sera
► Afficher le texte
:wink:

Re: [..] Télécharger sur sourceforge et concaténation

Posté : mer. 22 août 2012 08:29
par foozoor
C'est juste incroyable je n'aurais jamais pu pondre un code de ce type !
J'ai reconnu les expressions régulières, ce n'est pas très "parlant" comme concept, mais c'est surpuissant ! :shock:

Il va me falloir quelques cafés pour comprendre en détails les traitements effectués et plus particulièrement StringRegExpReplace et BinaryToString !
J'ai déjà vu "$1" dans des fichiers .htaccess sans savoir à quoi cela pouvait correspondre.

Re: [R] Télécharger sur sourceforge et concaténation

Posté : mer. 22 août 2012 12:17
par mikell
Explications

Code : Tout sélectionner

StringRegExpReplace($txt, '(?s).+http://downloads(.*?)\?r=.+', "$1")
(?s) : indique au moteur regex que le texte contient des blancs et des renvois à la ligne
.+ : n'importe quel caractère plusieurs fois, correspondance la plus longue
(.*?) : n'importe quel caractère plusieurs fois, correspondance la plus courte grâce au ?, entre parenthèses => groupe à enregistrer
http://downloads et ?r= : strings qui servent de repères (on met un \ avant le ? parce que le ? est un caractère spécial)
$1 : variable qui représente le groupe enregistré

Code : Tout sélectionner

StringRegExpReplace($fileUrl, '.+/(.*?)', "$1")
"fais un groupe avec ce qui se trouve après le dernier / et remplace toute la chaîne par juste ce groupe"

Pour le reste voir le fichier d'aide pour InetRead :wink:

Re: [R] Télécharger sur sourceforge et concaténation

Posté : mer. 22 août 2012 18:27
par foozoor
J'essaye de comprendre comment on peut transformer ça :

Code : Tout sélectionner

"http://sourceforge.net/projects/mpc-hc/files/latest/download?source=files"
En ceci :

Code : Tout sélectionner

"http://downloads.sourceforge.net/project/mpc-hc/MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.6.3.5818_x86/MPC-HC.1.6.3.5818.x86.exe?r=&ts=1345562725&use_mirror=freefr"
Cette chaîne est commune aux 2 chaînes et je suppose qu'elle est stockée :

Code : Tout sélectionner

".sourceforge.net/project/mpc-hc/"
Et on fait précéder cette chaîne de "http://downloads".

Mais par quelle sorcellerie :shock: arrive-t-on à récupérer ça (avec InetRead ?):

Code : Tout sélectionner

"MPC%20HomeCinema%20-%20Win32/MPC-HC_v1.6.3.5818_x86/MPC-HC.1.6.3.5818.x86.exe?r=&ts=1345562725&use_mirror=freefr"
Je ne comprends pas trop la différence entre InetGet et InetRead... :?
Je vais un peu "étudié" car là, ça demande plus que de la logique, faut connaitre les paterns, ect..
J'ai fait le tuto du siteduzero (pas la partie GUI), mais c'est un peu limité.
Quelles lectures (fr et en) me conseilleriez-vous pour en apprendre plus sur AutoIt ?

Merci d'avance !

Re: [R] Télécharger sur sourceforge et concaténation

Posté : mer. 22 août 2012 23:32
par mikell
foozoor a écrit :Quelles lectures (fr et en) me conseilleriez-vous pour en apprendre plus sur AutoIt ?
Sans hésitation : les exemples du fichier d'aide + les forums (avec leurs systèmes de recherche et leurs chats oranges)
Y a aussi ce lien à conserver précieusement : http://www.autoitscript.com/wiki/Tutorials

Sinon pour mon code, le principe : on lit le code de la page (InetRead), on le traite pour piquer dedans les infos qu'on veut (les Regexp de mon post précédent) , on utilise ces infos pour reconstruire une url fonctionnelle, et on télécharge sur cette url (InetGet)
Dans ton cas, le but est
1) de trouver un moyen d'avoir la bonne adresse, même si le numéro de version change
2) de transformer cette adresse qui ne marche pas avec InetGet

Code : Tout sélectionner

http://downloads.sourceforge.net/project/mpc-hc/MPC HomeCinema - Win32/MPC-HC_v1.6.3.5818_x86/MPC-HC.1.6.3.5818.x86.exe?r=&ts=1345562725&use_mirror=freefr
en cette adresse qui marche

Code : Tout sélectionner

http://dfn.dl.sourceforge.net/project/mpc-hc/MPC HomeCinema - Win32/MPC-HC_v1.6.3.5818_x86/MPC-HC.1.6.3.5818.x86.exe
En détail ici :
► Afficher le texte

Re: [R] Télécharger sur sourceforge et concaténation

Posté : jeu. 23 août 2012 00:26
par Tlem
Le Wiki existe aussi en partie dans la langue de Molière. :roll:
Voilà l'équivalent : http://www.autoitscript.fr/wiki/Tutoriels

Re: [R] Télécharger sur sourceforge et concaténation

Posté : jeu. 23 août 2012 13:49
par foozoor
Donc, rien ne vaut l'étude de script pour apprendre !

Merci pour le "debug", ça me semble beaucoup moins abstrait. :wink: