#!/usr/bin/python # -*- coding: utf-8 -*- # warning: lines beginning with ## are parsed by # the songbook-client as rules categories import glob # the dictionary has target_word:replacement_word pairs word_dic = { ##: oe inclusion "coeur": "cœur", "boeuf": "bœuf", "oeuvre": "œuvre", "soeur": "sœur", "noeud": "nœud", "oeil": "œil", "voeu": "vœu", "oeuf": "œuf", "oe{}": "œ", ##: Contractions "ptit": "p'tit", ##: Punctuation "’": "'", "Ca ": "Ça ", "\\musicnote{Intro": "\\musicnote{intro", "\\musicnote{Outro": "\\musicnote{outro", "...": "\\dots ", "…": "\\dots", #replace tabs with two spaces " ": " ", ##: Typo "New-York": "New York", " i ": " I ", "avant hier": "avant-hier", ##: Conversion to anglo-saxon chords "Lam ": "Am ", "La7": "A7", "Lasus2": "Asus2", "Sim ": "Bm ", "Sim}": "Bm}", "Sim]": "Bm]", "Si7": "B7", "Dom ": "Cm ", "Do7": "C7", "Do9": "C9", "Ré ": "D ", "Rém ": "Dm ", "Rém]": "Dm]", "Ré7": "D7", "Ré#": "D#", "Mim ": "Em ", "Mim]": "Em]", "Mim7": "Em7", "Mim}": "Em}", "Mi7": "E7", "Mi7sus4": "E7sus4", "Fa ": "F ", "Fa}": "F}", "Fa\\": "F\\", "Fam ": "Fm ", "Fa7": "F7", "Sol ": "G ", "Sol]": "G]", "Solm ": "Gm ", "Solm]": "Gm]", "Sol7": "G7", "/La": "/A", "/Si": "/B", "/Do": "/C", "/Ré": "/D", "/Mi": "/E", "/Fa": "/F", "/Sol": "/G", "gtab{La": "gtab{A", "gtab{Si": "gtab{B", "gtab{Do": "gtab{C", "gtab{Ré": "gtab{D", "gtab{Mi": "gtab{E", "gtab{Fa": "gtab{F", "gtab{Sol": "gtab{G", "\\[La": "\\[A", "\\[Si": "\\[B", "\\[Do": "\\[C", "\\[Ré": "\\[D", "\\[Mi": "\\[E", "\\[Fa": "\\[F", "\\[Sol": "\\[G", "\\[Re": "\\[D", "b]": "&]", "b7]": "&7]", #C "032010": "X32010", #A "002220": "X02220", "002020": "X02020", "002210": "X02210", #D "000232": "XX0232", "X00232": "XX0232", "000212": "XX0212", "000231": "XX0231", "X00231": "XX0231", #B "021202": "X21202", ### end of rules } # Process song files songfiles = glob.glob('songs/*/*.sg') for filename in songfiles: with open(filename, 'r+') as songfile: data = songfile.read() for search, replace in word_dic.items(): data = data.replace(search, replace) songfile.seek(0) songfile.write(data) songfile.truncate()