Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[AS] Coup de pouce

26 réponses
Avatar
benoit
Bonjour,


J'ai besoin de resortir mon bon AS et je suis un paumé après tant
d'années. J'ai un fichier contenant du texte (des définitions) et je
souhaite générer un fichier par entrée.

exemple :

ACCENT V.Arçon.
ACCROCHE-C¼URS Favoris (Vidocq). -- Allusion aux accroche-coeurs
féminins, petites mèches contournées et plaquées prétentieusement sous
la tempe.
ACCROCHER Mettre au Mont de Piété, c'est-à-dire au clou. Ce dernier
mot explique le verbe. -- « Ah ! les biblots sont accrochés.» -- De
Montépin.
ACCROCHER Consigner un soldat, c'est-à-dire l'accrocher à son
quartier, l'empêcher d'en sortir.

Il y a une tabulation entre le mot (ou groupe de mots) qui servira de
nom de fichier et sa définition. Mais il y a des mots avec plusieurs
définitions et je souhaite avoir un fichier (texte) différent (genre
ACCROCHER 1, ACCROCHER 2...)

Je suis paumé avec le fait que je veux utiliser la tabulation comme
séparateur (au lieu de l'espace) et qu'il faille aussi séparer par
paragraphe. Un coup de pouce ?


D'avance merci


P.S. je suis en train de me (re)concocter un dictionnaire d'argot qui
utilise une dizaine de sources différentes et Spotlight est idéal pour
rechercher des définitions ou synonymes dans une base de fichiers avec
un fichier par mot.

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]

10 réponses

1 2 3
Avatar
benoit
Joseph-B wrote:

Benoit a écrit,

> > Alors bon courage ;-)
>
> Pourquoi ? Je boucle en prenant le document au premier plan et quand il
> n'y en a plus... j'ai une erreur et je sors ;)

Heu, il n'y avait pas de scepticisme narquois dans ma remarque mes
encouragements allaient l'ensemble de ton projet qui a l'iar assez
ambitieux. C'est tout.



J'ai de mauvaises mouvelles pour toi et moi ;) cf. plus bas

> Oui, mais pourquoi l'avant dernier ? Quel est le dernier ? Tu ne
> supprimes pas le chiffre ?

La présence du chiffre ayant été implicitement détectée plus haut, cette
commande sert justement à ne garder du nom précédent (stocké en tampon)
que la partie originale en écartant l'index, qui sera incrémenté à part.

ACCROCHER 2
le premier mot est ACCROCHER
l'avant dernier mot est ACCROCHER
Du premier à l'avant dernier inclus = ACCROCHER

il ne reste plus qu'à faire <last word (ici c'est 2) as integer +1> pour
avoir 3
on réassemble le tout avec les TID réglés à /space/
et ça donne ACCROCHER 3.



Et si j'en suis à 10 ?


Sinon, je viens de retrouver sur mon disque un dossier qui contient pas
loin de 50 000 pages html avec des expressions et des « traductions ».

Je n'arrive pas à transcoder les pages html en .txt, je travaille dessus
puisque Textedit sait les ouvrir en .rtf, puis les modifier en txt. Mais
je n'ai rien trouver dans le dictionnaire de TextEdit qui permette de le
faire. Ouvrir une html et l'enregistrer au format texte (en rajoutant
trois ou quatre r à la fin pour être à l'aise plus tard quand je
reformate les infos).

Si j'arrive à le faire, je suis sûr de pouvoir avoir un « repeat with
every file in selection » qui me transcode le tout en txt puis fais des
actions pour ramener ça dans un seul fichier que je nettoie avant de
l'exploser.

Avec ma dizaine de sources d'info et la redondance qui en découle (même
mot/nom de fichier mais plusieurs sources) j'ai plutôt envie de n'avoir
qu'une seule entrée (le moins possible), avec plusieurs définitions
dedans plutôt que plusieurs fichiers avec une seule et même définition.
Si le nom du fichier existe, je rajoute ce que j'ai à la suite. Ce sera
mieux que numéroter, et dans l'aperçu de SpotLight j'aurai une preview
plus intéressante. Ce n'est pas top de faire défiler les fichiers et
voir la même chose.

La barre ne cesse de grimper :)

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
Avatar
josephb
Benoit a bien voulu nous faire partager ses réflexions sur ce
passionnant sujet :


Et si j'en suis à 10 ?



pas de souci avec le deuxième script.
J'ai imaginé que l'on a 12 fois la ligne <A B C blabla N> ( N = de 1 à
12)

ça a créé 12 fichiers txt, du premier nommé /A B C/
au 12e nommé /A B C 12/ avec leurs contenus respectifs.
Mais au vu de la suite, ça n'a plus d'importance…

Sinon, je viens de retrouver sur mon disque un dossier qui contient pas
loin de 50 000 pages html avec des expressions et des « traductions ».

Je n'arrive pas à transcoder les pages html en .txt, je travaille dessus
puisque Textedit sait les ouvrir en .rtf, puis les modifier en txt. Mais
je n'ai rien trouver dans le dictionnaire de TextEdit qui permette de le
faire.



Ton amie est la commande shell <textutil>
va lire le man de textutil.
mais intégré dans un script AppleScript ça donne ça :
Pour les besoins de la démonstration j'ai exporté les signets de Safari
sur le bureau, au format .html
∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
set myHtmlFile to "/Users/macpro/Desktop/Signets Safari.html"
do shell script ("textutil -convert txt " & quoted form of myHtmlFile)
∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
L'original n'est pas écrasé, un fichier .txt de même nom est créé avec
les données débarrssées des balise html

Si j'arrive à le faire, je suis sûr de pouvoir avoir un « repeat with
every file in selection » qui me transcode le tout en txt puis fais des
actions pour ramener ça dans un seul fichier que je nettoie avant de
l'exploser.



Voilà, tu as l'outil pour, maintenant il te reste à faire ta cuisine ;-)


Avec ma dizaine de sources d'info et la redondance qui en découle (même
mot/nom de fichier mais plusieurs sources) j'ai plutôt envie de n'avoir
qu'une seule entrée (le moins possible), avec plusieurs définitions
dedans plutôt que plusieurs fichiers avec une seule et même définition.
Si le nom du fichier existe, je rajoute ce que j'ai à la suite. Ce sera
mieux que numéroter, et dans l'aperçu de SpotLight j'aurai une preview
plus intéressante. Ce n'est pas top de faire défiler les fichiers et
voir la même chose.



Si tu as plusieurs définitions donc plusieurs paragraphes par entrée, le
script que je t'ai fait ne marche plus…
Non seulement parce que plusieurs paragraphes pour un nom, mais aussi
parce que chaque définition va être introduite par une ou plusieurs
tabulations, dans un souci d'alignement et lisibilité, non ?

La barre ne cesse de grimper :)



Oui, ilfaut que tu mettes ça bien au carré avant de te lancer, et
préparer le/les scripts qui vont t'aider à automatiser ces tâches.

--
J. B.
Damned, l'ana-désintégrateur adaptatif ne peut pas homo-bouillir la
bulbo-sonde interstellaire ! Nous allons être obligés d'aéro-compresser
le vide cythérien...
Avatar
benoit
Joseph-B wrote:

> Sinon, je viens de retrouver sur mon disque un dossier qui contient pas
> loin de 50 000 pages html avec des expressions et des « traductions ».
>
> Je n'arrive pas à transcoder les pages html en .txt, je travaille dessus
> puisque Textedit sait les ouvrir en .rtf, puis les modifier en txt. Mais
> je n'ai rien trouver dans le dictionnaire de TextEdit qui permette de le
> faire.

Ton amie est la commande shell <textutil>
va lire le man de textutil.
mais intégré dans un script AppleScript ça donne ça :
Pour les besoins de la démonstration j'ai exporté les signets de Safari
sur le bureau, au format .html
∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
set myHtmlFile to "/Users/macpro/Desktop/Signets Safari.html"
do shell script ("textutil -convert txt " & quoted form of myHtmlFile)
∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
L'original n'est pas écrasé, un fichier .txt de même nom est créé avec
les données débarrssées des balise html



Merci beaucoup, un cmd-shift-L a immédiatement été effectué.

> Si j'arrive à le faire, je suis sûr de pouvoir avoir un « repeat with
> every file in selection » qui me transcode le tout en txt puis fais des
> actions pour ramener ça dans un seul fichier que je nettoie avant de
> l'exploser.

Voilà, tu as l'outil pour, maintenant il te reste à faire ta cuisine ;-)



M'en parle pas, je viens de terminer mon cheesecake. Il sera prêt demain
pour le petit déjeuner. Heuresement que la semaine ne fait que quatre
jours. On est en mai n'oublions pas ;)

> Avec ma dizaine de sources d'info et la redondance qui en découle (même
> mot/nom de fichier mais plusieurs sources) j'ai plutôt envie de n'avoir
> qu'une seule entrée (le moins possible), avec plusieurs définitions
> dedans plutôt que plusieurs fichiers avec une seule et même définition.
> Si le nom du fichier existe, je rajoute ce que j'ai à la suite. Ce sera
> mieux que numéroter, et dans l'aperçu de SpotLight j'aurai une preview
> plus intéressante. Ce n'est pas top de faire défiler les fichiers et
> voir la même chose.

Si tu as plusieurs définitions donc plusieurs paragraphes par entrée, le
script que je t'ai fait ne marche plus…
Non seulement parce que plusieurs paragraphes pour un nom, mais aussi
parce que chaque définition va être introduite par une ou plusieurs
tabulations, dans un souci d'alignement et lisibilité, non ?



Non, pas de pb. Le format retenu est trois « colonnes » :
Nom genre définition/synonymes...

Alors d'avoir plusieurs blocs comme ça les uns en-dessous des autres ne
me gène pas. Si le nom apparaît plusieurs fois ce n'est pas grave.

> La barre ne cesse de grimper :)

Oui, ilfaut que tu mettes ça bien au carré avant de te lancer, et
préparer le/les scripts qui vont t'aider à automatiser ces tâches.



C'est justement ça, j'ai déjà mis tous mes autres fichiers sur le même
format nom/genre/déf. J'ai encore trois paquets de html à transformer,
dont le monstre. Ceux sur lesquels j'ai recommencé à bosser datent de
2010 et je retrouve des scripts à droite et à gauche. Comme je n'ai mis
aucun commentaire dans le code... pas facile de savoir ce qu'ils font
sans lire et relire ce foutu code :)

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
Avatar
benoit
Joseph-B wrote:

va lire le man de textutil.



Ça c'est sûr, le premier test me donne :
#"1" "-" "0"6" "p"a"r" "C"h"a"c"h"o" "l"e" "D"i"m"a"n"c"h"e" "1"4"
"D"√"©"c"e"m"b"r"e" "2"0"0"8" "("L"i"e"n")"(
D"√"©"f"i"n"i"t"i"o"n"("s")"( U"n" "n"u"m"√"©"r"o" "d"e"
"p"o"r"t"a"b"l"e" "f"r"a"n"√"ß"a"i"s"."(

Il va me falloir trouver comment gérer l'encodage du texte.

mais intégré dans un script AppleScript ça donne ça :
Pour les besoins de la démonstration j'ai exporté les signets de Safari
sur le bureau, au format .html
∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞
set myHtmlFile to "/Users/macpro/Desktop/Signets Safari.html"
do shell script ("textutil -convert txt " & quoted form of myHtmlFile)
∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞



En tout cas merci pour la piste.

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
Avatar
josephb
Benoit estime devoir nous faire part de ceci :


Ça c'est sûr, le premier test me donne :
#"1" "-" "0"6" "p"a"r" "C"h"a"c"h"o" "l"e" "D"i"m"a"n"c"h"e" "1"4"
"D"√"©"c"e"m"b"r"e" "2"0"0"8" "("L"i"e"n")"(
D"√"©"f"i"n"i"t"i"o"n"("s")"( U"n" "n"u"m"√"©"r"o" "d"e"
"p"o"r"t"a"b"l"e" "f"r"a"n"√"ß"a"i"s"."(

Il va me falloir trouver comment gérer l'encodage du texte.



Je ne comprends pas ce qui se passe chez toi et je ne vais pas pouvoir
t'aider, car ces histoires d'encodages ça me brouille l'écoute :-(

Là, je suis allé sur wiki et au hasard j'ai pris cette page
(des fois le hasard est marrant !)
<https://fr.wikipedia.org/wiki/Bébé_est_perplexe>

j'ai appliqué le script via AppleScript, tel que je te l'ai donné, ni
plus ni moins :
Sur le bureau j'ai hérité d'un fichier texte que je te mets sur Cjoint
pour que tu te rendes comptes du résultat : absolument parfait…

<http://www.cjoint.com/c/FErtB0FzOoJ>

En tout cas merci pour la piste.



J'espère que tu vas trouver où ça coince !

--
J. B.
Si nous pouvons signaler le spouniseur moléculaire, nous devrions
pouvoir décrypter l'extra-moulinotron corporel et pénétrer le
morpho-nuage balistique !
Avatar
benoit
Joseph-B wrote:

Benoit estime devoir nous faire part de ceci :

>
> Ça c'est sûr, le premier test me donne :
> #"1" "-" "0"6" "p"a"r" "C"h"a"c"h"o" "l"e" "D"i"m"a"n"c"h"e" "1"4"
> "D"√"©"c"e"m"b"r"e" "2"0"0"8" "("L"i"e"n")"(
> D"√"©"f"i"n"i"t"i"o"n"("s")"( U"n" "n"u"m"√"©"r"o" "d"e"
> "p"o"r"t"a"b"l"e" "f"r"a"n"√"ß"a"i"s"."(
>
> Il va me falloir trouver comment gérer l'encodage du texte.

Je ne comprends pas ce qui se passe chez toi et je ne vais pas pouvoir
t'aider, car ces histoires d'encodages ça me brouille l'écoute :-(



En fait il y a un site qui me donne ce problème, l'autre est impeccable.
Avec tout fois un défaut : le dossier contient trop de documents.
Donc directement dans le terminal
do shell script "textutil -convert txt /Users/Benoit/Desktop/mondossier/
plante en disant qu'il y a trop de fichiers.

J'ai cherché sur le web mais je n'ai rien trouvé pour lui dire de les
prendre un par un. Et toutes mes tentatives de rédiger un script qui le
fasse, aboutissent à des bugs. J'ai tout fait à la main par petits
paquets, mais j'aimerai savoir le faire « proprement ».

Une idée ?

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
Avatar
josephb
Bonjour,

Benoit a écrit,

J'ai cherché sur le web mais je n'ai rien trouvé pour lui dire de les
prendre un par un. Et toutes mes tentatives de rédiger un script qui le
fasse, aboutissent à des bugs. J'ai tout fait à la main par petits
paquets, mais j'aimerai savoir le faire « proprement ».



voila un script qui va procéder fichier par fichier.
Je n'ai as trouvé le moyen (bien que l'argument soit prévu dans le man de textutil) pour diriger les
fichiers convertis dans un autre dossier que leur original.
Dans ce script seul les fuchiers .html su dossier source seront pris en compte.

Si des fichiers de .txt de même nom existent déjà, ils seront écrasés !

∞∞∞∞∞∞∞∞∞∞∞∞∞
set pathToConvert to "/Users/macpro/Desktop/testHTML_textUtil/"
set HFSPath to (POSIX file pathToConvert) as string
tell application "Finder"
set AllFiles to name of (every file of (HFSPath as alias) whose name ends with ".html")
end tell

if AllFiles = {} then
display alert "Pas de fichier à convertir."
return
end if

repeat with i from 1 to count AllFiles
set fileName to item i of AllFiles
set myHtmlFile to (pathToConvert & fileName)
do shell script ("textutil -convert txt " & quoted form of myHtmlFile)
delay 0.3
end repeat
∞∞∞∞∞∞∞∞∞∞∞∞
"testHTML_textUtil" est le nom du dossier sur le bureau où j'ai mis quelques fichiers .html

Attention : le nom du fichier htlm ne doit pas comporter de caractères incompatibles, dont des
parenthèses.

HTH
--
J. B.
Avatar
josephb
Bonjour,

Ce post supersedes celui où je ne trouvais pas comment mettre le résultat dans un dossier différent

Benoit a écrit,

J'ai cherché sur le web mais je n'ai rien trouvé pour lui dire de les
prendre un par un. Et toutes mes tentatives de rédiger un script qui le
fasse, aboutissent à des bugs. J'ai tout fait à la main par petits
paquets, mais j'aimerai savoir le faire « proprement ».



voila un script qui va procéder fichier par fichier.
Dans ce script seul les fichiers de type .htm/html du dossier source seront pris en compte.

Les fichiers convertis sont mis dans un dossier (différent du dosseir source) qui doit avoir été créé préalablement
Si des fichiers de .txt de même nom existent déjà dans le dossier de destination, ils seront écrasés !

∞∞∞∞∞∞∞∞∞∞∞∞∞
set pathToConvert to "/Users/macpro/Desktop/testHTML_textUtil/" --dossier source
set pathToTxt to "/Users/macpro/Desktop/HTML_convertis/"--dossier destination
set HFSPath to (POSIX file pathToConvert) as string
tell application "Finder"
set AllFiles to name of (every file of (HFSPath as alias) whose kind is "Document HTML")
end tell

if AllFiles = {} then
display alert "Pas de fichier à convertir."
return
end if

repeat with i from 1 to count AllFiles
set htmlName to item i of AllFiles
set txtName to ((text 1 thru -6 of htmlName) & ".txt")
set myHtmlFile to (pathToConvert & htmlName) --nom complet du fichier htlm à convertir
set myTxtFile to (pathToTxt & txtName) --nom complet du fichier converti
do shell script ("textutil -convert txt -output " & quoted form of myTxtFile & " " & quoted form of myHtmlFile)
delay 0.3
end repeat
∞∞∞∞∞∞∞∞∞∞∞∞

Attention : le nom du fichier htlm ne doit pas comporter de caractères incompatibles, dont des
parenthèses.

HTH
--
J. B.
Avatar
benoit
Joseph-B wrote:

Attention : le nom du fichier htlm ne doit pas comporter de caractères
incompatibles, dont des parenthèses.



Merci pour tout. Dans ton code je retrouve des bouts de mes différentes
recherches qui n'aboutissaient pas.

Et pourtant... il y en a qui en ont (ça serait trop simple) :
accouffler (s'-).html

Je vais donc passer la liste à une moulinette qui transforme les ( ) en
[ ] ou autre chose. C'est du code que je dois trouver facilement sur le
net, voire trouver tout seul en utilisant correctement les
textitemdelimiters.

--
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La
pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et
personne ne sait pourquoi !" [ Albert Einstein ]
Avatar
josephb
Bonjor Benoit

Benoit a écrit,

Et pourtant... il y en a qui en ont (ça serait trop simple) :
accouffler (s'-).html



Bonne nouvelle pour toi : même les caractères incompatibles avec les
commandes Shell (guillemets simple ou doubles, apostrophe, parenthèses,
crochets, signe moins, etc.) ne gêneront pas avec ce script :
dans cette mouture j'ai fait en sorte que l'option "quoted form of"
porte sur le nom ENTIER de l'original ou du résultat.
Dans la version précédente ça ne portait que sur le chemin du dossier,
sans inclure le nom du fichier lui-même.

Donc un fichier ayant pour nom
/accouffler (s'-).html/ va bien se convertir en un
/accouffler (s'-).txt/
(je viens de le vérifier)

Merci pour tout.


Ce fut un plaisir ;-)
--
J. B.
1 2 3