Browse Source

Moving in some stuff from songbook-core

accords
Louis 10 years ago
parent
commit
800cb66994
  1. 943
      NEWS
  2. 35
      utils/cover.sh
  3. 13
      utils/header-english
  4. 10
      utils/header-french
  5. 13
      utils/header-last-volume
  6. 28
      utils/langbooks.sh
  7. 17
      utils/language.sh
  8. 46
      utils/last-volume.sh
  9. 119
      utils/make-html
  10. 20
      utils/new-songs-list.sh
  11. 94
      utils/release.sh
  12. 39
      utils/resize-cover.py
  13. 276
      utils/rules.py
  14. 85
      utils/songbook-gtab.py

943
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 <alexandre.dupas@gmail.com> 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 <alexandre.dupas@gmail.com> 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 <alexandre.dupas@gmail.com> 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 <alexandre.dupas@gmail.com> 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 <alexandre.dupas@gmail.com> Sun, 15 Feb 2009 18:34:59 +0100
songbook (0.2)
Initial version.
-- Alexandre Dupas <alexandre.dupas@gmail.com> Sat, 11 Oct 2008 20:00:00 +0100

35
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;

13
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" : [

10
utils/header-french

@ -0,0 +1,10 @@
{
"template" : "patacrep.tmpl",
"lang" : "french",
"subtitle" : "chanson francaise",
"bookoptions" : [
"diagram",
"lilypond",
"pictures"
],
"songs" : [

13
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" : [

28
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"

17
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;

46
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"

119
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( <FILE> )
{
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 '<ul>';
foreach my $author ( sort keys %table )
{
print '<li><strong>', $author, '</strong><ul>';
foreach my $title ( sort @{$table{$author}} )
{
print '<li>',$title,'</li>'
}
print '</ul></li>';
}
print '</ul>';

20
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"

94
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"

39
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)

276
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'": "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",
"": "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{": "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{<lang>}
'''
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<last_char>\S)(?P<symbol>[!?;:])","\g<last_char> \g<symbol>", string)
#... except for gtabs macros with capos
string = re.sub("(?P<gtab>tab.?{.*)\s:","\g<gtab>:", 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("(?P<gtab>tab.?{.*)\s:","\g<gtab>:", string)
#ensure no spaces after symbols (
string = re.sub("(?P<symbol>[\(])\s(?P<next_char>\S)","\g<symbol>\g<next_char>", 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<last_char>\S)\s(?P<symbol>[!?;:\)])","\g<last_char>\g<symbol>", string)
#ensure no spaces after symbols (
string = re.sub("(?P<symbol>[\(])\s(?P<next_char>\S)","\g<symbol>\g<next_char>", 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<last_char>\S)\s(?P<symbol>[!?;:\)])","\g<last_char>\g<symbol>", string)
#ensure no spaces after symbols ¿ ¡ (
string = re.sub("(?P<symbol>[¿¡\(])\s(?P<next_char>\S)","\g<symbol>\g<next_char>", 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<last_char>\S)\s{2,}","\g<last_char> ", 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<capital_letter>[A-Z])\.","\g<capital_letter>", 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()

85
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()
Loading…
Cancel
Save