Modification d'URL

Libella

Membre confirmé
21 Novembre 2008
12
2
Bonjour,

Voila mon objectif : faire un clic droit sur morceau de texte sélectionné et exécuter un service OSX qui me fasse une recherche sur un site prédéfini avec pour argument le texte sélectionné au curseur.

J'arrive à faire cela, mais :
- soit le site avec la recherche s'ouvre dans un nouvel onglet de safari, et cela fonctionne à tous les coups, peu importe que le texte sélectionné comporte des caractères spéciaux ou accentués (mais je voudrais que ce soit dans une fenêtre type "pop-up", comme le propose automator); et le code ressemble à ça :

on run {input, parameters}
set myUrl to ("http://www.lesite.fr/recherche/?q=" as string) & input as string
do shell script "open " & quoted form of myUrl
end run

- soit c'est la galère pour que mon URL soit correctement interprété (et je n'ai d'autre choix que de faire le formatage du texte sélectionné "à la main" en prenant le risque qu'il y ai des exceptions non gérées); et le code ressemble à ça :

on run {input, parameters}
set textSearch to findAndReplace(input as string)
set myUrl to ("http://www.site.fr/recherche/?q=" as string) & textSearch as string
return myUrl
end run

on findAndReplace(TheString)

set ditd to text item delimiters
set text item delimiters to {" ", "'", ",", ":", "?", "!", "."}
set textItems to text items of TheString
set text item delimiters to "+"
set res to textItems as string
set text item delimiters to ditd
return res
end findAndReplace

[puis l'Action "Pop-up de site web" d'Automator récupéré l'URL]

Autant dire que la deuxième solution ne me plait pas du tout du fait des exceptions non gérées, de l'oubli d'information (les caractères spéciaux sont en fait supprimés, etc.). Et là, je ne gère même pas les caractères accentués...

La solution une est parfaite, dans le sens où c'est la fonction "open" qui se charge de formater correctement l'URL. Il me manque la même fonction script qui ouvre un pop-up en fait...

Bref, je n'arrive pas à trouver de solution satisfaisante pour modifier une URL... Si quelqu'un à une idée, ce serait génial !
 
Si cela peut servir, ce n'est toujours pas l'idéal dans le sens où j'ai dû me rabattre sur du JavaScript en plus de l'AppleScript, mais ça marche, et voilà à quoi ça ressemble :

[Action "Exécuter JavaScript"]
function run(input, parameters) {
return encodeURI(input);
}
[Action "Exécuter un script Applescript"]
on run {input, parameters}
set myUrl to ("http://www.site.fr/recherche/?q=" as string) & input
return myUrl
end run
[Action "Pop-up de site web"]
Si quelqu'un maitrise l'AppleScript, je reste curieux et intéressé de savoir s'il existe une solution plus élégante...