From 800cb6699465582011d747ef586fb27226e65c3c Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 25 Feb 2014 21:53:57 +0100 Subject: [PATCH] Moving in some stuff from songbook-core --- NEWS | 943 +++++++++++++++++++++++++++++++++++++++ utils/cover.sh | 35 ++ utils/header-english | 13 + utils/header-french | 10 + utils/header-last-volume | 13 + utils/langbooks.sh | 28 ++ utils/language.sh | 17 + utils/last-volume.sh | 46 ++ utils/make-html | 119 +++++ utils/new-songs-list.sh | 20 + utils/release.sh | 94 ++++ utils/resize-cover.py | 39 ++ utils/rules.py | 276 ++++++++++++ utils/songbook-gtab.py | 85 ++++ 14 files changed, 1738 insertions(+) create mode 100644 NEWS create mode 100755 utils/cover.sh create mode 100644 utils/header-english create mode 100644 utils/header-french create mode 100644 utils/header-last-volume create mode 100755 utils/langbooks.sh create mode 100755 utils/language.sh create mode 100755 utils/last-volume.sh create mode 100755 utils/make-html create mode 100755 utils/new-songs-list.sh create mode 100755 utils/release.sh create mode 100755 utils/resize-cover.py create mode 100755 utils/rules.py create mode 100755 utils/songbook-gtab.py diff --git a/NEWS b/NEWS new file mode 100644 index 00000000..1362cb56 --- /dev/null +++ b/NEWS @@ -0,0 +1,943 @@ +version 3.7.2 + +Louis: +Narz: + Hubert-Félix Thiéfaine - Sweet amanit phalloide queen + Georges Brassens - Les trompettes de la renommée +Romain Goffe: +m@rco: + Hubert-Félix Thiéfaine - Alligators 427 + Thomas Fersen - Borborygmes + Thomas Fersen - Cosmos +spalax: + +version 3.7.1 + +JBB: + Buddy Holly - Everyday + Cranberries - Dreaming my dreams + Cranberries - Linger + Cranberries - No need to argue + Cranberries - Ode to my family + Daniel Powter - Bad day + Eddy Mitchell - La dernière séance + Grégoire - Toi + moi + Hoobastank - The reason + Joe Dassin - À toi + Kenny Rogers - The greatest + Monty Python - Always look on the bright side of life + Renaud - La médaille + Roch Voisine - La légende oochigeas + Suzanne Vega - Luka + Terry Bush - Maybe tomorrow +Romain Goffe: + Traditionnel - Sur le pont d'Avignon + Traditionnel - Il pleut bergère + +version 3.7.0 + +Alexandre Dupas: +Dominique Goffe: +Pipiou: + Charles Aznavour - Comme ils disent + Gilbert Bécaud - Et maintenant + Michel Polnareff - Goodbye Maryloo + Michel Polnareff - L'amour avec toi + Michel Polnareff - Lettre à France + Michel Polnareff - Love me, please love me +Romain Goffe: +broph: + Soan - En chemin + Axel Bauer - Éteins la lumière + Soan - The storm + Étienne Daho - Comme un boomerang +m@rco: + Hubert-Félix Thiéfaine - 542 lunes et 7 jours environ + Hubert-Félix Thiéfaine - Ad orgasmum aeternum + Hubert-Félix Thiéfaine - Autorisation de délirer + Hubert-Félix Thiéfaine - La dèche, le twist et le reste + Hubert-Félix Thiéfaine - La fille du coupeur de joints + Hubert-Félix Thiéfaine - La fin du Saint Empire Romain-germanique + Hubert-Félix Thiéfaine - La môme kaléidoscope + Hubert-Félix Thiéfaine - Le chant du fou + Hubert-Félix Thiéfaine - Lorelei Sebasto Cha + Hubert-Félix Thiéfaine - Maison Borniol + Mano Solo - Je suis venu vous voir + Mano Solo - Pas du gâteau + +version 3.6.7 + +Mickael Chazaux: + Jean-Jacques Goldman - Et l'on y peut rien +Olive: + Manu Chao - El viente +Pipiou: + Georges Brassens - L'orage +Romain Goffe: + Michael Jackson - We are the world + Crep - Ptit pingouin + Adele - Rolling in the deep +broph: + Pink Floyd - Comfortably numb + The Rolling Stones - Mother's little helper + Pink Floyd - Hey you + +version 3.6.6 + +Charles Flèche: + Noir Désir - Un jour en France + Creedence Clearwater Revival - Bad moon rising +Olive: + Manu chao - Bongo bong + Manu Chao - Je ne t'aime plus + Renaud - Morgane de toi + Les Ogres de Barback - Le voyageur + La Rue Kétanou - Où je vais +Romain Goffe: + John Denver - The last hobo + La chanson du dimanche - Super pouvoir d'achat + Georges Brassens - Quatre-vingt-quinze pour cent + +version 3.6.5 + +JBB: + 3 doors down - Here without you + Arlo Guthrie - Hobos lullaby + Ralph McTell - Streets of London + Raphael - Caravane +Romain Goffe: + Booze Brothers - I'm sorry + Charlie Winston - Like a hobo + Tom Petty - American girl +karagrat: + Les Innocents - Un homme extraordinaire + Balbino Medellin - Super héros + +version 3.6.4 + +Romain Goffe: + Green Day - Misery + Jacques Brel - Au suivant + Debout sur le zinc - Se dire adieu + Graeme Allwright - La ligne Holworth + La maison Tellier - Babouin + Antoine - Les élucubrations + Iggy Pop - In the death car + Vincent Malone - Bad Bili + Soul Asylum - Runaway train + Traditionnel - Greensleeves + Billy Ray Cyrus - Achy breaky heart + Bob Seger - Against the wind + Johnny Hallyday - Gabrielle + Yves Simon - Diabolo menthe +broph: + The Rolling Stones - Gimme shelter + Parabellum - La belle + Parabellum - Osmose 99 + +version 3.6.3 + +Alexandre Dupas: +Romain Goffe: + Karpatt - La chose qui dort dans mon lit + Bob Dylan - I want you + Pink Floyd - Another brick in the wall +broph: + Parabellum - Le dernier trocson + Noir Désir - Lola + Noir Désir - The holy economic war + Pink Floyd - Mother + REM - Losing my religion + +version 3.6.2 + +Alexandre Dupas: + Gotye - Somebody that I used to know +Romain Goffe: + Debout sur le zinc - Aller simple + Debout sur le zinc - Je cherche encore + HK & Les Saltimbanks - Indignez-vous + HK & Les Saltimbanks - Niquons la planète + Yves Jamait - Etc + Yves Jamait - Jean-Louis + The Beach Boys - Surfin' USA +olivier desrobert: + The Kingston Trio - Greenback dollar + +version 3.6.1 + +Romain Goffe: + Le Donjon de Naheulbeuk - Chicken quest + Le Donjon de Naheulbeuk - Crom + Le Donjon de Naheulbeuk - Hé, la petite dame + Le Donjon de Naheulbeuk - La hache Durandil + Le Donjon de Naheulbeuk - Le petit gobelin + Le Donjon de Naheulbeuk - Tralala du nain + Les Amis d'ta femme - Le tango du viagra +olivier desrobert: + Thomas Fersen - Au café de la paix + Thomas Fersen - Saint-Jean-du-Doigt + Renan Luce - Le Lacrymal Circus + Les Wriggles - Petit bonhomme + +version 3.6.0 + +Romain Goffe: + Bloodhound Gang - Fire water burn + Pascale Picard - Smilin' + Coluche - Sois fainéant +yoyoma: + Razorlight - America + U2 - One + America - A Horse With No Name + +version 3.5.9 + +broph: + Patrick Coutin - J'aime regarder les filles + Noir Désir - Où veux-tu que je regarde ? + Calvin RUssell - 5m2 + Dire Straits - Brothers in arms + Noir Désir - Toujours être ailleurs +Olivier Desrobert: + As de Trefle - Pauvre planete + As de trefle - La revolution + Les cowboys fringants - Hannah + Les Ogres de Barback - Rue Mazarine + +version 3.5.8 + +Kaosun: + As de Trèfle - À l'oreille de ta femme + As de Trefle - Pauvre planete + As de trefle - La revolution + Les cowboys fringants - Hannah +Romain Goffe: + Tournée Générale - Avancer mes grolles + +version 3.5.7 + +Hanarka: + Alain Souchon - La ballade de Jim + Francis Cabrel - Octobre + Maxime Le Forestier - Passer ma route + Alain Souchon - Sous les jupes des filles + Phil Barney - Un enfant de toi + Roch Voisine - Hélène + Téléphone - Le jour s'est levé +Romain Goffe: + Gerry Rafferty - To each and everyone + Le Donjon de Naheulbeuk - Maître du donjon +broph: + Jean-Jacques Goldman - On ira + +version 3.5.6 + +Hanarka: + Belyscendre - Hélas madame + Francis Cabrel - La corrida +Romain Goffe: + The Bloody Irish Boys - Drunk tonight + Jacques Dutronc - La fille du Père Noël +broph: + Calvin Russel - Down down down +Kaosun: + Debout sur le zinc - J'ai déjà donné + Debout sur le zinc - Comme un frisson + Debout sur le Zinc - Sur le fil + Debout sur le zinc - Elle m'ennuie + Debout sur le zinc - Les angles + +version 3.5.5 + +Kaosun: + Thomas Fersen - Bambi + Thomas Fersen - Croque + Thomas Fersen - Irène + Thomas Fersen - L'histoire d'une heure + Thomas Fersen - Les cravates + Thomas Fersen - Louise + Gary Jules - Mad world + Les Fatals Picards - Au mariage de Kévin et de ma soeur + Thomas Fersen - Rititi, ratata + Thomas Fersen - Le bouton + Anis - Dans tes yeux + Les Cowboys Fringants - Ces temps-ci + Le clandestin - Rue Grenelle + Jali - Española + La rue kétanou - Sao Loucas + Les Cowboys Fringants - 8 secondes + Debout sur le Zinc - Scylla +Romain Goffe: + Les Booze Brothers - Fields of Athenry + The Dubliners - The wild rover + +version 3.5.4 + +BeXa: + Jeanne Moreau - Les mots de rien + Israel Kamakawiwo - Over the rainbow + Francis Cabrel - Les vidanges du diable + Crash Test Dummies - mmmm + Compay Segundo - Chan Chan + Bill Withers - Just two of us + Louis Chedid - Tout le monde se presse + Ridan - Ulysse + Rose - La liste + Sixpence None the richer - Kiss me +Kaosun: + La Rue Kétanou - Bonhomme de chien + Soldat Louis - C'est un pays + Thomas Fersen - Deux pieds + Thomas Fersen - Diane de Poitiers + Thomas Fersen - Dugenou + Thomas Fersen - Le chat botté + Thomas Fersen - Les malheurs du lion + Thomas Fersen - Monsieur + Thomas Fersen - Que l'on est bete + +version 3.5.3 + +BeXa: + Vincent Delerm - La natation synchronisée +Kaosun: + Renaud - Ma gonzesse + Renaud - It is not because you are + Renaud - Je suis une bande de jeunes + Renaud - La chanson du loubard + Renaud - Mort les enfants + Thomas Fersen - Chocolat + Thomas Fersen - J'ai pas la gale + Thomas Fersen - La malle + Thomas Fersen - Le balafré + Thomas Fersen - Mon iguanodon + Thomas Fersen - Mon macabre + Thomas Fersen - Je suis au paradis + Thomas Fersen - Pégase + Thomas Fersen - Zaza + Thomas Fersen - Punaise +Matteo Cypriani: + Fleetwood Mac - Temporary One + Jean Leloup - Sang d'encre + Nirvana - Dumb +Romain Goffe: + Les Cowboys Fringants - Paris-Montréal + Les Cowboys Fringants - L'horloge + HK & Les Saltimbanks - On lâche rien + HK & Les Saltimbanks - Passer ma vie + HK & Les Saltimbanks - Citoyen du monde + Astérix et Cléopâtre - Le pudding à l'arsenic +broph: + Jean-Pierre Mader - Macumba + Noir Désir - Les écorchés + Louis Bertignac - Ces idées là  + Rita Mitsouko - C'est comme ça + Calvin Russel - Baby I love you + Calvin Russel - Crossroad + Calvin Russel - One meat ball + Eddy Mitchell - Il ne rentre pas ce soir + Jean-Jacques Goldman - Comme toi + Roger Glover - Love is all + Calvin Russel - Midnite man + +version 3.5.2 + +broph: + Noir Désir - Lazy + William Baldé - Rayon de soleil + +version 3.5.1 + +broph: + M - La Seine + Noir Désir - Charlie + Noir Désir - Elle va où elle veut + Noir Désir - Joey I + Noir Désir - La chaleur + Noir Désir - La rage + Noir Désir - Le fleuve + Noir Désir - Si rien ne bouge + Noir Désir - Tu m'donnes le mal + Pigalle - Le chaland + Eddy Mitchell - Pas de boogie woogie + Eddy Mitchell - Tu peux préparer le café noir + Georges Brassens - À l'ombre des maris + Georges Brassens - Supplique pour être enterré sur la plage de Sète + Jimi Hendrix - The wind cries Mary + Johnny Hallyday - Le pénitencier + Julien Doré - Kiss me forever + R.E.M. - Everybody hurts + Renaud - La ballade nord-irlandaise + Soan - Pas pour lui + Soan - Putain de ballerine + Stealers Wheel - Stuck in the middle with you + Téléphone - New York avec toi + +version 3.5.0 + +Matteo Cypriani: + Jean Leloup - Promeneur + Maxime Le Forestier - Parachutiste + Yves Simon - Les bateaux du métro + Soldat Louis - Du rhum des femmes + Soldat Louis - Tirer des caisses + Soldat Louis - Savannah + Thiéfaine - Sentiments numériques revisités + Leonard Cohen - Winter Lady + Leonard Cohen - A Bunch of Lonesome Heroes + Leonard Cohen - The Old Revolution + Jacques Higelin - Je ne peux plus dire je t'aime +Romain Goffe: + Ben E.King - Stand by me + Coldplay - Paradise + +version 3.4.8 + +Romain Goffe: + Gérald De Palmas - Sur la route + Tonton David - Chacun sa route + Les Hurlements d'Léo - La malle en mai + Philippe Chatel & Robert Charlebois - La compagnie des lapins bleus + Oldelaf - Les mains froides + Soggy Bottom Boys - I am a man of constant sorrow + Pierre Perret - Bernard Pivot + +version 3.4.7 + +Pipiou: + Lucienne Delyle - Mon amant de Saint-Jean + Francis Cabrel - L'encre de tes yeux + Daniel Guichard - Mon vieux + Soan - Emily +Romain Goffe: + Marie Cherrier - Les baleines + Marie Cherrier - Manouche + +songbook (v0.8) + (various authors) Add songs + Alexandre Dupas: + Sheepbox - Not scared to die + Avenue Q - The internet is for porn + Johk - La reine de France + La Maison Tellier - La chambre rose + Lylloo - Ma soirée MSN + The Rolling Stones - You can't always get what you want + Outkast - Hey Ya + BeXa: + Alanis Morissette - Ironic + Alanis Morissette - Ironic + Benoit Gaüzère: + The Rolling Stones - Route 66 + Elvis Presley - Don't be cruel + Eddie Vedder - Guaranteed + The Beautiful Girls - La Mar + Dominique Goffe: + Graeme Allwright - Le jour de clarté + Hugues Aufray - Alouette + Hugues Aufray - Hasta Luego + Hugues Aufray - L'épervier + Jeanette - Porque te vas + Maxime Le Forestier - Je ne sais rien faire + Daniel Lanois - Jolie Louise + Grégoire Goffe: + Paco Ibanez - A galopar + Matthias Bussonnier: + Alex Beaupain - Je n'aime que toi + Pierre Caserta: + Oasis - I'm outta time + Red Hot Chili Peppers - By the time + Red Hot Chili Peppers - Californication + Red Hot Chili Peppers - Can't stop + Red Hot Chili Peppers - Dani California + Red Hot Chili Peppers - Road trippin' + Red Hot Chili Peppers - Under the bridge + Red Hot Chili Peppers - Snow + Elton John - Can you fell the love tonight? + Pipiou: + Matticus - Le p'tit gars + Bob Marley - Redemption song + Christophe - Les mots bleus + Pep's - Liberta + Alain Souchon - Bidon + Maxime Le Forestier - L'auto-stop + Édith Piaf - Padam-Padam + Maxime Le Forestier - Entre 14 et 40 ans + Maxime Le Forestier - Fontenay-aux-Roses + Catherine Le Forestier - La petite fugue + Tracy Chapman - Talkin' about the revolution + Jeanne Moreau - Le tourbillon de la vie + Charles Aznavour - Mes emmerdes + Oldelaf et Monsieur D - Super héros + Pigalle - Dans la salle du bar-tabac de la rue des martyrs + Renan Luce - La lettre + Renan Luce - Monsieur Marcel + Michel Fugain - Forteresse + Romain Goffe: + Antsy Pants - Vampire + Leonard Cohen - If it be your will + Bob Dylan - The times they are a-changin + Joan Baez - Here's to you + Joe Dassin - Les petits pains au chocolat + Renaud - Chanson pour Pierrot + Renaud - En cloque + The Doors - Light my fire + The Rolling Stones - Paint it black + The Rolling Stones - Angie + The Rolling Stones - Ruby Tuesday + Simon & Garfunkel - Me and Julio down by the schoolyard + Georges Brassens - À l'ombre du coeur de ma mie + Georges Brassens - Je me suis fait tout petit + Yuki Kajiura - Jr + Crep - Kartopo + Crep - Mélancolie + Crep - Les ptits chemins + Bobby McFerrin - Don't worry, be happy + Karpatt - Lino + Les Amis d'ta femme - Laisse tomber, gros + Mon côté punk - Youssef + The Nightwatchman - California's dark + Karpatt - Fan de maman + Karpatt - Soulève ta jupe + Gipsy Kings - Baila me + Gipsy Kings - Bamboleo + Debout sur le zinc - Le tanticide + Gogol Bordello - Alcohol + Boby Lapointe - Framboise + Boby Lapointe - Méli-Mélodie + Crep - Nostalgeek + Les Booze Brothers - I want sex + Dropkick Murphys - Dirty glass + The Pogues - The Irish Rover + Crep - Encore + La Rue Kétanou - Les tontons + Les VRP - Ramon Perez + Mes souliers sont rouges - Cahin-Caha + Mes souliers sont rouges - L'arbre est dans ses feuilles + Mes souliers sont rouges - Sortis du bois + Les Ogres de Barback - L'ennui et le jour + Gogol Bordello - Supertheory of supereverything + Tri Yann - Les filles de Redon + Tri Yann - Kiss the children for me Mary + Les Fatals Picards - Goldorak est mort + Charles Aznavour - Les comédiens + Matmatah - L'apologie + Philippe Lavil - Il tape sur des bambous + Les Ogres de Barback - Comment je suis devenu voyageur + Jean-Jacques Goldman - Le coureur + Bruce Springsteen - Old Dan Tucker + Renaud - La blanche + Renaud - Salut manouche + Pierre Perret - Les jolies colonies de vacances + The Connells - '74-'75 + Noir Désir - L'homme pressé + Noir Désir - Le vent nous portera + La Tête à Toto - Petit bonhomme + La Tête à Toto - Les projets + Renaud - C'est quand qu'on va où ? + Bruce Springsteen - Mrs McGrath + Henri Salvador - Une chanson douce + Nirvana - Come as you are + Michel Fugain - Je n'aurai pas le temps + Michel Fugain - Les Acadiens + Bob Dylan - One more cup of coffee + Johnny Cash - It ain't me, babe + Johnny Cash - I walk the line + Le Donjon de Naheulbeuk - Le laridé du poulet + Le Donjon de Naheulbeuk - Nanana de l'elfe + Cat Stevens - Wild world + Maxime Le Forestier - Mon frère + Loic Lantoine - Côté punk + Mon côté punk - Inch-Allah + Pierre Perret - Au café du canal + Pierre Perret - Mon p'tit loup + La Rue Kétanou - Almarita + Hugues Aufray - Céline + Hugues Aufray - Le jour où le bateau viendra + Hugues Aufray - Les couleurs + Hugues Aufray - Stewball + Les Ogres de Barback - Little gentleman + Les hurlements d'Léo - Une danseuse + Les hurlements d'Léo - À bout d'souffle + Jacques Brel - Amsterdam + Jacques Brel - Ces gens-là  + Jacques Brel - La valse à mille temps + Cookie Dingler - Femme libérée + Jacques Higelin - Poil dans la main + Jacques Higelin - Tombé du ciel + La Rue Kétanou - Personne n'a l'prénom d'ma femme + Les Innocents - L'autre finistère + Mes souliers sont rouges - Tape la galoche + Tit Patapons - Marchand de couleurs + Hervé Cristiani - Il est libre Max + Los Lobos - Rango theme song + Herman Düne - Tell me something I don't know + Herman Düne - Bristol + Herman Düne - Pure heart + Herman Düne - When the water gets cold + Herman Düne - Your name, my game + Elton John - Crocodile rock + Manau - La tribu de Dana + Daniel Balavoine - Vivre ou survivre + Vivre ou mourir + France Gall - Il jouait du piano debout + Louise Attaque - Je t'emmène au vent + Louise Attaque - Ton invitation + Crep - SNCeuFeu + Gérard Lenorman - La ballade des gens heureux + Gérard Lenorman - Si j'étais président + Les hurlements d'Léo - Fabulous and luxury holidays for todos in Barbados + Les blérots de R.A.V.E.L - Dans les gares + Les blérots de R.A.V.E.L - Le retour de Petrouchka + Les blérots de R.A.V.E.L - Les ptits plaisirs + Les hurlements d'Léo - Ici, d'ailleurs + François Corbier - Les vieux copains de la télé + Bob Dylan - Ballad of Hollis Brown + Bob Dylan - Don't think twice, it's all right + Emiliana Torrini - Jungle drum + Herman Düne - My friends kill my folks + Herman Düne - Be a doll and take my heart + Bob Dylan - Hurricane + Karpatt - Les vieilles + Cesaria Evora - Petit pays + Hugues Aufray - Le joueur de pipeau + Jean-Jacques Goldman - Il changeait la vie + Johnny Cash - Jackson + Johnny Cash - The ring of fire + Joe Dassin - Les Champs-Élysées + JCFrog - Je t'emmène dedans + JCFrog - La mauvaise eréputation + JCFrog - Russians + Sting - Russians + Elvis Presley - Love me tender + Traditionnel - L'homme de cromagnon + Jean-Jacques Goldman - Encore un matin + Georges Brassens - Chanson pour l'Auvergnat + La compagnie créole - Ça fait rire les oiseaux + La compagnie créole - La machine à danser + La compagnie créole - Le bal masqué + Karpatt - En pleine mer + Karpatt - Le déménagement + Les Fatals Picards - L'amour à la française + Les Fatals Picards - La sécurité de l'emploi + Joe Dassin - Ma bonne étoile + Julien Clerc - Travailler, c'est trop dur + Julien Clerc - Mélissa + Julien Clerc - Ce n'est rien + Laura Veirs - Ballad of John Vogelin + Laura Veirs - Jailhouse fire + Bob Marley - No woman, no cry + Laura Veirs - Black-eyed Susan + Téléphone - Cendrillon + Négresses vertes - Sous le soleil de Bodega + Yves Duteil - Le petit pont de bois + Oldelaf - Mamy blue + Christophe - Aline + Nino Ferrer - Mirza + Laura Veirs - Icebound stream + Herman's Hermits - No milk today + Oldelaf - Courseulles-sur-Mer + Oldelaf - Mon testament + Oldelaf - Vendredi + Oldelaf - Le monde est beau + Oldelaf et Monsieur D - Nous, les vedettes + Leonard Cohen - Suzanne + Les Fatals Picards - Mon père était tellement de gauche + Les Fatals Picards - Seul et célibataire + Damien Rice - Cannonball + Jean-Jacques Goldman - Long is the road + La crevette d'acier - Moi si un jour + Les Ogres de Barback - La gare de Caen + Boby Lapointe - Aragon et Castille + Francis Cabrel - Je t'aimais, je t'aime et je t'aimerai + Neil Young - Heart of gold + Green Day - Minority + Les Ogres de Barback - Touche pas à mon école + Yuki Kajiura - Vanity + Bruce Springsteen - John Henry + Gogol Bordello - Oh no + Dessins Animés - Boumbo + Dessins Animés - Denver, le dernier dinosaure + Dessins Animés - Dragon Ball + Dessins Animés - Dragon Ball Z + Dessins Animés - Les chevaliers du zodiaque + Dessins Animés - Lucky Luke + Dessins Animés - Sherlock Holmes + Debout sur le Zinc - Ma petite chérie + Les Cowboys Fringants - Quand tu pars + Gilles Servat - La blanche hermine + Édith Piaf - L'homme à la moto + Karpatt - Le fil + Le Donjon de Naheulbeuk - Marche barbare + Le Donjon de Naheulbeuk - Massacrons-nous dans la taverne + Maxime Le Forestier - Comme un arbre + Maxime Le Forestier - Le steak + Georges Brassens - Ballade des dames du temps jadis + Maxime Le Forestier - Éducation sentimentale + The mamas and the papas - California dream + Jean-Jacques Goldman - Je te donne + Traditionnel - V'la l'bon vent + Barbara - L'aigle noir + Les Ogres de Barback - Ma fille + Alain Souchon - L'amour à la machine + Fool's Garden - Lemon tree + The Innocence Mission - The lakes of Canada + Crep - Fichu doctorat + Crep - Soirée pépère + Crep - iScream + Crep - Bioman + Crep - Caliméro + Oldelaf - Michel + Karpatt - Histoires de famille + +songbook (v0.7) + + (various authors) Add songs + Alexandre Dupas: + Alexis HK - Gaspard + The White Stripes - Well It's True That We Love One Another + Yodelice - Sunday with a flu + The Calling - Wherever you will go + The Nightwatchman - Let Freedom Ring + MC Solaar - Caroline + System of a Down - Roulette + The Fray - How to save a life + The Beatles - Twist and shout + John Lennon - Working Class Hero + Les Wriggles - Plouf + Dominique Goffe: + Mes souliers sont rouges - Le cycle du vin + Michel Sardou - Les lacs du Connemara + Dorian Goffe: + Le Donjon de Naheulbeuk - Geste héroïque + Jeanne Dupas: + AaRON - U-Turn + Ben Harper - Waiting on an angel + Pierre Caserta: + Alicia Keys - If I ain't got you + Jason Marz - I'm yours + Jack Johnson - Taylor + Romain Goffe: + The Beatles - Octopus Garden + Bob Dylan - Mr Tambourine Man + Cat Stevens - Here comes my baby + Cat Stevens - Father and Son + Karpatt - Des gnons pour des pelles + Karpatt - Les canards en plastique + Les Cowboys Fringants - 1994 + Les Ogres de Barback - Jojo + Simon & Garfunkel - April come she will + Simon & Garfunkel - Kathy's song + The Carpenters - Breaking up is hard to do + The Dubliners - Whiskey in the jar + Mes souliers sont rouges - Nuit humide + Ritchie Valens - Come on, let's go! + Claude Nougaro - Armstrong + Maxime Le Forestier - San Francisco + Simon & Garfunkel - Mrs. Robinson + Les Fatals Picards - La ferme + Beau Dommage - La complainte du phoque en Alaska + Anny et Jean-Marc Versini - La danse des esquimaux + Debout sur le Zinc - Poil aux yeux + Georges Brassens - Le petit cheval + Les ogres de barback - Le temps + Vincent Malone - L'escargot malheureux + Boby Lapointe - La maman des poissons + La Famille Maestro - Le rat de l'opéra + Jonathan Coulton - Still alive + Los Lobos - Cancion del Mariachi + Renaud - Société tu m'auras pas + Renaud - Amoureux de Paname + Henri Dès - Mon cheval gris + Henri Dès - Les bêtises à l'école + Le Donjon de Naheulbeuk - Noel en Mordor + Joe Dassin - La fleur aux dents + Pierre Bachelet - En l'an 2001 + Pierre Bachelet - Vingt ans + La Rue Kétanou - La chance + La Rue Kétanou - Les hommes que j'aime + Joe Dassin - Le moustique + Graeme Allwright - Henrik + Graeme Allwright - Le clochard américain + Hugues Aufray - Elle descend de la montagne + Traditionnel - Chevaliers de la table ronde + Hugues Aufray - Debout les gars + Indochine - L'aventurier + Indochine - J'ai demandé à la lune + Traditionnel - Vent frais + Traditionnel - La cucaracha + Parabellum - Saturnin + Dessins Animés - Inspecteur Gadget + Dessins Animés - L'oiseau bleu + Alain Souchon - Foule sentimentale + Les Ogres de Barback - Bumbaia + Francine Pohl - La sorcière Grabouilla + Francine Pohl - La sorcière Grabouilla + La Rue Kétanou - La fiancée de l'eau + Debout sur le Zinc - La déclaration + Debout sur le Zinc - Les mots d'amour + Les Ogres de Barback - Rue du temps + Les Amis d'ta femme - A las barricadas + Mes souliers sont rouges - Bassin d'Irlande + Debout sur le Zinc - Rester debout + Simon & Garfunkel - The only living boy in New-York + Les Cowboys Fringants - Plus rien + Les Cowboys Fringants - Plus rien + Maxime Le Forestier - La rouille + Les Petites Bourettes - Et si je t'aime + Les Cowboys Fringants - La bonne pomme + Les Cowboys Fringants - Entre deux taxis + Les Petites Bourrettes - Dans la tête + Les Petites Bourrettes - La vieille + As de Trêfle - Jessica + Le Colporteur - Comme on dit + Les Vieilles Valises - Émilie + Sansévérino - Dimanche dernier + I wanna be like you + La Rue Kétanou - Sur les chemins de la bohème + Louise Attaque - Les nuits parisiennes + Marie Laforêt - Ivan, Boris et moi + Lila Downs - La cumbia del mole + Les Petites Bourrettes - Notre monde + Thomas Bellet: + Sheepbox - Devil's way. + (lohrun) New songbook format (not compatible with older version). + Changes have been made to the compilation toolchain that prevent + compilation of old format songbook. + (lohrun) Use LaTeX Songs package v2.10. + + -- Alexandre Dupas Sat, 17 Jul 2010 15:24:14 +0200 + +songbook (v0.6) + + (crep, Jeanne Dupas, lohrun) Add songs + Alexandre Dupas: + Ben Harper - Widow of a Living Man Song requested by Jeanne Dupas + Jeanne Dupas: + The Animals - The house of rising sun + The Beatles - Let it be + Romain Goffe: + Oldelaf et Monsieur D. - David Crockett + Steve Waring - La baleine bleue + Ritchie Valens - La bamba + Pornophonique - Sad robot + Les Naufragés - L'harmonica + Steve Waring - La baleine bleue + Ritchie Valens - La bamba + Pornophonique - Sad robot + Les Naufragés - L'harmonica + Thémis et Nono + Les Cowboys Fringants - Ti-Cul + Bruce Springsteen - Pay me my money down + Karpatt - Des idées + Karpatt - Léon + Les Cowboys Fringants - La Reine + Les Ogres de Barback - Ptit chat + Yuki Kajiura - Fake Wings + (crep, lohrun) Corrections of mistakes and typos. + (lohrun) Use plain songs package v2.9 + (lohrun) Replace makeindex script with a new python version + (lohrun) Add script to produce the list of chords used in songs + (crep, lohrun) Correct chords and gtabs used in songs + (lohrun) Modification of the default geometry + (lohrun) Remove capos from the lyricbook + + -- Alexandre Dupas Fri, 11 Dec 2009 15:35:03 +0100 + +songbook (0.5) + + (crep, lohrun, Grégoire Goffe) New songs: + Belyscendre - Mon père veut me marier + Belyscendre - Prend farge au loup + Britney Spears - ...Baby one more time + Cranberries - Animal Instinct + Cranberries - Zombie + Green Day - American Idiot + Le Donjon de Naheulbeuk - La compagnie du chien rugissant + Le Donjon de Naheulbeuk - La complainte de la serveuse + Le Donjon de Naheulbeuk - La polka du menestrel + Le Donjon de Naheulbeuk - Les chaussettes du nain + Le Donjon de Naheulbeuk - Même pas mage + Negro Spiritual - Lord I want + Oldelaf - J'veux être musclé + Oldelaf - Mon ange + Rise Against - Hero of War + U2 - Sunday Bloody Sunday + (crep, lohrun) Corrections of mistakes and typos. + (lohrun) Add a proper volume mechanism + (lohrun) Add volume-1 source containing about 165 songs + (crep) Add naheulbeuk special edition + (lohrun) Upgraded songs.sty with bits from songs package v2.9 + (lohrun) Add tabs option + (crep,lohrun) Add lilypond option + + -- Alexandre Dupas Tue, 18 Aug 2009 23:38:12 +0200 + +songbook (0.4) + + (crep, lohrun, Grégoire Goffe) New songs: + Alain Bashung - Gaby, oh Gaby + Avril Lavigne - Things I'll never say + Bob Dylan - Blowin in the wind + Carter Family - In the highways + Keep on the sunny side + Cat Stevens - Sad Lisa + Cat Stevens - The wind + Eels - Dirty girl + Eels - Hey man + Eels - I like birds + Eels - Packing blankets + Garfunkel and Oates - Fuck You. + Georges Brassens - Cupidon s'en fout + Georges Brassens - Grand-père + Georges Brassens - Le gorille + Georges Brassens - Les copains d'abord + Graeme Allwright - Johnny + Graeme Allwright - La mouche bleue + Graeme Allwright - Petit garcon + Green Day - Boulevard of Broken Dreams + Howie Day - Collide + Kana - Plantation + La Rue Ketanou - La Rue Ketanou + Les Cowboys Fringants - La manifestation + Les Cowboys Fringants - Toune d'Automne + Les Tit's Nassels - Les Tit's ballades + Linkin Park - Numb + Moriarty - Jimmy + Oasis - Wonderwall + Oldelaf et Monsieur.D - Nathalie + Patrick Bouchitey - Jesus reviens + Pierre Perret - Lily + Pow Wow - Le lion est mort ce soir + Radiohead - Creep + Renaud - Petite fille des sombres rues + Simon & Garfunkel - Cecilia + Simon & Garfunkel - El condor pasa + Simon & Garfunkel - Feeling groovy + Terra Naomi - Say it's possible + The Beatles - Ob-la-di ob-la-da + The Beatles - Yellow submarine + The Beatles - Yesterday + The Eagles - Hotel California + The Pogues - Fairytale of New-York + Tri Yann - Les prisons de Nantes + Tri Yann - Si Mors A Mors + (crep, lohrun) Corrections of mistakes and typos. + (crep, lohrun) Add cover picture to each song + (lohrun) Update to the Songs Package v2.8 + (lohrun) Update makefile to be POSIX compilant + + -- Alexandre Dupas Sun, 31 May 2009 01:39:16 +0200 + +songbook (0.3) + + (crep, lohrun) Major update with many new songs. + (crep) Corrections of a lot of mistakes. + (crep) Include image support. + (lohrun) Add make-html utility. + + -- Alexandre Dupas Sun, 15 Feb 2009 18:34:59 +0100 + +songbook (0.2) + + Initial version. + + -- Alexandre Dupas Sat, 11 Oct 2008 20:00:00 +0100 diff --git a/utils/cover.sh b/utils/cover.sh new file mode 100755 index 00000000..bfca9aee --- /dev/null +++ b/utils/cover.sh @@ -0,0 +1,35 @@ +#!/bin/sh +for directory in songs/*; do + images=`ls $directory/*.{jpg,png} 2> /dev/null` + val=`echo $images | wc -w` + for song in $directory/*.sg; do + sg=`basename $song` + sed -i '0,/\\gtab/s//\\cover\n\\gtab/' $song + if [ $val -gt 1 ] + then + i=1 + for image in $images; do + img=`basename $image .jpg` + img=`echo $img | sed 's/.png$//'` + echo "Apply $img to $song ? ($i/$val)" + i=$(($i+1)) + read answer + case "$answer" in + "y") + sed -i 's/beginsong{\([^}]*\)}\[\([^]]*\)\]/beginsong{\1}[\2,cov='$img']/' $song + break; + ;; + "n") + true + ;; + esac + done; + elif [ $val -eq 1 ] + then + img=`basename $images .jpg` + img=`echo $img | sed 's/.png$//'` + echo "Applying $img to $sg" + sed -i 's/beginsong{\([^}]*\)}\[\([^]]*\)\]/beginsong{\1}[\2,cov='$img']/' $song + fi; + done; +done; diff --git a/utils/header-english b/utils/header-english new file mode 100644 index 00000000..bed49cc7 --- /dev/null +++ b/utils/header-english @@ -0,0 +1,13 @@ +{ +"template" : "patacrep.tmpl", +"lang" : "english", +"bookoptions" : [ + "diagram", + "lilypond", + "pictures" + ], +"booktype" : "chorded", +"subtitle" : "English songs", +"picture" : "Music_by_Katie8594", +"title" : "Guitar Songbook", +"songs" : [ \ No newline at end of file diff --git a/utils/header-french b/utils/header-french new file mode 100644 index 00000000..68685567 --- /dev/null +++ b/utils/header-french @@ -0,0 +1,10 @@ +{ +"template" : "patacrep.tmpl", +"lang" : "french", +"subtitle" : "chanson francaise", +"bookoptions" : [ + "diagram", + "lilypond", + "pictures" + ], +"songs" : [ diff --git a/utils/header-last-volume b/utils/header-last-volume new file mode 100644 index 00000000..57e21525 --- /dev/null +++ b/utils/header-last-volume @@ -0,0 +1,13 @@ +{ +"template" : "patacrep.tmpl", +"lang" : "french", +"bookoptions" : [ + "diagram", + "lilypond", + "pictures" + ], +"booktype" : "chorded", +"picture" : "The_Music_Machine_by_hit_squad", +"picturecopyright" : "hit-squad @ deviantart.com", +"subtitle" : "Tome 5", +"songs" : [ diff --git a/utils/langbooks.sh b/utils/langbooks.sh new file mode 100755 index 00000000..4d90e93c --- /dev/null +++ b/utils/langbooks.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +#Author: Romain Goffe +#Date: 14/11/2010 +#Description: Generate an sb file containing all the songs in a given language + +if [ $# -ne 1 ]; +then + echo "Usage: $0 LANG" + exit 1 +fi; + +GREP="$GREP_OPTIONS" +export GREP_OPTIONS="" + +LANG=$1 +BOOKS_DIR="books/" + +if [ $LANG="english" -o $LANG="french" ]; +then + cp "./utils/header-$LANG" "$BOOKS_DIR$LANG.sb" + grep "selectlanguage{$LANG}" songs/*/*.sg | sed 's|songs/\(.*\):.*| \"\1\",|; $ s|,$|\n ]\n}\n|' >> "$BOOKS_DIR$LANG.sb" +else + echo "Error: $LANG is not a supported language" + exit 2 +fi; + +export GREP_OPTIONS="$GREP" diff --git a/utils/language.sh b/utils/language.sh new file mode 100755 index 00000000..d512fb88 --- /dev/null +++ b/utils/language.sh @@ -0,0 +1,17 @@ +#!/bin/sh +echo "Choose langage: 1 (english), 2 (french), 3 (spanish)" +for song in songs/*/*.sg; do + echo "Apply language to $song ?" + read answer + case "$answer" in + 1) + sed -i '1i\\\\selectlanguage{english}' $song + ;; + 2) + sed -i '1i\\\\selectlanguage{french}' $song + ;; + 3) + sed -i '1i\\\\selectlanguage{spanish}' $song + ;; + esac +done; diff --git a/utils/last-volume.sh b/utils/last-volume.sh new file mode 100755 index 00000000..b123e6e5 --- /dev/null +++ b/utils/last-volume.sh @@ -0,0 +1,46 @@ +#!/bin/sh +#Author: Romain Goffe +#Date: 07/05/2011 +#Description: Generate an sb file containing all the songs that are not +# already in previous volumes + +GREP="$GREP_OPTIONS" +export GREP_OPTIONS="" + +BOOKS_DIR="books" + +#all songs +cd songs +ls -1 */*.sg > ../res1 +cd .. + +for i in 1 2 3 4 +do + #get volume i list + tail -n +14 "$BOOKS_DIR/volume-$i.sb" > tmp$i + head -n -2 tmp$i > list$i + sed -i -e "s/\",//g" -e "s/ \"//g" -e "s/\"//g" list$i + + #remove volume i songs + grep -vf list$i res$i > res$(($i+1)) +done + +#format song list +sed -i -e "s/^/ \"/g" -e "s/$/\",/g" res$(($i+1)) +head -c -2 res$(($i+1)) > res + + +#make volume i+1 sb file +cat utils/header-last-volume > "$BOOKS_DIR/volume-$(($i+1)).sb" +cat res >> "$BOOKS_DIR/volume-$(($i+1)).sb" +echo "]" >> "$BOOKS_DIR/volume-$(($i+1)).sb" +echo "}" >> "$BOOKS_DIR/volume-$(($i+1)).sb" + +#remove tmp files +for i in 1 2 3 4 +do + rm -f res$i list$i tmp$i +done +rm -f res res$(($i+1)) + +export GREP_OPTIONS="$GREP" diff --git a/utils/make-html b/utils/make-html new file mode 100755 index 00000000..f21775d4 --- /dev/null +++ b/utils/make-html @@ -0,0 +1,119 @@ +#!/usr/bin/perl -w +# +# Generate html index for the Crep's chorbook. +# +# Usage: make-html [options] source +# source should be an .sg or .sbd file +# + +use warnings; +use strict; +use utf8; + +sub uppercase($) +{ + my $letter = shift; + $letter =~ tr/a-zàéèëê/A-ZAEEEE/; + return $letter; +} + +# Create the latex-proof function +sub latex2utf8($) +{ + my $result = shift; + + $result =~ s/\\'e/é/g; + $result =~ s/\\¨e/ë/g; + $result =~ s/\\`e/è/g; + $result =~ s/\\\^e/ê/g; + $result =~ s/\\\^o/ô/g; + $result =~ s/\\\^a/â/g; + $result =~ s/\\\^i/î/g; + $result =~ s/\\`a/à/g; + $result =~ s/\\`u/ù/g; + $result =~ s/\\&/&/g; + $result =~ s/\\oe\s*{}/oe/g; + + return ($result); +} +#' + +sub usage () +{ + die "usage: make-html [options] source", "\n"; +} + +sub defaultoptions() +{ + return ( + titleprefix => "", + ); +} + +my %options; +sub getoptions () +{ + %options = defaultoptions(); + eval q{use Getopt::Long}; + Getopt::Long::Configure('pass_through'); + GetOptions( +# "verbose|v!" => \$options{verbose}, + "titleprefix|p=s" => \$options{titleprefix}, + ) || usage(); +} + +getoptions(); + +my $prefix = '(('.$options{titleprefix}.')[\s\'])'; + +# Filter function +sub process_titleprefix($) +{ + my $string = shift; + if( $string =~ /^$prefix\W*(\w)/ ) + { + my $letter = uppercase $3; + $string =~ s/^$prefix\W*\w(.*)/$letter$3, $1/; + } + return $string; +} + +# Process command line +usage() unless @ARGV; +my $file = shift; + +# Open file and store date before closing the file +open( FILE, $file ) or die("unable to open $file"); + +# Process data +my %table; +my $author; +my $title; + +while( ) +{ + if( $_ =~ /\\beginsong{(.*)}\[.*by=(.*),.*\]/ ) + { + $author = latex2utf8 $2; + $title = latex2utf8 $1; + $title = process_titleprefix $title unless $options{titleprefix} eq ""; + # Create empty data index if needed + $table{$author} = [] unless exists $table{$author}; + push @{$table{$author}}, $title; + } +} + +close( FILE ); + +# Format output +print '
    '; +foreach my $author ( sort keys %table ) +{ + print '
  • ', $author, '
      '; + foreach my $title ( sort @{$table{$author}} ) + { + print '
    • ',$title,'
    • ' + } + print '
  • '; +} +print '
'; diff --git a/utils/new-songs-list.sh b/utils/new-songs-list.sh new file mode 100755 index 00000000..8adb6696 --- /dev/null +++ b/utils/new-songs-list.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Helper script to get the list of new songs added since the last version +# The output is supposed to be copy/pasted into the NEWS item. + +GREP="$GREP_OPTIONS" +export GREP_OPTIONS="" + +if [ $# -eq 1 ] +then + VERSION=$1 +else + # Get current version + VERSION=`git tag | grep patacrep | tail -n1` +fi + +# Make new songs list by authors +git shortlog $VERSION..master | egrep '^([^ ].*|.*[aA]dd song.*)' | sed 's/[aA]dd song.//' | sed 's/\.$//' | sed 's/ (.*)//' | sed 's/\s\s\s*/ /' + +export GREP_OPTIONS="$GREP" diff --git a/utils/release.sh b/utils/release.sh new file mode 100755 index 00000000..9f6e9d98 --- /dev/null +++ b/utils/release.sh @@ -0,0 +1,94 @@ +#!/bin/sh + +#Author: Romain Goffe +#Date: 13/10/2011 +#Description: Build all the pdf on www.patacrep.com, increase their +#version and commit/tag the result + +GREP="$GREP_OPTIONS" +export GREP_OPTIONS="" + +#last volume +./utils/last-volume.sh +#english.sb +./utils/langbooks.sh english +#french.sb +./utils/langbooks.sh french + +#increase version +RELEASE_TYPE=$1 +VERSION=`grep "\"version\"" ./templates/patacrep.tmpl | sed -e 's/.*\"\([0-9]\+\)\.\([0-9]\+\)\.\?\([0-9]\+\)\?.*/export MAIN=\1\nexport MAJOR=\2\nexport MINOR=\3\n/'` +$VERSION + +if [ $# -eq 1 ] +then + echo "current version : $MAIN.$MAJOR.$MINOR" + if [ $RELEASE_TYPE = "major" ]; + then + MAJOR=$(($MAJOR+1)) + MINOR=0 + elif [ $RELEASE_TYPE = "minor" ]; + then + MINOR=$(($MINOR+1)) + else + echo "error: unrecognised release type" + fi; + echo "new version : $MAIN.$MAJOR.$MINOR" + #update version field in tmpl files + sed -i "s/\"[0-9]\+.[0-9]\+.[0-9]\+\"/\"$MAIN.$MAJOR.$MINOR\"/" templates/patacrep.tmpl + sed -i "s/\"[0-9]\+.[0-9]\+.[0-9]\+\"/\"$MAIN.$MAJOR.$MINOR\"/" templates/ancient.tmpl +else + echo "keeping release version" +fi; + + +#apply verification tools +#echo "emacs batch indentation in progress ..." +#./utils/indent.sh 2> /dev/null +#echo "emacs batch indentation done !" +./utils/rules.py +./utils/resize-cover.py +./utils/perms.sh + +#build all songbooks +rm -f *.d *.pdf *.log *.aux + +tar -czvf songbook.tar.gz \ + --exclude-vcs \ + --exclude=$(BOOKS_DIR)/default.sb \ + --exclude=perso/* --exclude=perso \ + --exclude=build/* --exclude=build \ + --exclude=data/* --exclude=data \ + --exclude=*tar.gz \ + --transform 's/songbook/songbook-$(DATE)/1' \ + ../songbook + +./songbook.py -s books/naheulbeuk.sb +./songbook.py -s books/volume-1.sb +./songbook.py -s books/volume-2.sb +./songbook.py -s books/volume-3.sb +./songbook.py -s books/volume-4.sb +./songbook.py -s books/volume-5.sb +./songbook.py -s books/english.sb +./songbook.py -s books/french.sb +./songbook.py -s books/songbook_fr.sb +./songbook.py -s books/songbook_en.sb +./songbook.py -s books/lyricbook_fr.sb +./songbook.py -s books/lyricbook_en.sb +#make clean + +git status + +if [ $# -eq 1 ] +then + ./utils/new-songs-list.sh | cat - NEWS > /tmp/out && mv -f /tmp/out NEWS + echo "\nversion $MAIN.$MAJOR.$MINOR\n" | cat - NEWS > /tmp/out && mv -f /tmp/out NEWS + git add templates/*.tmpl + git add books/naheulbeuk.sb books/volume*.sb NEWS + git commit -m "patacrep release version $MAIN.$MAJOR.$MINOR" + git tag "patacrep_$MAIN.$MAJOR.$MINOR" +fi + +notify-send "Patacrep!" "Release $MAIN.$MAJOR.$MINOR generated" --icon=songbook-client + +export GREP_OPTIONS="$GREP" diff --git a/utils/resize-cover.py b/utils/resize-cover.py new file mode 100755 index 00000000..1ce540f7 --- /dev/null +++ b/utils/resize-cover.py @@ -0,0 +1,39 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +#Author: Romain Goffe +#Date: 28/12/2011 +#Description: Resize all covers to 128,128 thumbnails +import os +import Image + +from utils import recursiveFind + +# Process song files +library = "./" +covers = recursiveFind(os.path.join(library, 'songs'), '*.jpg') +for filename in covers: + + source = Image.open(filename) + + src_width = source.size[0] + src_height = source.size[1] + ratio = float(src_height) / float(src_width) + + width = 128 + height = 128 + error = 0.2 #0: always preserve ratio; 1: always square images + + #tolerate almost square images + if ratio < 1 - error or ratio > 1 + error: + #print "preserve ratio = ", ratio + #preserve important ratio + if src_width < src_height: + height = int(width * ratio) + elif src_height < src_width: + width = int(height * ratio) + + if src_width > width and src_height > height: + print "resize: ", filename, " from ", source.size, " to ", (width, height) + target = source.resize((width, height), Image.ANTIALIAS) + target.save(filename) diff --git a/utils/rules.py b/utils/rules.py new file mode 100755 index 00000000..f86b8567 --- /dev/null +++ b/utils/rules.py @@ -0,0 +1,276 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import glob +import getopt, sys +import re, os +import logging +import locale +re.LOCALE + +from utils import recursiveFind + +# the dictionary has target_word:replacement_word pairs +word_dic = { +##: oe inclusion +"coeur": "cœur", +"choeur": "chœur", +"boeuf": "bœuf", +"oeuvre": "œuvre", +"soeur": "sœur", +"noeud": "nœud", +"oeil": "œil", +"voeu": "vœu", +"oeuf": "œuf", +"oe{}": "œ", +"\\œ": "œ", +##: Contractions +"ptit": "p'tit", +"Y a": "Y'a", +"ptê": "p't'ê", +"p'tê": "p't'ê", +"p't-ê": "p't'ê", +##: Punctuation +"’": "'", +"‘": "'", +"´": "'", +"Ca ": "Ça ", +"...": "{\\dots}", +"…": "{\\dots}", +"say: ``":"say, ``", +"says: ``":"says, ``", +"said: ``":"said, ``", +#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", +"tab{La": "tab{A", +"tab{Si": "tab{B", +"tab{Do": "tab{C", +"tab{Ré": "tab{D", +"tab{Mi": "tab{E", +"tab{Fa": "tab{F", +"tab{Sol": "tab{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", +## LaTeX +"beginchorus": "begin{chorus}", +"endchorus": "end{chorus}", +"beginverse*": "begin{verse*}", +"beginverse": "begin{verse}", +"endverse": "end{verse}", +"}[by=": "}\n [by=", +### end of rules +} + + +def usage(): + print ''' +Usage: rules.py [OPTION] + +OPTIONS + -h, --help + display this help and exit + + -f, --files=FILES + apply the set of rules on FILES + default is songs/*/*.sg + + -l, --log=LEVEL + set the logging level to LEVEL + outputs logging information to rules.log + possible LEVEL values are : debug, info, warning, error and critical +''' + +def replace_words(string): + ''' + Search the data string for words defined in the dictionary and + replace them. This method avoids usual spelling and typos mistakes + when writing a song. + ''' + logging.info("replace_words: search and replace words from dictionary into song data") + for search, replace in word_dic.items(): + string = string.replace(search, replace) + return string + +#language based typographical rules +def language_rules(string): + ''' + Search the data string for common typographical mistakes. + Implemented rules depend on the current song language that is + defined by babel for every .sg file through the macro + \selectlanguage{} + ''' + logging.info("language_rules: looking for common typographical mistakes") + if (re.compile("selectlanguage{french}").search(string)): + logging.info(" song language is set to : french") + #ensure non-breaking spaces before symbols ? ! ; : + string = re.sub("(?P\S)(?P[!?;:])","\g \g", string) + #... except for gtabs macros with capos + string = re.sub("(?Ptab.?{.*)\s:","\g:", string) + #... and for urls + string = re.sub("http\s:","http:", string) + #and apply a second time for cases like \gtab{Gm}{10:X02210:} + string = re.sub("(?Ptab.?{.*)\s:","\g:", string) + #ensure no spaces after symbols ( + string = re.sub("(?P[\(])\s(?P\S)","\g\g", string) + #convert inverted commas + string = re.sub("``","{\\og}", string) + string = re.sub("''","{\\\\fg}", string) + elif (re.compile("selectlanguage{english}").search(string)): + logging.info(" song language is set to : english") + #ensure no spaces before symbols ? ! ; : ) + string = re.sub("(?P\S)\s(?P[!?;:\)])","\g\g", string) + #ensure no spaces after symbols ( + string = re.sub("(?P[\(])\s(?P\S)","\g\g", string) + elif (re.compile("selectlanguage{spanish}").search(string)): + logging.info(" song language is set to : spanish") + #ensure no spaces before symbols ? ! ; : ) + string = re.sub("(?P\S)\s(?P[!?;:\)])","\g\g", string) + #ensure no spaces after symbols ¿ ¡ ( + string = re.sub("(?P[¿¡\(])\s(?P\S)","\g\g", string) + elif (re.compile("selectlanguage{portuguese}").search(string)): + logging.info(" song language is set to : portuguese") + #convert inverted commas + string = re.sub("``","{\\og}", string) + string = re.sub("''","{\\\\fg}", string) + else : + print "Warning: language is not defined for song : " + filename + return string + +def process_lines(lines): + ''' + Removes trailing punctuation and multi-spaces from lines. Note + that it preserves whitespaces at the beginning of lines that + correspond to indentation. + ''' + logging.info("process_lines: handling song data line by line") + star = False + for index, line in enumerate(lines): + if re.compile("begin{verse\*}").search(line): + star = True + + if re.compile("end{verse\*}").search(line): + star = False + + if star == True and re.compile("end{verse}").search(line): + line = line.replace("verse", "verse*") + star = False + + #remove trailing spaces and punctuation + line = line.rstrip().rstrip(',.;').rstrip() + #remove multi-spaces within lines + line = re.sub("(?P\S)\s{2,}","\g ", line) + lines[index] = line + return lines + + +def main(): + locale.setlocale(locale.LC_ALL, '') + try: + opts, args = getopt.getopt(sys.argv[1:], + "hf:l:", + ["help", "files=", "log="]) + except getopt.GetoptError: + usage() + sys.exit(2) + + library = './' + loglevel = "warning" + + for option, arg in opts: + if option in ("-h", "--help"): + usage() + sys.exit() + elif option in ("-f", "--files"): + songfiles = glob.glob(arg) + elif option in ("-l", "--log"): + loglevel = arg + numeric_level = getattr(logging, loglevel.upper(), None) + if not isinstance(numeric_level, int): + raise ValueError('Invalid log level: %s' % loglevel) + logging.basicConfig(level=numeric_level, filename='rules.log', filemode='w') + else: + assert False, "unhandled option" + + songfiles = recursiveFind(os.path.join(library, 'songs'), '*.sg') + + for filename in songfiles: + with open(filename, 'r+') as songfile: + logging.info("checking file: "+filename) + data = songfile.read() + #no dots for acronyms + #data = re.sub("(?P[A-Z])\.","\g", data) + data = replace_words(data) + data = language_rules(data) + lines = process_lines(data.split('\n')) + data = "\n".join(lines) + songfile.seek(0) + songfile.write(data) + songfile.truncate() + +if __name__ == '__main__': + main() diff --git a/utils/songbook-gtab.py b/utils/songbook-gtab.py new file mode 100755 index 00000000..c957a8ca --- /dev/null +++ b/utils/songbook-gtab.py @@ -0,0 +1,85 @@ +#!/usr/bin/python +# + +import sys +import re +from optparse import OptionParser +from utils.utils import recursiveFind + +from utils.utils import recursiveFind + +# Pattern set to ignore latex command in title prefix +gtabPattern = re.compile(r"\\gtab\{(.*)\}\{(.*)\}"); + +def main(): + usage = "usage: %prog [options]" + parser = OptionParser(usage) + parser.add_option("-o", "--output", dest="filename", + help="write result into FILE", metavar="FILE") + (options, args) = parser.parse_args() + + # Options processing + if options.filename: + output = open(options.filename,"w") + else: + output = sys.stdout + + # Actual processing + chords = dict() + positions = dict() + + songfiles = recursiveFind(os.path.join(library, 'songs'), '*.sg') + + for file in songfiles: + for line in open(file): + result = gtabPattern.match(line) + if result: + (chord,position) = result.groups() + if not chords.has_key(chord): + chords[chord] = set() + chords[chord].add(position) + if not positions.has_key(position): + positions[position] = set() + positions[position].add(chord) + + document = [ + '\\documentclass{article}', + '\\usepackage[chorded]{songs}', + '\\usepackage[utf8]{inputenc}', + '\\title{Accords}', + '\\author{Romain Goffe \\and Alexandre Dupas}', + '\\date{}', + '\\begin{document}', + '\\maketitle', + '\\begin{songs}{}', + ] + + document.append('\\section{Chords names}') + + chordskeys = chords.keys() + chordskeys.sort() + + for k in chordskeys: + document.append('\\subsection{'+k.replace('#','\\#').replace('&','\\&')+'}') + for p in chords[k]: + document.append('\\gtab{'+k+'}{'+p+'}') + + document.append('\\section{Chords names}') + + positionskeys = positions.keys() + positionskeys.sort() + + for k in positionskeys: + document.append('\\subsection{'+k+'}') + for p in positions[k]: + document.append('\\gtab{'+p+'}{'+k+'}') + + document.extend([ + '\\end{songs}', + '\\end{document}', + ]) + + output.write('\n'.join(document)) + +if __name__ == '__main__': + main()