# Modification d'URL



## Libella (22 Décembre 2018)

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 !


----------



## Libella (23 Décembre 2018)

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...


----------

