[Résolu] Supprimer l'espace en début de ligne |
Bienvenue invité ( Connexion | Inscription )
[Résolu] Supprimer l'espace en début de ligne |
16 Apr 2017, 16:14
Message
#1
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Bonjour à tous et bon WE de Pâques.
Je voudrais automatiser la suppression d'éventuels espaces en début de ligne dans un fichier texte. Pour être précis, dans ma bibliothèque iTunes, les paroles des chansons sont complétées. Malheureusement pour beaucoup d'entre elles, il y a un espace qui s'est glissé en début de chaque ligne. Je voudrait, si cet espace existe, supprimer cet espace. Mon but est d'écrire un applescript qui récupérerait les paroles, les placerait dans textediit et en supprimerait les espaces inutiles avant de réinjecter le texte dans iTunes. Est-ce réalisable ? Un génie du script pourrait-il me refiler un bout de code ? Merci à vous tous. m00n Ce message a été modifié par m00n - 19 Apr 2017, 09:48. -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
19 Apr 2017, 09:44
Message
#2
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Eh bien je me réponds à moi-même. Puisque ça m'a quand même pris plusieurs jours pour apprendre applescript et arriver à pondre péniblement un truc qui fonctionne, je vous offre le code :
Code (* © didier *) (* RECUPERATION DES INFOS : TITRE, NOM ET PAROLES*) tell application "iTunes" if player state is playing then -- un morceau est en cours de lecture set morceau to current track tell morceau to set {titre, artiste, paroles} to {get name, get artist, get lyrics} else if selection is not {} and (count items of selection) is 1 then -- un morceau n'est pas en cours de lecture : on prend alors le morceau qui est sélectionné set morceau to item 1 of selection tell morceau to set {titre, artiste, paroles} to {get name, get artist, get lyrics} else -- si aucun morceau n'est sélectionné, on ne fait rien return end if end tell log {titre, artiste} (* SUPPRESSION DES ESPACES EN DEBUT DE LIGNE DES PAROLES *) set oldDelim to AppleScript's text item delimiters --sauvegarde des delimiters set AppleScript's text item delimiters to return & " " --ce qu'on veut remplacer est la constante de retour chariot 'return' et l'espace qui le suit set theList to text items of paroles -- c'est dans la string paroles qu'on veut faire les remplacements set AppleScript's text item delimiters to return --c'est par un return simple qu'on veut remplacer le return espace set paroles to theList as string set AppleScript's text item delimiters to oldDelim --restauration des delimiters log paroles (* ECRITURE DES PAROLES CORRIGEES *) tell application "iTunes" if player state is playing then -- un morceau est en cours de lecture set morceau to current track set lyrics of morceau to (paroles as string) display notification artiste & " - " & titre & " a été corrigé" with title "iTunes" subtitle "Suppression des espaces dans les paroles" else if selection is not {} and (count items of selection) is 1 then -- un morceau n'est pas en cours de lecture : on prend alors le morceau qui est sélectionné set morceau to item 1 of selection set lyrics of morceau to (paroles as string) display notification artiste & " - " & titre & " a été corrigé" with title "iTunes" subtitle "Suppression des espaces dans les paroles" else -- si aucun morceau n'est sélectionné, on ne fait rien display notification "pas de correction" return end if end tell A+ m00n -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
21 Apr 2017, 11:27
Message
#3
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 879 Inscrit : 4 Apr 2004 Lieu : Lorraine - 54 Membre no 17 184 |
Bonjour
La suppression des espaces simples ou multiples en début de ligne d'un fichier texte peut se faire assez simplement avec une commande sed en Shell qu'il est tout aussi simple d'utiliser dans un applescript.... En shell ça donne Code sed "s/^\ *//g" Si tes données sont stockées dans un fichier sur le bureau et que tu souhaites créer un fichier résultat sur le bureau ça donne ça : Code cat ~/Desktop/lyrics_soucre.txt | sed "s/^\ *//g" > ~/Desktop/lyrics_modifié.txt Naturellement, il est aussi possible de travailler avec des variables plutôt qu'avec des fichiers. Ajout de la commande "cat" devant le nom du fichier, oubliée en voulant faire vite Voilà qui est corrigé Ce message a été modifié par teddy7545 - 21 Apr 2017, 16:20. -------------------- MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz |
|
|
21 Apr 2017, 11:59
Message
#4
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Salut teddy,
Effectivement c'est simple ;-) pour un pro de SED. Tant que tu y es, pourrais-tu regarder mon autre discussion ? Si c'est pas trop demander ? Là :http://forum.macbidouille.com/index.php?showtopic=402867 ? Merci mille fois. Ce message a été modifié par m00n - 21 Apr 2017, 12:02. -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
21 Apr 2017, 13:03
Message
#5
|
|
Macbidouilleur d'Or ! Groupe : Modérateurs Messages : 19 650 Inscrit : 22 Jul 2004 Lieu : Louvain-la-Neuve (Gaule Gelbique) Membre no 21 291 |
Je crois que tu as oublié d'y jeter toi-même un coup d'œil…
Notre complaisant camarade y a déjà répondu cette nuit. -------------------- ¶ MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS 12.6 “Monterey” ¶ MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8 ¶ Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C ¶ B-Box 3 + HP LaserJet 4000 N
¶ La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même. … Les corsaires mettent en berne… |
|
|
22 Apr 2017, 10:28
Message
#6
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 391 Inscrit : 2 Jun 2006 Membre no 62 332 |
Oups oui en effet.
J'y cours de ce pas. -------------------- MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
|
|
|
Nous sommes le : 11th November 2024 - 10:53 |