# Hyperlien, Webloc



## Gregoryen (26 Octobre 2021)

Bonjour tout le monde !

Grâce à l'aide de @zeltron54 sur un autre sujet, nous avions pu créer un script pour ouvrir tous les webloc d'un dossier, et ça marche à merveille !

Voilà, j'ai plusieurs fichiers texte avec à l'intérieur, des liens hypertexte. Pour l'exemple j'ai créé celui-ci, mais j'en ai plusieurs avec quelques dizaines voir centaines de liens.






J'aimerais faire trois choses, mais qui ne se font pas spécialement ensemble, ça dépend du besoin.

*1. *Ouvrir tous ces liens en une seule fois sur Safari. J'ai essayé de le faire avec un workflow sur Automator, mais le problème, c’est l'hypertexte, ce ne sont pas de simples URLS.

*2.* Convertir les hypertextes en liens normaux. (Ça pourrait résoudre le problème numéro 1).

*3.* Créer un webloc de chaque hyperlien (ou liens). Pour cela il faut que je reste appuyé sur le lien en question et que je le glisse en dehors de la fenêtre. Mais imaginez en avoir plusieurs centaines...

Merci de votre aide !


----------



## zeltron54 (26 Octobre 2021)

Bonsoir,
@Gregoryen

D'après ta copie d'écran, je pense que ton fichier contenant les liens et les liens hypertexte est un fichier au format ".RTF"

Si c'est bien le cas, un petit applescript permettra de le scanner et d'en extraire tous les liens et de les enregistrer dans un dossier en tant que fichiers ".WEBLOC".

Ci-dessous le script qui te demande de sélectionner le fichier RTF à traiter, puis te demande de sélectionner un dossier vide pour accueillir les webloc, puis il fait le job et te préviens lorsqu'il a terminé.
Les fichier webloc sont nommés "lien 1", lien 2" lien 3 " etc...
J'attends le résultat de tes tests !


```
set monfichier to choose file with prompt "Sélectionnez le fichier contenant les hyperliens"
set Chemin to choose folder with prompt "Sélectionnez le dossier recvant les webloc"
open for access monfichier -- ouvre ce fichier en lecture
set vartoto to read monfichier -- lit le fichier et le met dans la variable vartoto
close access monfichier -- ferme le fichier

set hyp to "HYPERLINK"
set guil to (ASCII character 34)
set occu to hyp & " " & guil

set avant to "<?xml version=" & guil & "1.0" & guil & " encoding=" & guil & "UTF-8" & guil & "?>
<!DOCTYPE plist PUBLIC " & guil & "-//Apple//DTD PLIST 1.0//EN" & guil & " " & guil & "http://www.apple.com/DTDs/PropertyList-1.0.dtd" & guil & ">
<plist version=" & guil & "1.0" & guil & ">
<dict>
    <key>URL</key>
    <string>"

set apres to "</string>
</dict>
</plist>
"

set numero to 1
repeat
    set vartoto to vartoto as string
    set aa to offset of occu in vartoto
    if aa = 0 then exit repeat
    set nb to aa + 11
    set lelien to ""
    repeat while character nb of vartoto is not guil
      
        set lelien to lelien & character nb of vartoto
        set nb to nb + 1
    end repeat
    set vartoto to characters nb thru -1 of vartoto
    set ccc to vartoto as string
    set unlien to avant & lelien & apres
    tell application "TextEdit"
        set lenom to "lien " & numero & ".webloc"
        set chemindef to ((Chemin as text) & lenom) as text
        try
            set lefichier to open for access chemindef with write permission
            --set lefichier to open for access chemin with write permission
            set eof lefichier to 0 -- pour effacer le fichier existant
            write unlien & return to lefichier starting at eof
            close access lefichier
        on error e
            display dialog "Le fichier «lien X.webloc n'a pu être créé" & return & return & "Verifiez que le repertoire existe et qu'il a des droits en écriture" with icon 0 buttons "Annuler" default button 1
        end try
        set numero to numero + 1
    end tell
end repeat
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## Gregoryen (27 Octobre 2021)

Oh yeah top !! Merci encore une fois @zeltron54 !!

Alors effectivement j'ai dû fourcher en écrivant (l'émotion), mais il s'agit bien d'un fichier RTF.

J'ai testé le script qui fonctionne à merveille, j'ai fait un test avec un groupe de 4 liens. Seuls 2 liens n'ont pas fonctionné, j'ai donc ouvert le webloc pour les comparer à ceux qui fonctionnent.

Aucun changement, on vois bien l'URL s'afficher, seulement lorsque j'ouvre le webloc, il m'affiche une page vide. Cependant j'ai remarqué qu'il s'agissait de deux recherches Google, est-ce que ce serait lié ?

Et je voudrais savoir s'il était possible d'avoir l'URL du site comme titre webloc à la placette "lien". Ça permettrait de copier les webloc et les coller en brut dans une TextEdit pour y récupérer les liens purs en prenant soin de supprimer l'extension à la fin.

Sinon un grand merci !


PS: J'ai fait un test, je suis allé sur Google pour mettre ne recherche. J'ai copié l'URL sur Note, qui m'a donné un Hyperlien. J'ai fait un glissé déposé sur le bureau pour obtenir le webloc. Lorsque je clique sur celui-ci, il s'ouvre avec la recherche.

Si j'essaie le webloc du script, il affiche une page vide, alors voici le contenu des deux fichiers, et l’on voit une différence (il manque "amp;").

Le webloc qui fonctionne :




Le webloc du script qui s'affiche vide :


----------



## Gregoryen (27 Octobre 2021)

Je n'ai pas eu le temps d'éditer le message alors voici ce que je voulais dire :

Il manque "amp;" après chaque "&". Je les ai rajoutés, et le fichier vide ouvre bien la page.


----------



## zeltron54 (27 Octobre 2021)

Bonjour,

Effectivement, cela ne fonctionnait pas sur des liens de recherche, je viens de modifier, et j'ai remplacé le nom du fichier par son le nom de son lien en enlevant le début (http://).
Fais des essais ! et dis moi si cela fonctionne chez toi, et si ça te convient.


```
set monfichier to choose file with prompt "Sélectionnez le fichier contenant les hyperliens"
set Chemin to choose folder with prompt "Sélectionnez le dossier recvant les webloc"
open for access monfichier -- ouvre ce fichier en lecture
set vartoto to read monfichier -- lit le fichier et le met dans la variable vartoto
close access monfichier -- ferme le fichier

set hyp to "HYPERLINK"
set guil to (ASCII character 34)
set occu to hyp & " " & guil

set avant to "<?xml version=" & guil & "1.0" & guil & " encoding=" & guil & "UTF-8" & guil & "?>
<!DOCTYPE plist PUBLIC " & guil & "-//Apple//DTD PLIST 1.0//EN" & guil & " " & guil & "http://www.apple.com/DTDs/PropertyList-1.0.dtd" & guil & ">
<plist version=" & guil & "1.0" & guil & ">
<dict>
    <key>URL</key>
    <string>"

set apres to "</string>
</dict>
</plist>
"
repeat
    set vartoto to vartoto as string
    set aa to offset of occu in vartoto
    if aa = 0 then exit repeat
    set nb to aa + 11
    set lelien to ""
    repeat while character nb of vartoto is not guil
        set lelien to lelien & character nb of vartoto
        set nb to nb + 1
    end repeat
    
    set aaa to 0
    set cherch to "-b-d&"
    set aaa to offset of cherch in lelien
    if aaa is not 0 then
        set lelien to (characters 1 thru (aaa + 4) of lelien & "amp;" & characters (aaa + 5) thru -1 of lelien) as string
    end if
    
    set vartoto to characters nb thru -1 of vartoto
    set ccc to vartoto as string
    set unlien to avant & lelien & apres
    set lenom to characters 9 thru -1 of lelien as string
    tell application "TextEdit"
        set lenom to lenom & ".webloc"
        set chemindef to ((Chemin as text) & lenom) as text
        try
            set lefichier to open for access chemindef with write permission
            set eof lefichier to 0 -- pour effacer le fichier existant
            write unlien & return to lefichier starting at eof
            close access lefichier
        on error e
            display dialog "Le fichier «lien X.webloc n'a pu être créé" & return & return & "Verifiez que le repertoire existe et qu'il a des droits en écriture" with icon 0 buttons "Annuler" default button 1
        end try
    end tell
end repeat
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## zeltron54 (27 Octobre 2021)

OUP'S !

Le script ci-dessus est fait pour firefox comme navigateur par défaut.
Il faut que je regarde pour le modifier pour safari comme navigateur... Dés que j'ai un peu de temps !!!


----------



## Gregoryen (27 Octobre 2021)

Oh cool merci ! Oui pas de souci, de toute manière je dois réinstaller macOS car j'ai un problème avec ApplePay qui ne veux pas se configurer donc ça va me prendre un peu de temps.


----------



## zeltron54 (27 Octobre 2021)

Voila le nouveau script qui prend en compte les liens de recherche créés par Firefox et Safari

Dis-moi si c'est bon !


```
set monfichier to choose file with prompt "Sélectionnez le fichier contenant les hyperliens"
set Chemin to choose folder with prompt "Sélectionnez le dossier recvant les webloc"
open for access monfichier -- ouvre ce fichier en lecture
set vartoto to read monfichier -- lit le fichier et le met dans la variable vartoto
close access monfichier -- ferme le fichier

set hyp to "HYPERLINK"
set guil to (ASCII character 34)
set occu to hyp & " " & guil

set avant to "<?xml version=" & guil & "1.0" & guil & " encoding=" & guil & "UTF-8" & guil & "?>
<!DOCTYPE plist PUBLIC " & guil & "-//Apple//DTD PLIST 1.0//EN" & guil & " " & guil & "http://www.apple.com/DTDs/PropertyList-1.0.dtd" & guil & ">
<plist version=" & guil & "1.0" & guil & ">
<dict>
    <key>URL</key>
    <string>"

set apres to "</string>
</dict>
</plist>
"
repeat
    set vartoto to vartoto as string
    set aa to offset of occu in vartoto
    if aa = 0 then exit repeat
    set nb to aa + 11
    set lelien to ""
    repeat while character nb of vartoto is not guil
        set lelien to lelien & character nb of vartoto
        set nb to nb + 1
    end repeat
   
    -- test si recherche creer avec firefox
    set aaa to 0
    set cherch to "-b-d&"
    set aaa to offset of cherch in lelien
    if aaa is not 0 then
        set lelien to (characters 1 thru (aaa + 4) of lelien & "amp;" & characters (aaa + 5) thru -1 of lelien) as string
    end if
   
    --test si recherche creer avec safari
    set aaa to 0
    set cherch to "safari"
    set aaa to offset of cherch in lelien
   
    if aaa is not 0 then
        set lelien to (characters 1 thru (aaa + 6) of lelien & "amp;" & characters (aaa + 7) thru -1 of lelien) as string
        set lelien to (characters 1 thru (aaa + 17) of lelien & "amp;" & characters (aaa + 18) thru -1 of lelien) as string
       
        set cherch to "ie=UTF"
        set aaa to offset of cherch in lelien
        if aaa is not 0 then
            set lelien to (characters 1 thru (aaa - 1) of lelien & "amp;ie=UTF-8&amp;oe=UTF-8") as string
        end if
    end if
   
    set vartoto to characters nb thru -1 of vartoto
    set ccc to vartoto as string
    set unlien to avant & lelien & apres
    set lenom to characters 9 thru -1 of lelien as string
    tell application "TextEdit"
        set lenom to lenom & ".webloc"
        set chemindef to ((Chemin as text) & lenom) as text
        try
            set lefichier to open for access chemindef with write permission
            set eof lefichier to 0 -- pour effacer le fichier existant
            write unlien & return to lefichier starting at eof
            close access lefichier
        on error e
            display dialog "Le fichier «lien X.webloc n'a pu être créé" & return & return & "Verifiez que le repertoire existe et qu'il a des droits en écriture" with icon 0 buttons "Annuler" default button 1
        end try
    end tell
end repeat
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## zeltron54 (27 Octobre 2021)

Un nouveau script ! qui prend en compte les liens des recherches créés avec : Firefox, Safari, Chrome et Opéra.

C'est tous les navigateurs qui sont sur ma machine !

vérifies et dis moi si c'est bon pour toi !


```
set monfichier to choose file with prompt "Sélectionnez le fichier contenant les hyperliens"
set Chemin to choose folder with prompt "Sélectionnez le dossier recvant les webloc"
open for access monfichier -- ouvre ce fichier en lecture
set vartoto to read monfichier -- lit le fichier et le met dans la variable vartoto
close access monfichier -- ferme le fichier

set hyp to "HYPERLINK"
set guil to (ASCII character 34)
set occu to hyp & " " & guil

set avant to "<?xml version=" & guil & "1.0" & guil & " encoding=" & guil & "UTF-8" & guil & "?>
<!DOCTYPE plist PUBLIC " & guil & "-//Apple//DTD PLIST 1.0//EN" & guil & " " & guil & "http://www.apple.com/DTDs/PropertyList-1.0.dtd" & guil & ">
<plist version=" & guil & "1.0" & guil & ">
<dict>
    <key>URL</key>
    <string>"

set apres to "</string>
</dict>
</plist>
"
repeat
    set vartoto to vartoto as string
    set aa to offset of occu in vartoto
    if aa = 0 then exit repeat
    set nb to aa + 11
    set lelien to ""
    repeat while character nb of vartoto is not guil
        set lelien to lelien & character nb of vartoto
        set nb to nb + 1
    end repeat
    
    -- test si recherche creer avec firefox
    set aaa to 0
    set cherch to "Firefox" --"-b-d&"
    set aaa to offset of cherch in lelien
    if aaa is not 0 then
        set lelien to (characters 1 thru (aaa + 11) of lelien & "amp;" & characters (aaa + 12) thru -1 of lelien) as string
        
    else
        --test si recherche creer avec autre que firefox
        set aaa to 0
        set adres to ""
        set cherch to "q="
        set aaa to offset of cherch in lelien
        if aaa is not 0 then
            set aaa to aaa + 2
            repeat while character aaa of lelien is not "&"
                set adres to adres & character aaa of lelien
                set aaa to aaa + 1
            end repeat
            set lelien to "https://www.google.com/search?client=safari&amp;rls=en&amp;q=" & adres & "&amp;ie=UTF-8&amp;oe=UTF-8" as string
        end if
    end if
    
    set vartoto to characters nb thru -1 of vartoto
    set ccc to vartoto as string
    set unlien to avant & lelien & apres
    set lenom to characters 9 thru -1 of lelien as string
    tell application "TextEdit"
        set lenom to lenom & ".webloc"
        set chemindef to ((Chemin as text) & lenom) as text
        try
            set lefichier to open for access chemindef with write permission
            set eof lefichier to 0 -- pour effacer le fichier existant
            write unlien & return to lefichier starting at eof
            close access lefichier
        on error e
            display dialog "Le fichier «lien X.webloc n'a pu être créé" & return & return & "Verifiez que le repertoire existe et qu'il a des droits en écriture" with icon 0 buttons "Annuler" default button 1
        end try
    end tell
end repeat
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## Gregoryen (27 Octobre 2021)

Alors j'ai fait un test, j'avais une liste avec 12 liens, dont des recherches Google. Tout s'est ouvert sauf un lien en direction d'un forum Free...
J'ai modifié mon fichier texte pour y mettre l'URL brute et pas l'hyperlien et cela a marché.

Voici l'intérieur du webloc qui n'a pas fonctionné :






J'en profite pour faire une pierre deux coups. Si la liste n'était pas des hyperliens, mais des URLS brutes, ça aurait tendance à fonctionner.

Ne pourrait-on pas dans le script, créer un fichier texte (qui serait dans le même dossier que les webloc), contenant toutes les URLS brutes, et se baser sur ce fichier pour créer les webloc ?

D'autant plus que je cherche aussi à créer un fichier texte avec les URLS brutes donc ça me serait très pratique de tout faire d'un coup ;-)


----------



## zeltron54 (27 Octobre 2021)

Bonsoir,
je ne comprend pas ! J´ai recopié ta copie d´écran et cela fonctionne sans problème ! Surtout que la il ne s’agit pas d’une recherche…

Ta demande ne me paraît pas réalisable, car les URL , qu´elles soient brutes ou en hyperlien, ne sont pas du texte mais sont incluses dans un champ! Les écrire en tant que texte ne peut pas les rendre cliquable !


----------



## Gregoryen (28 Octobre 2021)

Oui je trouve ça bizarre, il ne s'agit pas d'une recherche, mais le webloc généré me donne une page vide.

Voici le message que me dit le script que l'on avait fait sur l'autre post pour ouvrir les webloc.
Si je l'ouvre manuellement, j'ai une page vide. Je te passes la copie de mon webloc sur ce lien.






PS:  Je ne sais pas si ça te le fait, mais en plus d'ouvrir une page web vide, le fichier étant sur le bureau, il m'ouvre une fenêtre Finder de son emplacement, donc le bureau. Ça ne me le fait pas pour les autre webloc.


----------



## zeltron54 (28 Octobre 2021)

Après analyse, l'adresse dans le webloc que tu m'a envoyé est incomplète.
le contenu du webloc devrait être:

```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>URL</key>
    <string>https://freebox.toosurtoo.com/forum/viewtopic.php?f=115&amp;t=26353</string>
</dict>
</plist>
```
Pour comprendre pourquoi il me faudrait le fichier RTF d'origine, avec le lien afin de l'analyser.

Si tu pouvais me le faire parvenir (si pas trop indiscret)...


----------



## love_leeloo (28 Octobre 2021)

mais à quoi donc cela va-t-il servir ?


----------



## Gregoryen (28 Octobre 2021)

zeltron54 a dit:


> Après analyse, l'adresse dans le webloc que tu m'a envoyé est incomplète.
> le contenu du webloc devrait être:
> 
> ```
> ...


Oui bien sûr  





						Free Transfert
					

Service d'envoi et de partage de fichiers, simple, gratuit et sécurisé destiné aussi bien aux particuliers qu'aux entreprises.




					transfert.free.fr


----------



## zeltron54 (28 Octobre 2021)

Bonjour,

Correction faite, avec en plus une réduction du nom à 200 caractères maxi.
J'attends ton retour !

```
set monfichier to choose file with prompt "Sélectionnez le fichier contenant les hyperliens"
set Chemin to choose folder with prompt "Sélectionnez le dossier recvant les webloc"
open for access monfichier -- ouvre ce fichier en lecture
set vartoto to read monfichier -- lit le fichier et le met dans la variable vartoto
close access monfichier -- ferme le fichier

set hyp to "HYPERLINK"
set guil to (ASCII character 34)
set occu to hyp & " " & guil

set avant to "<?xml version=" & guil & "1.0" & guil & " encoding=" & guil & "UTF-8" & guil & "?>
<!DOCTYPE plist PUBLIC " & guil & "-//Apple//DTD PLIST 1.0//EN" & guil & " " & guil & "http://www.apple.com/DTDs/PropertyList-1.0.dtd" & guil & ">
<plist version=" & guil & "1.0" & guil & ">
<dict>
    <key>URL</key>
    <string>"

set apres to "</string>
</dict>
</plist>
"
repeat
    set vartoto to vartoto as string
    set aa to offset of occu in vartoto
    if aa = 0 then exit repeat
    set nb to aa + 11
    set lelien to ""
    repeat while character nb of vartoto is not guil
        set lelien to lelien & character nb of vartoto
        if (character nb of vartoto) = "&" then
            set lelien to lelien & "amp;"
        end if
        set nb to nb + 1
    end repeat
    
    set vartoto to characters nb thru -1 of vartoto
    set ccc to vartoto as string
    set unlien to avant & lelien & apres
    set nbcaractere to count characters of lelien
    if nbcaractere > 200 then
        set lelien to characters 1 thru 200 of lelien as string
    end if
    set lenom to characters 9 thru -10 of lelien as string
    tell application "TextEdit"
        set lenom to lenom & ".webloc"
        set chemindef to ((Chemin as text) & lenom) as text
        try
            set lefichier to open for access chemindef with write permission
            set eof lefichier to 0 -- pour effacer le fichier existant
            write unlien & return to lefichier starting at eof
            close access lefichier
        on error e
            display dialog "Le fichier «lien X.webloc n'a pu être créé" & return & return & "Verifiez que le repertoire existe et qu'il a des droits en écriture" with icon 0 buttons "Annuler" default button 1
        end try
    end tell
end repeat
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## Gregoryen (28 Octobre 2021)

Yes parfait ça marche ! Tu gère, merci beaucoup encore pour ton aide, un génie !


----------



## zeltron54 (28 Octobre 2021)

content pour toi !


----------



## Gregoryen (28 Octobre 2021)

J'essaie de faire une dernière chose, pouvoir copier dans le presse papier tous les webloc, coller le contenu dans TextEdit, et enregistrer le fichier dans le même dossier que ceux que j'ai choisi pour le webloc.
Ca aura pour fonction de me donner un fichier texte avec toutes les URLS brutes.

J'ai réussi à le faire avec Automator mais il s'agit d'une ligne de commande, et le problème réside que je ne sait pas comment lui dire qu'il faut qu'il recherche les webloc dans le dossier précédemment choisi lors de la première étape, et comment lui dire que je veux enregistrer le fichier texte au même endroit.


----------



## zeltron54 (28 Octobre 2021)

Je ne comprend pas ce que tu veux obtenir !
Que penses-tu obtenir en copiant les webloc. Un webloc est un fichier en faisant un copié tu copie le nom du fichier !

Au final tu veux obtenir quoi? 
Un fichier RTF avec les liens (donc comme ton fichier de départ)
ou un fichier texte avec les liens en texte (mais ceux-ci ne seront pas cliquable puisque se seront du simple texte)

Dans tout les cas il ne s'agit pas d'un simple copié du contenu du fichier webloc (tu as vu son contenu dans tes copies d'écran)


----------



## Gregoryen (28 Octobre 2021)

zeltron54 a dit:


> Je ne comprend pas ce que tu veux obtenir !
> Que penses-tu obtenir en copiant les webloc. Un webloc est un fichier en faisant un copié tu copie le nom du fichier !
> 
> Au final tu veux obtenir quoi?
> ...


Ce que je compte obtenir c'est un fichier texte avec les urls brutes et non les hyperlien avec le titre du site.
Quand je copie un fichier et que je le colle dans TextEdit, j'obtiens le nom du fichier comme text.

Je pensais qu'en copiant les fichiers, puisque leurs nom c'est l'URL, et en fessant une copie dans TextEdit j'obtiendrais mes Urls brutes. J'aurais juste à rajouter le fait de supprimer le ".webloc" à la fin.

En gros j'aurais aimé qu'un nouveau fichier texte soit créé dans le dossier contenant les webloc. (Mais je compte aussi garder mon fichier texte original.)

Je souhaiterais passer de l'image de gauche à celle de droite.


----------



## zeltron54 (28 Octobre 2021)

Une première solution pour tester.
1- tu sélectionnes tous les webloc
2- tu fais un copié (cela copiera tous les noms des fichiers)
3- tu ouvres textedit et tu fais un coller

Tu devrais obtenir ce que tu veux à la nuance près que les titres ont été réduit à 200 caractères maximum.

Une autre solution sera de modifier mon script pour créer le fichier texte en même temps qu'il crée les webloc.


----------



## Gregoryen (28 Octobre 2021)

Oui justement, je sais le copier coller dans TextEdit pour avoir les liens, mais je souhaiterais justement le rajouter dans le script, pour automatiser tout ça, en supprimant ".webloc".


----------



## zeltron54 (28 Octobre 2021)

Bon je regarde pour ajouter ça en nommant ce fichier "liste des liens"


----------



## zeltron54 (28 Octobre 2021)

Essai ce script !

```
set monfichier to choose file with prompt "Sélectionnez le fichier contenant les hyperliens"
set Chemin to choose folder with prompt "Sélectionnez le dossier recvant les webloc"
open for access monfichier -- ouvre ce fichier en lecture
set vartoto to read monfichier -- lit le fichier et le met dans la variable vartoto
close access monfichier -- ferme le fichier

set hyp to "HYPERLINK"
set guil to (ASCII character 34)
set occu to hyp & " " & guil

set avant to "<?xml version=" & guil & "1.0" & guil & " encoding=" & guil & "UTF-8" & guil & "?>
<!DOCTYPE plist PUBLIC " & guil & "-//Apple//DTD PLIST 1.0//EN" & guil & " " & guil & "http://www.apple.com/DTDs/PropertyList-1.0.dtd" & guil & ">
<plist version=" & guil & "1.0" & guil & ">
<dict>
    <key>URL</key>
    <string>"

set apres to "</string>
</dict>
</plist>
"
repeat
    set vartoto to vartoto as string
    set aa to offset of occu in vartoto
    if aa = 0 then exit repeat
    set nb to aa + 11
    set lelien to ""
    repeat while character nb of vartoto is not guil
        set lelien to lelien & character nb of vartoto
        if (character nb of vartoto) = "&" then
            set lelien to lelien & "amp;"
        end if
        set nb to nb + 1
    end repeat
    
    set vartoto to characters nb thru -1 of vartoto
    set ccc to vartoto as string
    
    set chemindef to (Chemin & "liste des liens.txt") as text
    set lefichier to open for access chemindef with write permission
    write lelien & return to lefichier starting at eof
    close access lefichier
    
    
    set unlien to avant & lelien & apres
    set nbcaractere to count characters of lelien
    if nbcaractere > 200 then
        set lelien to characters 1 thru 200 of lelien as string
    end if
    set lenom to characters 9 thru -1 of lelien as string
    tell application "TextEdit"
        set lenom to lenom & ".webloc"
        set chemindef to ((Chemin as text) & lenom) as text
        try
            set lefichier to open for access chemindef with write permission
            set eof lefichier to 0 -- pour effacer le fichier existant
            write unlien & return to lefichier starting at eof
            close access lefichier
        on error e
            display dialog "Le fichier «lien X.webloc n'a pu être créé" & return & return & "Verifiez que le repertoire existe et qu'il a des droits en écriture" with icon 0 buttons "Annuler" default button 1
        end try
    end tell
end repeat
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## Gregoryen (28 Octobre 2021)

Nickel, ça marche très bien ! Merci mille fois !


----------



## zeltron54 (28 Octobre 2021)

Pas de problème !

Le plus difficile est souvent de comprendre ce que la personne veux obtenir ! LOL !


----------



## Gregoryen (28 Octobre 2021)

zeltron54 a dit:


> Pas de problème !
> 
> Le plus difficile est souvent de comprendre ce que la personne veux obtenir ! LOL !


Oui je comprends, quand on parle à l'écris c'est dur de se faire comprendre qu'a l'oral en montrant les choses.
Après j'essaie énormément de faire par moi même avant de poster, mais parfois je me fais des noeuds au cerveau lol.


----------



## zeltron54 (28 Octobre 2021)

J'ai oublié de préciser, dans le fichier texte, un clic droit sur un lien et choisir ouvrir l'URL permet également d'ouvrir le navigateur...


----------



## Gregoryen (28 Octobre 2021)

Génial au top !


----------



## zeltron54 (29 Octobre 2021)

@Gregoryen 

Bonjour,
Je viens de me rendre compte que dans le fichier texte j'avais copié les liens modifiés pour les webloc, au lieu de mettre les liens brut.
J'ai fais la modif pour rectifier ça !
Désolé pour ce bug !


```
set monfichier to choose file with prompt "Sélectionnez le fichier contenant les hyperliens"
set Chemin to choose folder with prompt "Sélectionnez le dossier recvant les webloc"
open for access monfichier -- ouvre ce fichier en lecture
set vartoto to read monfichier -- lit le fichier et le met dans la variable vartoto
close access monfichier -- ferme le fichier

set hyp to "HYPERLINK"
set guil to (ASCII character 34)
set occu to hyp & " " & guil

set avant to "<?xml version=" & guil & "1.0" & guil & " encoding=" & guil & "UTF-8" & guil & "?>
<!DOCTYPE plist PUBLIC " & guil & "-//Apple//DTD PLIST 1.0//EN" & guil & " " & guil & "http://www.apple.com/DTDs/PropertyList-1.0.dtd" & guil & ">
<plist version=" & guil & "1.0" & guil & ">
<dict>
    <key>URL</key>
    <string>"

set apres to "</string>
</dict>
</plist>
"
repeat
    set vartoto to vartoto as string
    set aa to offset of occu in vartoto
    if aa = 0 then exit repeat
    set nb to aa + 11
    set lelien to ""
    set lientext to ""
    repeat while character nb of vartoto is not guil
        set lelien to lelien & character nb of vartoto
        set lientext to lientext & character nb of vartoto
        if (character nb of vartoto) = "&" then
            set lelien to lelien & "amp;"
        end if
        set nb to nb + 1
    end repeat
    
    set vartoto to characters nb thru -1 of vartoto
    set ccc to vartoto as string
    
    set chemindef to (Chemin & "liste des liens.txt") as text
    set lefichier to open for access chemindef with write permission
    write lientext & return to lefichier starting at eof
    close access lefichier
    
    
    set unlien to avant & lelien & apres
    set nbcaractere to count characters of lelien
    if nbcaractere > 200 then
        set lelien to characters 1 thru 200 of lelien as string
    end if
    set lenom to characters 9 thru -1 of lelien as string
    tell application "TextEdit"
        set lenom to lenom & ".webloc"
        set chemindef to ((Chemin as text) & lenom) as text
        try
            set lefichier to open for access chemindef with write permission
            set eof lefichier to 0 -- pour effacer le fichier existant
            write unlien & return to lefichier starting at eof
            close access lefichier
        on error e
            display dialog "Le fichier «lien X.webloc n'a pu être créé" & return & return & "Verifiez que le repertoire existe et qu'il a des droits en écriture" with icon 0 buttons "Annuler" default button 1
        end try
    end tell
end repeat
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## Gregoryen (29 Octobre 2021)

Merci ! Je fais la mise à jour du fichier !


----------



## Gregoryen (29 Octobre 2021)

J'ai donc essayé le dernier script et j'ai ce message d'erreur à la fin :






EDIT: Je viens de trouver, j'ai enlever des liens dans la liste et ça à marché. J'ai juste à augmenter le nombre de caractères ?


----------



## zeltron54 (29 Octobre 2021)

Je suppose qu’il doit y avoir un problème pour le nom, nombre de caractères, il forme le nom en prenant le lien à partir du neuvième caractère du lien !  Quel est le le lien qui pose problème ?

Édit: il peut aussi y avoir un caractère interdit dans les noms style « : » ou autre


----------



## Gregoryen (29 Octobre 2021)

Oui je vois, j'ai trouvé, il s'agit d'une recherche Google.

Pourtant la recherche est assez simple, je ne comprend pas pourquoi cela me donne un lien à rallonge :



			https://www.google.com/search?q=PIED+DE+LIT+CARR%C3%89+17+CM+noir&amp;client=safari&amp;rls=en&amp;sxsrf=AOaemvIRFswBi4A4JxwfvQdo_FzK1EHCSA:1633810777056&amp;source=lnms&amp;sa=X&amp;ved=0ahUKEwjQ_Pu3k77zAhUFSxoKHQfkCG84PBD8BQjNBygA&amp;biw=1981&amp;bih=1239&amp;dpr=1


----------



## zeltron54 (29 Octobre 2021)

Comme dit dans mon édit, il y a le caractère « : » s’il faut je modifierai le script pour qu’il vérifie s’il y a des caractères interdit.. .  Là je n’est pas accès à l’ordi! Je regarde ça à l’occasion !


----------



## Gregoryen (29 Octobre 2021)

Ça marche pas de souci, merci beaucoup encore pour ton aide ! Passe un bon weekend


----------



## zeltron54 (30 Octobre 2021)

Bonjour,

Le seul caractère qui est interdit dans les noms de fichier sur macOS est ":"
Ce nouveau script remplace les ":" par "." dans le nom du fichier.



```
set monfichier to choose file with prompt "Sélectionnez le fichier contenant les hyperliens"
set Chemin to choose folder with prompt "Sélectionnez le dossier recvant les webloc"
open for access monfichier -- ouvre ce fichier en lecture
set vartoto to read monfichier -- lit le fichier et le met dans la variable vartoto
close access monfichier -- ferme le fichier

set hyp to "HYPERLINK"
set guil to (ASCII character 34)
set occu to hyp & " " & guil

set avant to "<?xml version=" & guil & "1.0" & guil & " encoding=" & guil & "UTF-8" & guil & "?>
<!DOCTYPE plist PUBLIC " & guil & "-//Apple//DTD PLIST 1.0//EN" & guil & " " & guil & "http://www.apple.com/DTDs/PropertyList-1.0.dtd" & guil & ">
<plist version=" & guil & "1.0" & guil & ">
<dict>
    <key>URL</key>
    <string>"

set apres to "</string>
</dict>
</plist>
"
repeat
    set vartoto to vartoto as string
    set aa to offset of occu in vartoto
    if aa = 0 then exit repeat
    set nb to aa + 11
    set lelien to ""
    set lientext to ""
    set lenom to ""
    repeat while character nb of vartoto is not guil
        set lelien to lelien & character nb of vartoto
        set lientext to lientext & character nb of vartoto
        if (character nb of vartoto) = "&" then
            set lelien to lelien & "amp;"
        end if
        if (character nb of vartoto) = ":" then
            set lenom to lenom & "."
        else
            set lenom to lenom & character nb of vartoto
        end if
        set nb to nb + 1
    end repeat
    
    set vartoto to characters nb thru -1 of vartoto
    set ccc to vartoto as string
    
    set chemindef to (Chemin & "liste des liens.txt") as text
    set lefichier to open for access chemindef with write permission
    write lientext & return to lefichier starting at eof
    close access lefichier
    
    set unlien to avant & lelien & apres
    set nbcaractere to count characters of lenom
    if nbcaractere > 200 then
        set lenom to characters 1 thru 200 of lenom as string
    end if
    set lenom to characters 9 thru -1 of lenom as string
    tell application "TextEdit"
        set lenom to lenom & ".webloc"
        set chemindef to ((Chemin as text) & lenom) as text
        try
            set lefichier to open for access chemindef with write permission
            set eof lefichier to 0 -- pour effacer le fichier existant
            write unlien & return to lefichier starting at eof
            close access lefichier
        on error e
            display dialog "Le fichier «lien X.webloc n'a pu être créé" & return & return & "Verifiez que le repertoire existe et qu'il a des droits en écriture" with icon 0 buttons "Annuler" default button 1
        end try
    end tell
end repeat
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## Gregoryen (30 Octobre 2021)

Hé ben je crois qu'on est bon la ! J'ai testé avec un gros fichier, beaucoup de liens et des recherches Google, tout fonctionne à merveille ! 

Merci beaucoup du temps passé à mon problème ! Passe un bon week-end !


----------



## zeltron54 (30 Octobre 2021)

merci content pour toi et bon week-end également !


----------



## Gregoryen (2 Novembre 2021)

Heyyy ! 
Je reviens car j'ai trouvé une petite astuce et je voudrais juste compléter le forum.

Alors comme je l'ai dit au début, j'étais en train de faire une clean install de macOS au moment où j'ai fait le topic, donc je n'avais pas encore tout reconfiguré.

Je fais toujours un raccourci dans les préférences système, pour que lorsque je copie du contenu, cela me le colle et adapte le style dans TextEdit. Au lieu de faire le raccourci d'origine, je fais directement ⌘ + V.

En refaisant mes réglages, j'ai copié collé du contenu contenant des liens hypertextes. Et quelle fut ma stupeur lorsque j'ai vu qu'il y avait le nom de l'onglet et sur la ligne suivante, le lien brut ! 
Ça ma fait tilt, et j'ai compris que c'était grâce au style, alors qu'avant cela me donnais des hyperliens sans saut de ligne.

En fait j'avais complètement oublié que j'avais fait ces raccourcis dans plusieurs applications comme TextEdit et d'autres, et comme j'étais en train de tout réinstaller j'avais trop d'informations en tête.

C'est pour ça qu'avant j'avais une facilité a obtenir des liens bruts ^^

Alors après par rapport au script, ça peut aussi le faciliter ou l'alléger, enfin je voulais partager l'info ça servira toujours !


----------

