IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [Résolu] Supprimer l'espace en début de ligne
Options
m00n
posté 16 Apr 2017, 16:14
Message #1


Adepte de Macbidouille
*

Groupe : Membres
Messages : 253
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.
Go to the top of the page
 
+Quote Post
m00n
posté 19 Apr 2017, 09:44
Message #2


Adepte de Macbidouille
*

Groupe : Membres
Messages : 253
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
Go to the top of the page
 
+Quote Post
teddy7545
posté 21 Apr 2017, 11:27
Message #3


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 604
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 huh.gif Voilà qui est corrigé

Ce message a été modifié par teddy7545 - 21 Apr 2017, 16:20.


--------------------
Mac Pro Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces
MacBookPro 13' mid 2009 - iMac 24' 8,1 2,8GHz 4Go- Mac G4 MDD Bi 1,25 GHz - Mac G4 Quicksylver 933MHz
Go to the top of the page
 
+Quote Post
m00n
posté 21 Apr 2017, 11:59
Message #4


Adepte de Macbidouille
*

Groupe : Membres
Messages : 253
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.
Go to the top of the page
 
+Quote Post
baron
posté 21 Apr 2017, 13:03
Message #5


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 10 390
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… wink.gif

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


--------------------
MacBook Pro 15’’ Core i5 2.53 GHz, 4 Go/500 Go – Mac OSX 10.6.8
MacOS 9.1 — G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go + 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"+ modem Olitech SelfMemory 56k + HP ScanJet 6100C
Routeur/modem ADSL Trendnet TW100-BRM504 + 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…


Firefox en occitan…
Go to the top of the page
 
+Quote Post
m00n
posté 22 Apr 2017, 10:28
Message #6


Adepte de Macbidouille
*

Groupe : Membres
Messages : 253
Inscrit : 2 Jun 2006
Membre no 62 332



Oups oui en effet. w00t.gif
J'y cours de ce pas.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 23rd June 2017 - 11:11