BlogAs
Le blog des As...

Codes



Télé(dé)charger...
08/03/09 12:29 PM -
Voici deux codes, assez basiques, qui permettent de télédécharger (download) et de télécharger (upload) des documents entre un espace Web et son Mac.

Pour télédécharger un document ("download" en anglais), c'est à dire, pour transférer un document présent dans un espace Web vers son Mac, il faut juste indiquer l'adresse Web complète du fichier, par exemple : "http://www.un_site.fr/un_dossier/un_fichier.html" (sans les guillemets), il sera automatiquement enregistré sur le bureau (emplacement à personnaliser au besoin) :

Ouvrez ce code dans l'Éditeur de Scripts...

on run
  try
    -- Adresse Url complète du document à télédécharger, par exemple :
    -- http://www.mon_site.com/mon_dossier/mon_fichier.html
    set theUrl to text returned of ¬
      (display dialog "Adresse Url du fichier à télédécharger :" default answer "" with icon 1)
    
    -- Récupération du nom du fichier
    set text item delimiters of AppleScript to "/"
    set theNom to "" & last item of (text items of theUrl)
    set text item delimiters of AppleScript to ""
    
    -- Création du document de destination (sur le bureau, à personnaliser au besoin)
    set theDoc to "" & (path to desktop folder) & theNom
    close access (open for access theDoc)
    
    -- Construction et exécution de la commande Shell
    set theShell to ¬
      "curl -s " & (quoted form of theUrl) & " -o " & (quoted form of POSIX path of theDoc)
    do shell script theShell
    
  on error leMsg number leNro
    -- Si une erreur se produit, alors on informe l'utilisateur
    if leNro is not -128 then display alert "Erreur " & leNro & " :" message leMsg as warning
  end try
end run

Cet autre code permet de faire le transfert inverse, c'est à dire, de télécharger ("upload" en anglais) un document présent sur le Mac vers un espace Web dont on connaît les paramètres de connexion. Il faut donc choisir le document à transférer puis renseigner les différentes infos de connexion (identifiant et mot de passe) et, enfin, indiquer l'adresse Ftp complète du répertoire Web de destination, par exemple : "ftp://www.un_site.fr/mon_dossier/" :

Ouvrez ce code dans l'Éditeur de Scripts...

on run
  try
    -- Choix du fichier à télécharger
    set theFile to quoted form of POSIX path of ¬
      (choose file with prompt "Choisissez le fichier à télécharger :" without invisibles)
    
    -- Demande de l'identifiant de connexion (réponse par défaut à personnaliser)
    set theUser to quoted form of text returned of ¬
      (display dialog "Votre identifiant :" default answer "identifiant" with icon 1)
    
    -- Demande du mot de passe de connexion
    set thePass to quoted form of text returned of ¬
      (display dialog "Votre mot de passe :" default answer "" with icon 1 with hidden answer)
    
    -- Demande de l'adresse Ftp de téléchargement (réponse par défaut à personnaliser)
    set thePath to quoted form of text returned of ¬
      (display dialog "Votre adresse Ftp :" default answer "ftp://www.un_site.fr/" with icon 1)
    
    -- Construction et exécution de la commande Shell
    set theShell to "curl -T " & theFile & " -u " & theUser & ":" & thePass & " " & thePath & " -S"
    do shell script theShell
    
  on error leMsg number leNro
    -- Si une erreur se produit, alors on informe l'utilisateur
    if leNro is not -128 then display alert "Erreur " & leNro & " :" message leMsg as warning
  end try
end run





Tri Liste...
27/11/08 04:10 AM -
Voici une petite fonction de tri de listes d'éléments par ordre croissant ou décroissant. Ce n'est pas l'algorithme le plus efficace qui soit, loin de là, mais il a l'avantage d'être très compact et relativement rapide lorsqu'il s'agit de trier des petites listes d'éléments, quelques centaines disons, au delà, il faut plutôt se tourner vers d'autres méthodes plus "robustes". Voici donc le code de cette variante de tri :

Ouvrez ce code dans l'Éditeur de Scripts...

set la_liste_1 to {9, 2, 7, 3, 1, 5, 8, 0, 4, 6}
set la_liste_2 to {"un", "deux", "trois", "quatre", "cinq"}

return my subTriListe(la_liste_1, false) -- {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
return my subTriListe(la_liste_2, true) -- {"un", "trois", "quatre", "deux", "cinq"}

on subTriListe(la_liste, tri_inverse)
  repeat with le_nro_1 from 1 to ((count la_liste) - 1)
    repeat with le_nro_2 from (le_nro_1 + 1) to (count la_liste)
      set le_item_1 to contents of item le_nro_1 of la_liste
      set le_item_2 to contents of item le_nro_2 of la_liste
      if le_item_2 < le_item_1 then
        set item le_nro_2 of la_liste to le_item_1
        set item le_nro_1 of la_liste to le_item_2
      end if
    end repeat
  end repeat
  if tri_inverse then return reverse of la_liste
  return la_liste
end subTriListe




DateFr...
25/11/08 03:47 AM -
Voici une petite sub-routine (fonction) autonome permettant d'obtenir une date au format français "JJ/MM/AAAA". Quelques options sont disponibles, comme le choix du séparateur, l'année au format abrégé ou encore la date au sens inverse "AAAA/MM/JJ".

Ouvrez ce code dans l'Éditeur de Scripts...

my subDateFr(current date, "-", 4, true) -- "25-11-2008"
my subDateFr(current date, "/", 2, false) -- "08/11/25"

on subDateFr(la_date, la_separation, chiffres_annee, le_sens)
  set J to (text -2 thru -1 of ("0" & (day of la_date)))
  set M to (text -2 thru -1 of ("0" & (offset of (text 1 thru 3 of ("" & (month of (la_date)))) in "JanFebMarAprMayJunJulAugSepOctNovDec") div 3 + 1))
  set A to (text -chiffres_annee thru -1 of ("" & (year of la_date)))
  if le_sens then return ("" & J & la_separation & M & la_separation & A)
  return ("" & A & la_separation & M & la_separation & J)
end subDateFr