Mon 1er soft AAS: c'est Shâbu-Shâbu

Lupin sansei

Membre actif
18 Août 2002
506
9
Je m'amuse comme un petit fou avec Applescript studio.
laugh.gif


voilà ma première création aboutie: Shabu-Shabu. Je vous mets le contenu du fichier texte qui accompagne le programme.

Il s'agit d'un petit programme Applescript qui a pour origine la volonté de simplifier l'échange de fichiers entre mes proches, "éternels débutants" et moi, expatrié.

Utilisation:

1) Déposer les fichiers ou les dossiers dans le cadre du tableau. Le bouton "Clear" peut être utilisée pour enlever des éléments indésirables.

Le transfert s'effectue par le protocol FTP. L'accès FTP de la machine distante doit être activé (accessible dans les préférences Système --> Partage --> Accès FTP)

L'utilisateur doit également disposer du Login et du mot de passe d'un compte de la machine distante

2) Renseigner l'adresse de la machine distante, le login et le password d'un compte

3) Cliquer sur "Upload"

Un archive compressée des fichiers est créée avec l'utilitaire Tar et le transfert FTP s'effectue avec la commande cURL.

En cas d'interruption du transfert, il suffit de cliquer une nouvelle fois sur "Upload" pour que le transfert reprenne.

Le programme est libre de droits et l'auteur dégage toute responsabilité des pertes, dommages ou préjudices que Shâbu-Shâbu pourrait causer. L'utilisation est fait à vos risques et périls.

Le lapin Nova est un personnage Nova (http://www.nova.ne.jp/novausagi/cm/index.html)

Voilà, vos commentaires (indulgents) sont bien venus
smile.gif
 
super,
ça m'a l'air symphatique, mais je ne vois pas la possibilité de conserver l'adresse d'un contact... et pourquoi pas une collaboration avec adressbook ?
encore bravo
wink.gif
 
bon, alors je note. je vais voir ce qu'il est possible de faire avec le carnet d'adresse. Je vais essayer d'inclure un serveur FTP dans le programme de façon à ce qu'il ne soit pas nécesaire de démarrer le partage FTP et résoudre la contrainte du login et du pass.
zen.gif
 
Bonjour,

J'ai un petit probleme avec Shabu 1.0: apres avoir cliqué sur Upload, j'ai un message en anglais qui me redemande mon mot de passe, "Authentification required", je redonne mon mot de passe FTP, et la j'obtient "AppleScript error"
Avec "Can't make word 19 of "curl: (7) failed to connect..." into a string (-1700).

J'ai parfois aussi une erreur Applescript : "sudo error 1"

Je n'ai jamais reussit a me connecter.

Mais pas de panique, je suis sur un Mac qui accede a l'Internet via un proxy et les acces FTP ne sont pas évidents...

J'ai ecrit dans un de mes programmes AppleScript des acces FTP recemment.
Quels acces utilise tu ? Tu lance curl par un shell ?

Cordialement
 
J'ai un petit probleme avec Shabu 1.0: apres avoir cliqué sur Upload, j'ai un message en anglais qui me redemande mon mot de passe, "Authentification required", je redonne mon mot de passe FTP, et la j'obtient "AppleScript error"
Avec "Can't make word 19 of "curl: (7) failed to connect..." into a string (-1700).

J'ai parfois aussi une erreur Applescript : "sudo error 1"

Je n'ai jamais reussit a me connecter.

Mais pas de panique, je suis sur un Mac qui accede a l'Internet via un proxy et les acces FTP ne sont pas évidents...

J'ai ecrit dans un de mes programmes AppleScript des acces FTP recemment.
Quels acces utilise tu ? Tu lance curl par un shell ?

Le mot de passe qui t'es demandé est celui d'un compte admin de ton mac, comme on peut le voir dans l'extrait de code:
<font class="small">Code:</font><hr /><pre>
set upload to "curl -T /var/tmp/shabushabu/shabushabu.tar ftp://" &amp; lelogin &amp; ":" &amp; lepassword &amp; "@" &amp; adresse &amp; "/Desktop/ &gt; /var/tmp/shabushabu/data.txt 2&gt;&amp;1 &amp;
do shell script "sh -c " &amp; quoted form of upload with administrator privileges
</pre><hr />

et sans les privilèges admin, je n'obtenais rien de cURL (mais je ne me souviens plus quelle erreur)

Le login et pass du FTP sont à renseigner dans la fenêtre du programme
smile.gif
 
Je viens de m'apercevoir que j'ai oublié l'argument permettant de reprendre un upload incomplet.....
crazy.gif


Bloc de code:
 curl [COLOR=red] -C - [/COLOR] -T /var/tmp/shabushabu/shabushabu.tar ftp://"
 
Bonjour,

Quand j'ai ecrit mon programme en AppleScript, je suis d'abord passé par CURL.
Ton programme doit demander l'adresse de proxy et le port si tu veut qu'il fonctionne sur les Macs connectés via un proxy.
La syntaxe Curl est "--proxy adresse:port"

Je n'ai jamais eut de mon coté de probleme pour accéder a Curl sur X.3 par contre, sur X.2 Curl n'est pas installé par défaut et ton programme est donc "Panther only".

Comme CURL est tres lent, j'ai essayé par la commande FTP.
La syntaxe des proxy avec FTP est la suivante :
soit server_address l'adresse du serveur
soit server_user le nom de l'utilisateur
soit server_password le mot de passe utilisateur
soit server_proxy_address l'adresse du proxy
soit server_proxy_port le numero de port de proxy

Cela donne :

ftp "ftp://server_user%40server_address:server_password@server_proxy_address:server_proxy_port"

Mais la aussi, c'est lent et pas tres fiable. Surtout au niveau de la gestion des erreurs.

J'ai donc encore une fois laissé tomber et j'ai linké avec la librairie "libcurl", là bingo, ca marche super bien.

J'ai meme put faire un transfert "malin" qui verifie les dates des fichiers et ne transfere que ceux qui sont plus anciens sur le serveur.

Si tu veux plus de renseignements, n'hesite pas.

Cordialement
 
Didier Guillion a dit:
Bonjour,

Quand j'ai ecrit mon programme en AppleScript, je suis d'abord passé par CURL.
Ton programme doit demander l'adresse de proxy et le port si tu veut qu'il fonctionne sur les Macs connectés via un proxy.
La syntaxe Curl est "--proxy adresse:port"

ok, j'ignorai pour le proxy. j'ajouterai l'argument.

Didier Guillion a dit:
Je n'ai jamais eut de mon coté de probleme pour accéder a Curl sur X.3 par contre, sur X.2 Curl n'est pas installé par défaut et ton programme est donc "Panther only"

j'aimerai intégré cURL directement dans le programme, mais est ce que tu sais comment faire référence à cURL si il est inclu dans le programme sachant que shabu-shabu peut être déposé n'importe où?

Didier Guillion a dit:
Comme CURL est tres lent...

là, je ne te suis plus. on avait fait un essai de download avec curl. Le téléchargement s'effectuait sur une ligne ADSL 512K et ça se faisait à la vitesse maxi, autour de 60-64Ko/s.
Alors si cURL est lent, c'est à partir de quelle débit?

Didier Guillion a dit:
j'ai linké avec la librairie "libcurl"

confused.gif
comment as tu "linké"?

Didier Guillion a dit:
J'ai meme put faire un transfert "malin" qui verifie les dates des fichiers et ne transfere que ceux qui sont plus anciens sur le serveur

c'est une option que je n'implenterai pas dedans, mais par curiosité, comment fais tu? par contre je vais certainement ajouté quelques chose comme une date au nom de l'archive pour quelle n'écrase pas une autre archive lors de l'upload sur le serveur.

merci
smile.gif
 
Bonjour,

Pour localiser un programme que tu as mit dans les ressources de ton projet tu fait :

Soit "curl" le nom du programme
tell main bundle
set cmd to "'" &amp; resource path &amp; "/curl' " &amp; (ASCII character 10)
end tell
(note bien les quotes avant et apres sinon tu risque d'avoir des problemes)
et apres tu lance la commande par :
do shell script cmd

Mais ca tu connait.

Pour les problemes de lenteur, je m'explique.
Quand tu transfere un seul fichier, les taux sont pas trop mal, mais le le probleme survient quand tu transfere plus d'un fichier :
a chaque fichier, Curl se reconnecte au serveur envoie le nom, mot de passe, et certains serveurs sont tres lents sur le coup.
Le cas le plus defavorable est quand tu transfere plein de petits fichiers.

Sur un site web a poster (environ 1Mo et une centaines de fichiers), ligne 128K, sur Free.
En vitesse, je suis passé de 4-5 ko avec Curl, a 7-8 avec ftp.

La commande ftp a l'avantage d'accepter plusieurs fichier d'un coup dans la ligne de commande et donc de ne faire qu'une connection.
Mais ce n'est pas encore le pérou.

La librairie libCurl permet de ne se connecter qu'une fois, d'envoyer tous les fichiers, puis de se deconnecter.

Pour linker avec libcurl tu peut deja essayer de mettre le fichier libcurl.a dans ton projet.
Tu as compilé libcurl ?

Cordialement
 
Soit "curl" le nom du programme
tell main bundle
set cmd to "'" &amp; resource path &amp; "/curl' " &amp; (ASCII character 10)
end tell
(note bien les quotes avant et apres sinon tu risque d'avoir des problemes)
et apres tu lance la commande par :
do shell script cmd

là tu m'apprends quelque chose de tres utile, merci.
smile.gif


Pour les problemes de lenteur, je m'explique.
Quand tu transfere un seul fichier, les taux sont pas trop mal, mais le le probleme survient quand tu transfere plus d'un fichier :
a chaque fichier, Curl se reconnecte au serveur envoie le nom, mot de passe, et certains serveurs sont tres lents sur le coup.
Le cas le plus defavorable est quand tu transfere plein de petits fichiers.

Sur un site web a poster (environ 1Mo et une centaines de fichiers), ligne 128K, sur Free.
En vitesse, je suis passé de 4-5 ko avec Curl, a 7-8 avec ftp

ok.

Pour linker avec libcurl tu peut deja essayer de mettre le fichier libcurl.a dans ton projet.
Tu as compilé libcurl ?
non, j'ai simplement utilisé le cURL dispo dans 10.3. A priori, je n'ai pas encore de raison de laisser tomber cURL puisque je n'envoie qu'un seul fichier archive, mais par curiosité, une fois que tu as mis ce fichier libcurl.a dans le projet, comment l'utilises tu? quelles sont les différences entre cette librairie et le programme?
 
Bonjour,

la commande curl utilise elle meme libcurl. Pour utiliser la librairie, il faut faire une interface en obj-c et l'appeller depuis l'AppleScript.

Utiliser la librairie :
- Evite de lancer une commande shell
- Donne des acces beaucoup plus fin sur les parametres
- Te permet d'ouvrir une seule connection et de transferer des fichiers multiples
- Te donne des retour d'erreurs plus détaillés
- Gere des problemes, comme par exemple si le chemin source contient des espaces.

Et en plus c'est tres compact : environ 60Ko a ajouter a l'archive de ton programme.

Tu as une discussion a ce sujet dans le chapitre "Internet" de ce forum.

A mon tour de te poser une question : je vois que tu gere le glisser/déposer de fichiers sur ta fenetre, par quoi passe tu ? Un evenement "on drop" ?

Cordialement

PS: Previent moi quand tu auras une version de Shâbu-Shâbu qui gere les proxy, je pourrait le tester.
 
Didier Guillion a dit:
Bonjour,

la commande curl utilise elle meme libcurl. Pour utiliser la librairie, il faut faire une interface en obj-c et l'appeller depuis l'AppleScript.

Utiliser la librairie :
- Evite de lancer une commande shell
- Donne des acces beaucoup plus fin sur les parametres
- Te permet d'ouvrir une seule connection et de transferer des fichiers multiples
- Te donne des retour d'erreurs plus détaillés
- Gere des problemes, comme par exemple si le chemin source contient des espaces.

Alors là, ça n'est pas encore pour moi parce que je débute
laugh.gif




A mon tour de te poser une question : je vois que tu gere le glisser/déposer de fichiers sur ta fenetre, par quoi passe tu ? Un evenement "on drop" ?

Cordialement

PS: Previent moi quand tu auras une version de Shâbu-Shâbu qui gere les proxy, je pourrait le tester.

--&gt; on drop theObject drag info dragInfo

j'ai pêché ça dans les exemples AAS fournit.

je me penche sur la prochaine version ce week end
wink.gif
zen.gif