# Extraire le texte du Lecteur dans Safari



## double mike (4 Octobre 2018)

Bonjour,

Je n'ai pas trouvé de sujet similaire, sauf erreur.

Je voudrais à partir d’une liste d’URL dans un dossier (2 URL pour commencer) , les ouvrir dans Safari, actionner le lecteur, et exporter l’ensemble dans Text Edit. Avec Automator.

Je fais :

Obtenir les adresses web indiquées, puis Afficher les pages Web, puis Obtenir le texte d’une page et enfin Créer un fichier texte.

Résultat :

J’obtiens un fichier texte complet qui contient toute la page (et non pas celui fourni dans le lecteur), et le second texte n’apparaît pas.

Peut-être existe-t-il un script spécifique pour extraire le texte du Lecteur ?

Merci à vous.


----------



## zeltron54 (5 Octobre 2018)

Bonjour, 
Pour avoir ce que tu demandes il faut activer le lecteur de safari avant de récupérer le texte.
Donc:  Obtenir les adresses web indiquées, puis Afficher les pages Web, Exécuter un applescript, obtenir le contenu du presse papier, créer un fichier texte.

dans l'action exécuter un applescript tu mets : (je te mets la totalité du contenu y compris ce qui existe déja)


```
on run {input, parameters}
   
    tell application "Safari"
        activate
        delay 2
        tell application "System Events"
            tell process "Safari"
                delay 1
                click menu item 12 of menu 1 of menu bar item "Présentation" of menu bar 1
                delay 1
            end tell
           
            tell application "System Events"
                keystroke "a" using command down
                delay 0.5
                keystroke "c" using command down
                delay 0.5
            end tell
        end tell
    end tell
   
    return input
end run
```


----------



## double mike (5 Octobre 2018)

Merci à toi pour cette prompte réponse.
J'ai écrit le processus comme indiqué (voir image) ; je n'obtiens au final qu'un fichier SimpleText avec en en-tête la liste des URL ainsi que le copié collé du contenu de la dernière URL seulement (voir fichier texte joint en image).
Normalement je ne dois rien mettre à la place de {input} et {parameters}
Est-ce qu'il manque quelque chose ?


----------



## zeltron54 (5 Octobre 2018)

Le fait de mettre plusieurs adresses dans la première action te pose le problème.

Le programme exécute bien tes actions, mais il ne peut avoir qu'une seule page activée, (la dernière ouverte) donc il ouvre le lecteur sur cette page et récupère le contenu.

Edit: pour comprendre essai avec 1 seule adresse URL.


----------



## double mike (5 Octobre 2018)

Ah !
Le script perd alors de son intérêt, parce que c'est aussi rapide de faire un copié collé à la main.
N'y aurait pas moyen de faire une boucle et de faire un script pour un nombre fixe d'URL (par exemple ici 4) que je rentrerai en une fois ?


----------



## zeltron54 (5 Octobre 2018)

Le plus facile pour moi est d'abandonner automator et de tout faire dans un apple script.
il faut mettre tes liens url dans un fichier texte : 1 par ligne.
Le script te demande de choisir ce fichier, puis il l'analyse te te met autant de fichiers texte que d'url sur le bureau nommés Fichier_url_  suivi d'un numéro d'ordre.

La version ci dessous ne met qu'un fichier texte (sans images).


```
tell application "Finder"
    set laliste to choose file with prompt "Sélectionnez le fichier liste"
    my inspecter(laliste)
end tell

on inspecter(liste1)
   
    open for access liste1
    read liste1
    set tout_le_fichier to the result
    close access liste1
    set nb to count paragraph of tout_le_fichier
   
    repeat with i from 1 to nb
        try
            tell application "Finder"
                set une_ligne to paragraph i of tout_le_fichier
               
                tell application "Safari"
                    activate
                    make new document with properties {URL:une_ligne}
                    delay 2
                    tell application "System Events"
                        tell process "Safari"
                            delay 1
                            click menu item 12 of menu 1 of menu bar item "Présentation" of menu bar 1
                            delay 1
                        end tell
                       
                        tell application "System Events"
                            keystroke "a" using command down
                            delay 0.5
                            keystroke "c" using command down
                            delay 0.5
                        end tell
                    end tell
                    close windows
                end tell
                set lapage to text of (the clipboard)
               
                set lelog to open for access (path to desktop folder as text) & "Fichier_url_" & i & ".txt" as text with write permission
                write lapage & return to lelog starting at eof
                close access lelog
               
               
            end tell
        end try
    end repeat
end inspecter

tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## double mike (5 Octobre 2018)

Merci.

J’ai mis le script dans Automator (commande Exécuter un script Applescript) ;

J’ai suivi la suggestion d’Automator à la ligne 5 et remplacé on inspecter par end inspecter.

Quand je relance, Automator s’arrête toujours sur la même ligne et me dit (« erreur de syntaxe ») : « « identificateur » ne peut pas se trouver après « identificateur » ».

Alors là, je bloque.

Est-ce que tu peux tester ton script (ou le retester) pour voir si il y a (ou pas) des erreurs de syntaxe.

Pour te faire gagner du temps j’aurais voulu mettre le fichier texte avec la liste des URL, ça ne marche pas ici. Je te l’écris en dessous pour que tu la récupères :


https://www.igen.fr/accessoires/jays-optimise-ses-nouveaux-ecouteurs-pour-chaque-systeme-106283

https://www.lesnumeriques.com/casque-audio/koss-porta-pro-p1099/test.html

https://www.lesnumeriques.com/casqu...e-nomade-a-reduction-bruit-active-n36651.html

https://lexpansion.lexpress.fr/high...uce-willis-n-attaquera-pas-apple_1345638.html

Prends ton temps ; cela peut atteindre jusqu’à Lundi si besoin.

@ bientôt,


----------



## zeltron54 (5 Octobre 2018)

J'ai tester mon script et il fonctionne..

J'ai dit ne pas prendre automator.

Tu ouvres l'éditeur de script qui est dans applications--> utilitaires et tu colle dans la fenêtre le script.
C'est tout, tu n'as plus qu'a cliquer sur exécuter.

Dis moi, si de cette façon, ça fonctionne,   chez moi pas de problème.


----------



## double mike (5 Octobre 2018)

J’ouvre l’éditeur de script ; il me demande ma liste ; il mouline et affiche des pages web avec la mention :




Il ne s’arrête pas ; je suis obligé de forcer à quitter l’application ; et j’obtiens une collection de fichiers Fichier_url_n.txt. 

Ce fichier comporte la liste des liens + un bout de code qui précisément correspond à ce qui se trouve dans la barre d’adresse quand les pages Safari s’affichent :
https://www.igen.fr/accessoires/jays-optimise-ses-nouveaux-ecouteurs-pour-chaque-systeme-106283
https://www.lesnumeriques.com/casque-audio/koss-porta-pro-p1099/test.html
https://www.lesnumeriques.com/casqu...e-nomade-a-reduction-bruit-active-n36651.html
https://lexpansion.lexpress.fr/high...uce-willis-n-attaquera-pas-apple_1345638.html
{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470

On va y arriver, il manque juste un petit quelque chose.

@ tout de suite.


----------



## zeltron54 (5 Octobre 2018)

Ton fichier texte ne doit contenir QUE 1 adresse url par ligne, et pas de lignes vides.
ces adresse url doivent arriver sur la page sans demande de confirmation de cookies ou autres et quand on est sur cette pages on doit avec accès au menu "afficher le lecteur".
tes  2 adresses ci-dessous fonctionnent sans problème :

https://www.igen.fr/accessoires/jays-optimise-ses-nouveaux-ecouteurs-pour-chaque-systeme-106283
https://lexpansion.lexpress.fr/high...uce-willis-n-attaquera-pas-apple_1345638.html

Les 2 autres demandent des confirmations par popup.


----------



## zeltron54 (5 Octobre 2018)

J'ai cru comprendre que tu voulais mettre tous les fichiers récupérés dans un seul et même fichier texte.
Une légère modification du script pour obtenir ça.


```
tell application "Finder"
    set laliste to choose file with prompt "Sélectionnez le fichier liste"
    my inspecter(laliste)
end tell

on inspecter(liste1)
   
    open for access liste1
    read liste1
    set tout_le_fichier to the result
    close access liste1
    set nb to count paragraph of tout_le_fichier
   
    repeat with i from 1 to nb
        try
            tell application "Finder"
                set une_ligne to paragraph i of tout_le_fichier
               
                tell application "Safari"
                    activate
                    make new document with properties {URL:une_ligne}
                    delay 2
                    tell application "System Events"
                        tell process "Safari"
                            delay 1
                            click menu item 12 of menu 1 of menu bar item "Présentation" of menu bar 1
                            delay 1
                        end tell
                       
                        tell application "System Events"
                            keystroke "a" using command down
                            delay 0.5
                            keystroke "c" using command down
                            delay 0.5
                        end tell
                    end tell
                    close windows
                end tell
                set lapage to text of (the clipboard)
               
                set lelog to open for access (path to desktop folder as text) & "Fichier_url" & ".txt" as text with write permission
                write lapage & return to lelog starting at eof
                close access lelog
               
               
            end tell
        end try
    end repeat
end inspecter

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## double mike (5 Octobre 2018)

J’ai fait une pause repas. Je réponds d’abord à ton courriel précédent.
Je t’expose plus en détail le sens de ma démarche.

Ensuite, je vais tester le nouveau script et te recontacte.
------
Même scénario, mêmes pages de Safari ; je viens de tester sous 10.13.6 avec mon portable.

Je suis d’ordinaire sous 10.11.6 :




et il n’y a pas d’icône du lecteur dans la barre d’adresse : 





Peut-être y-a-t-il un quiproquo dès le début : je veux, au final, avoir un seul fichier texte qui regroupe le contenu de tous les lecteurs de chacune des pages web initiales.

Que j’ai un fichier par page ne me gênerait pas, car je sais faire un script sous Automator pour combiner des textes en un seul ; je peux même utiliser Word avec sa fonction Merge (de mémoire).

Non, ce qui me ferait gagner du temps, serait de ne pas ouvrir les pages web, déclencher le lecteur, copier son contenu le coller dans un fichier texte. Après pour le reste tout va plus vite je peux le faire à la main. Convertir le fichier texte en .mobi le format des liseuses Amazon.

Je fais une revue de presse chaque jour sur une quarantaine de sites en moyenne, cela me prend environ une heure à survoler et sélectionner les pages qui m’intéressent car je ne les lis pas sur le moment. Ce que je veux gagner comme temps c’est une à deux heures chaque 8 jours pour convertir ces URL.

Je teste le nouveau script.


----------



## double mike (5 Octobre 2018)

Non hélas même chose. J’ai d’un côté l’éditeur qui tourne sans fin en ouvrant les mêmes pages aveugles, je dois forcer à quitter : à ce moment j’ai le bouton « Salut » qui apparaît, mais le fichier qui en ressort est une page avec les quatre liens et c’est tout.


----------



## zeltron54 (6 Octobre 2018)

Ce que tu décris est le résultat de mauvaises adresse dans le fichier texte choisi au départ. Adresse non valide ou pas trouvée...
Essai avec une seule adresse dans le fichier.
https://www.igen.fr/accessoires/jays-optimise-ses-nouveaux-ecouteurs-pour-chaque-systeme-106283

Et j'y pense , tu as bien un fichier TEXTE : txt, pas rtf ou autre ?
Tu le crées avec quel logiciel ?  Fait le avec TextEdit et n'oubli pas de choisir fichier texte, pas rtf.

De plus, il n'y a pas à forcer à quitter. Lorsque le bouton salut apparaît, il suffit de cliquer dessus


----------



## double mike (6 Octobre 2018)

Me revoilà. Cela s’améliore un petit peu.

J’ai donc effectivement changé le format de ma liste (qui était en .rtf) en .txt. Créé avec TextEdit bien sûr.

Le processus est plus fluide. Le script se termine bien avec le bouton salut.

1/ Ce que j’obtiens avec une liste d’un seul lien :

La page complète apparaît dans le fichier qui en sort ; mais je voulais simplement le texte tel qu’il est produit par le Lecteur de Safari. La commande vers le Lecteur n’apparaît pas dans le Script sauf erreur.

2/ En plus il y a un conflit au niveau du Presse Papier : quand je choisis le lien https://www.igen.fr/accessoires/jays-optimise-ses-nouveaux-ecouteurs-pour-chaque-systeme-106283, le fichier sortant est celui de https://www.lesnumeriques.com/casque-audio/koss-porta-pro-p1099/test.html.

3/ Mais quand je choisis https://www.lesnumeriques.com/casque-audio/koss-porta-pro-p1099/test.html, le fichier sortant est bien le texte de https://www.lesnumeriques.com/casque-audio/koss-porta-pro-p1099/test.html.

4/ Quand je choisis le fichier texte contenant 4 URL, ressortent quatre fichiers identiques avec le contenu de la même page dupliquée donc 4 fois (le premier : https://www.lesnumeriques.com/casque-audio/koss-porta-pro-p1099/test.html)


Je vais fabriquer un .pdf dans la soirée qui indique dans le détail ce que je veux exactement.


----------



## double mike (7 Octobre 2018)

Bonjour
Voici donc le cahier des charges que je m’étais fixé. Les questions que je vous ai posées ne concernent que la première partie (« Dans Safari et TextEdit »), la seconde partie étant relativement rapide à la main mais, sans doute plus compliquée pour la mettre en script.
Même si vous ne donnez pas suite, vous avez déjà passé beaucoup de temps, vous aurez au moins une idée de ce je voulais exactement. 
Je pense passer par un prestataire dans ce cas ; en tous cas pour la seconde partie ; peut-être en connaissez-vous même un ?

https://michel-chevallier.net/redacteur_web/cahier


----------



## baron (7 Octobre 2018)

double mike a dit:


> Bonjour
> Voici donc le cahier des charges que je m’étais fixé.


R/ En page 7 :
« _Le passage par Word, à ce stade, est nécessaire car Calibre ne prend pas les fichiers .rtf.
Je procède à deux ajustements :
1/ Je mets l’ensemble du document en corps 14_
_2/ *J’aligne les paragraphes en fer à droite*._ »​D'après ton illustration, c'est *fer à gauche*. En composition au plomb, ça voulait dire qu'on composait le texte en s'appuyant à gauche de la ligne et qu'on ajoutait des blancs à droite pour compléter la ligne.


----------



## double mike (7 Octobre 2018)

Bien sûr Baron c'est une étourderie. J'ai rectifié. Merci pour la relecture.


----------



## zeltron54 (7 Octobre 2018)

Bonjour,
Je viens de lire ton "cahier des charges", et une chose m'interpelle, pourquoi transiter par TextEdit et ne pas mettre dircetement tes copier coller dans un document word.

Mais pour le moment, je me penche sur le problème, pourquoi ça fonctionne chez moi et pas chez toi. J'ai 3 idées pour cela :
1 - Quel est ta version de mac OS et surtout de Safari (chez moi mac OS 10.13.6 et safari 12.0) voir peut-être une incompatibilité de version ?
2 - Ton éditeur de script est il bien autoriser dans les paramètre de sécurité ? Pour ça voir dans Préférences Système--> Sécurité et confidentialité-->Onglet confidentialité > sélectionner à gauche Accessibilité > dans la fenêtre de droite  éditeur de script > coché.
Si pas autorisé il n'est pas possible d'activer le lecteur dans safari.
3 -  Recontrôle bien ton fichier contenant tes adresses URL qui doit être un fichier TEXTE avec 1 seule adresse par ligne, et pas de ligne vide. Ce fichier peut être confectionné dans TextEdit avec un document TEXTE, ou même dans excel avec dans la colonne A 1 adresse par cellule et enregistrer ce fichier au format  (texte séparateur : tabulation).


J'ai donc modifier le script pour qu'il t'enregistre directement un fichier word (Mondoc.docx) sur le bureau.


```
tell application "Finder"
    set laliste to choose file with prompt "Sélectionnez le fichier liste"
    my inspecter(laliste)
end tell

on inspecter(liste1)
   
    open for access liste1
    read liste1
    set tout_le_fichier to the result
    close access liste1
    set nb to count paragraph of tout_le_fichier
    tell application "Microsoft Word"
        set mondoc to make new document
        activate
    end tell
    repeat with i from 1 to nb
        try
            tell application "Finder"
                set une_ligne to paragraph i of tout_le_fichier
               
                tell application "Safari"
                    activate
                    make new document with properties {URL:une_ligne}
                    delay 2
                    tell application "System Events"
                        tell process "Safari"
                            delay 1
                            click menu item 12 of menu 1 of menu bar item "Présentation" of menu bar 1
                            delay 1
                        end tell
                       
                        tell application "System Events"
                            keystroke "a" using command down
                            delay 0.5
                            keystroke "c" using command down
                            delay 0.5
                        end tell
                    end tell
                    close windows
                end tell
                set lapage to text of (the clipboard)
                tell application "Microsoft Word"
                    activate
                   
                    insert text une_ligne & return & lapage & return & return & return at end of text object of active document
                    save as active document file name (path to desktop folder) & "mondoc.docx"
                end tell
               
            end tell
        end try
    end repeat
end inspecter

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## zeltron54 (7 Octobre 2018)

Bonsoir,
Sous réserve que tu ais résolu le point 2 de mon message précédent, je t'ai refais un script qui:
Te demande de sélectionner le dossier ou sont les fichiers url résultant du glissé déposé depuis la barre d'adresse de safari.
Il ouvre word et crée un nouveau document Mondoc.
Il ouvre safari (programme par défaut pour accés internet)
Ouvre les liens url, active le lecteur copie la page et  colle dans le document word l'adresse url, la page  et une suite de quelques tirets.
boucle sur tous les fichiers contenus dans le dossier.
Sélectionne le tout met le texte à la taille 14 et enregistre le fichier sur le bureau au format RTF, qui ouvert dans textEdit est dépourvu de images.

chez moi tout ça fonctionne sans problème. ci dessous le code.
J'attends tes remarques pour modifications éventuelles.


```
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers URL"
    my inspecter(chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        set les_fichiers to files of un_dossier
       
        tell application "Microsoft Word"
            set mondoc to make new document
            activate
        end tell
        try
            repeat with chaque_fichier in les_fichiers
                tell application "Safari"
                    activate
                    open chaque_fichier
                    delay 1
                    set lelien to the URL of the front document
                    set the clipboard to lelien
                end tell
               
               
                tell application "Microsoft Word"
                    activate
                    tell application "System Events" to keystroke "v" using command down
                end tell
               
                tell application "Safari"
                    activate
                    tell application "System Events"
                        tell process "Safari"
                            delay 1
                            click menu item 12 of menu 1 of menu bar item "Présentation" of menu bar 1
                            delay 1
                        end tell
                    end tell
                    tell application "System Events"
                        keystroke "a" using command down
                        delay 0.5
                        keystroke "c" using command down
                        delay 0.5
                    end tell
                    close windows
                end tell
               
                tell application "Microsoft Word"
                    activate
                   
                    tell application "System Events" to keystroke "v" using command down
                    set the clipboard to "          -------------------------------------" & return
                    tell application "System Events" to keystroke "v" using command down
                   
                end tell
               
            end repeat
        end try
    end tell
    tell application "Microsoft Word"
        activate
        tell application "System Events" to keystroke "a" using command down
        set font size of font object of selection to 14
        save as active document file name (path to desktop folder) & "mondoc.rtf" file format format rtf
        close windows
    end tell
end inspecter

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## double mike (8 Octobre 2018)

Bonjour,

J’ai coché l’éditeur de script dans le panneau de confidentialité.

J’ai testé les deux scripts envoyés aujourd’hui sur deux machines.

L’une sous 10.11.6 et Safari 11.1.2 (MacPro) et l’autre (MBA) sous 10.13..6 et Safari 12.0

4 fenêtres d’erreur : 

Le Mac Pro : 

à 11 h 27


à 20 h 29



Le MacBook Air 

à 11 h.29


et 20 h 29

Je revérifie demain n’ayant eu que peu de temps cette nuit.


Merci pour ta patience et @ demain


----------

