# Applescript et Safari



## Darfox (22 Avril 2006)

Yop

Aujourd'hui j'ai décidé de me mettre un peu au AppleScript (qui me parait très bisard dans la forme:hein: ).

J'aurais voulu relevé le code html d'une page se trouvant sur internet pour la parser ensuite.
Premier problème, je n'arrive pas a récupérer le code de la page, juste à la lancer avec Safarie xD

Ensuite je n'ai aucune idée de comment faire pour parser ce code en applescript. Il y aurait pas un site un peu plus complexe que iScritpt pour expliquer ce genre de chose ??

Merci à vous


----------



## Pierre-Jean GOULIER (22 Avril 2006)

Pas trop compris ce que tu voulais faire...

Bon. Une idée comme ça pour récupérer le source HTML d'une page et la déposer dans TextEdit :

tell application "Safari"
	set codepage to the source of the front document
end tell

tell application "TextEdit"
	activate
	make new document
	set the text of the front document to codepage
end tell

Il faut que tu aies ouvert Safari au préalable...


----------



## Darfox (22 Avril 2006)

alors à ce que j'ai compris de ton code, il s'agit de récupérer le code de la page en cours.
Le problème, c'est que j'aimerais récupérer ce code sans que la page ne soit ouverte ou meme qu'elle ne s'ouvre.

Possible ??


----------



## Anonyme (22 Avril 2006)

Darfox a dit:
			
		

> Le problème, c'est que j'aimerais récupérer ce code sans que la page ne soit ouverte ou meme qu'elle ne s'ouvre.
> 
> Possible ??


À moins que ce ne soit possible au moyen d'une scripting addition de tierce partie, voici ce que j'ai pu bricoler avec les moyens du bord :


```
property theDialog : "Veuillez indiquer l'adresse de la page à traiter :"
property defaultURL : "http://www.apple.com"
property theName : "Apple.html"

on run
	set theURL to text returned of (display dialog theDialog default answer defaultURL buttons {"Annuler", "Poursuivre"} default button 2)
	set thePage to choose file name default name theName

	tell application "URL Access Scripting" to download theURL to thePage replacing yes
	
	set fileRef to open for access thePage without write permission
	set HTMLSource to read fileRef
	close access fileRef

	return HTMLSource
end run
```

La page est téléchargée (sans être ouverte), puis lue. On peut imaginer d'en automatiser la suppression.
Le script est également disponible ici (10.3 ou supérieur).


----------



## Darfox (22 Avril 2006)

Heu comme c'est mon premier script j'ai pas tout pigé, mais y a pas un moyen pour faire tout ça automatiquement (sans que j'ai a mettre l'url et a dire sauvegarder) car tout sera dis dans le script.
Mettons, l'url c'est toujours la meme donc pas besoin de demandé laquel il faut et plasser le fichier temporairement et le supprimer ensuite ?


----------



## Darfox (22 Avril 2006)

En fait j'ai réfléchi un peu et j'ai trouvé tout seul comme un grand ^^.

Bon alors now, plus compliqué je pense, il faudrait que je parse cette page.
Je pense pas qu'elle soit très compliqué car chaque information se trouve dans des balises
ex: <pays>France</pays>

Donc il faudrait que j'ai le moyen d'extraire le contenue de ces balises.


----------



## Anonyme (22 Avril 2006)

Darfox a dit:
			
		

> Mettons, l'url c'est toujours la meme donc pas besoin de demandé laquel il faut et plasser le fichier temporairement et le supprimer ensuite ?


Si c'est toujours la même URL et toujours le même dossier, c'est encore plus simple :

```
on run
	set theURL to "http://www.apple.com"
	set thePage to (path to desktop as string) & "tempFile.html"
	
	tell application "URL Access Scripting" to download theURL to thePage
	
	set fileRef to open for access thePage without write permission
	set HTMLSource to read fileRef
	close access fileRef
	
	do shell script "rm -f " & POSIX path of thePage
	return HTMLSource
end run
```


----------



## Darfox (22 Avril 2006)

Ui ui j'y étais arrivé :


```
on run
	set theURL to "http://www.apple.com"
	set thePage to "/Users/Darfox/Documents/apple.xml"
	
	tell application "URL Access Scripting" to download theURL to thePage replacing yes
	
	set fileRef to open for access thePage without write permission
	
	display dialog (read fileRef)
	
	close access fileRef
	
	do shell script "rm -rf /users/Darfox/Documents/apple.xml"
end run
```

Le display est juste la pour vérifier que j'avais bien le contenue.

Donc now il faudrait arrivé à parser ce code. J'ai expliqué ce que je voulais juste un peux plus haut.

Thx


----------



## Anonyme (22 Avril 2006)

Darfox a dit:
			
		

> Ui ui j'y étais arrivé :
> 
> 
> ```
> ...


Si le code de la page que tu souhaites "parser" est écrit en XML, tu devrais pouvoir t'en sortir grâce aux XML Tools de Late Night Software (cette addition est un gratuiciel). Bon courage pour la suite.


----------



## Darfox (23 Avril 2006)

Merci je vais voir ce que ça donne avec ça.

Edit : Problème ^^

En fait ça concerne pas le parse. J'ai installer le truc mais au moment de réouvrir l'éditeur de script et de ré-exécuter mon script pour voir si tout fonctionnait toujours bien et bien j'ai eu une erreur : Erreur de fin de fichier, au niveau de read fileRef. Je sais pas du tout pourquoi ça fait puisque ça fonctionnait très bien tout l'heure. Quand je regarde ce que ça enregistre, la source est impécable.


----------



## Darfox (23 Avril 2006)

Arf mauvaise news, on a pas besoin de tout ce qu'on a fait avant :hein: 

Le truc XML Tool le fait tout seul.

Mais j'ai quand meme un autre problème (décidément ma vie n'est qu'un problème).
Encodage de mon fichier : ISO-8859-15. Format reconnu par xml tool : ISO-8859-1

T_T

Donc il faudrait arriver a enlever ce 5.


----------



## Anonyme (23 Avril 2006)

Darfox a dit:
			
		

> Donc il faudrait arriver a enlever ce 5.


Tu as essayé "parse XML [fichier] encoding ISO-8859-1" ?


----------



## Darfox (23 Avril 2006)

DocEvil a dit:
			
		

> Tu as essayé "parse XML [fichier] encoding ISO-8859-1" ?


J'ai fait plus simple pour éviter de me prendre la tete, mais y a un truc qui m'échappe.
J'ai recréer une page en enlevant le type d'encodage comme ça il ne devait plus y avoir de problème.
Mais voila, dès que XML Tools va chercher la source soit dans un fichier soit sur internet il me retourne toujours : Erreur, not weel-formated ... charactere 0 on line 1.

Hors quand je place le contenue de la page dans une variable le truc fonctionne très bien :

```
on run
set xmlparse to "<?xml version=\"1.0\"?>
<data>
<id>57325</id>
<upload>103626180380</upload>
<download>1327925393</download>
<download_free>11946992784</download_free></data>"
	set XMLSource to parse XML xmlparse
	display dialog item 1 of XML contents of item 2 of XML contents of XMLSource
	
end run
```

La ça fonctionne


----------



## Darfox (23 Avril 2006)

Re moi.

Bon alors j'ai réussi en exploitant le code que DocEvil m'avait passé au début.
Donc now ça donne ça : 

```
on run
	set theURL to "http://www.url.com"
	set theFichier to "fichier.xml"
	
	tell application "URL Access Scripting" to download theURL to theFichier replacing yes
	
	set fileRef to open for access theFichier without write permission
	set HTMLSource to read fileRef
	close access fileRef
	set XMLSource to parse XML HTMLSource
	set upload_quota to item 1 of XML contents of item 2 of XML contents of XMLSource
	set download_quota to item 1 of XML contents of item 3 of XML contents of XMLSource
	display dialog "Uploader : " & upload_quota & "
Downloader : " & download_quota
	do shell script ("rm -rf " & theFichier)
end run
```

Avant de continuer j'aimerais savoir si c'est possible de mettre ce script dans la barre du haut avec un ti icone et quand on clique dessus on peu afficher le texte extrait du fichier xml ??


----------



## Anonyme (23 Avril 2006)

Darfox a dit:
			
		

> Avant de continuer j'aimerais savoir si c'est possible de mettre ce script dans la barre du haut avec un ti icone et quand on clique dessus on peu afficher le texte extrait du fichier xml ??


Ce serait peut-être plus simple si tu m'envoyais ton script par courriel, non ? Ça m'est difficile de faire des tests sans connaître le fichier XML parsé...


----------



## Darfox (23 Avril 2006)

Oila, envoyé par mp (car j'ai vu qu'après ton mail) xD


----------



## Anonyme (23 Avril 2006)

Darfox a dit:
			
		

> Avant de continuer j'aimerais savoir si c'est possible de mettre ce script dans la barre du haut avec un ti icone et quand on clique dessus on peu afficher le texte extrait du fichier xml ??


Le plus simple n'est-il pas de placer ton script dans le menu des scripts prévu à cet effet ?
Pour le code, je t'ai répondu par ailleurs.


----------



## Darfox (23 Avril 2006)

Hum le menu des script prévu à cette effet ?

Je me suis jamais posé la question depuis que je suis sur mac (4Mois).


----------



## Anonyme (23 Avril 2006)

Darfox a dit:
			
		

> Hum le menu des script prévu à cette effet ?


Dans le sous-dossier "AppleScript" du dossier "Applications", tu trouveras l'Utilitaire AppleScript.
Cet outil permet, entre autres, d'activer le menu des scripts de la barre des menus. Pour ajouter un script à ce menu, il suffit de le déplacer dans l'un des dossiers "Scripts" prévus à cet effet (et accessibles depuis le menu).


----------



## Darfox (23 Avril 2006)

Lol, je me suis mal exprimé.

En fait je voulais un truc qui s'affiche comme la liste des applescripts, mais au lieu de m'afficher la liste des as, je voudrais qu'il m'affiche les informations que j'ai parser juste avant.

Au fait merci pour ton aide


----------



## Anonyme (23 Avril 2006)

Darfox a dit:
			
		

> Lol, je me suis mal exprimé.
> 
> En fait je voulais un truc qui s'affiche comme la liste des applescripts, mais au lieu de m'afficher la liste des as, je voudrais qu'il m'affiche les informations que j'ai parser juste avant.
> 
> Au fait merci pour ton aide


Si ton but est de créer un Menu Extra (affichant les informations souhaitées dans un menu), je crains de ne pas avoir les compétences requises pour t'aider. Bon courage pour la suite.


----------

