Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ UNIX _ [Résolu] Supprimer l'espace en début de ligne

Écrit par : m00n 16 Apr 2017, 16:14

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

Écrit par : m00n 19 Apr 2017, 09:44

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

Écrit par : teddy7545 21 Apr 2017, 11:27

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 huh.gif Voilà qui est corrigé

Écrit par : m00n 21 Apr 2017, 11:59

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.


Écrit par : baron 21 Apr 2017, 13:03

Je crois que tu as oublié d'y jeter toi-même un coup d'œil… wink.gif

Notre complaisant camarade y a déjà répondu cette nuit. thumb.gif

Écrit par : m00n 22 Apr 2017, 10:28

Oups oui en effet. w00t.gif
J'y cours de ce pas.

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)