From a5fc219abb0774bcded14b564d2530af1400a818 Mon Sep 17 00:00:00 2001 From: Derek Scotney Date: Tue, 7 Dec 2010 22:03:20 +0200 Subject: [PATCH 1/3] Updated to handle CCLI verse type 'misc' --- openlp/plugins/songs/lib/cclifileimport.py | 39 ++++++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index 207756e4b..c22c987f4 100755 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -165,6 +165,7 @@ class CCLIFileImport(SongImport): song_words = line[6:].strip() #Unhandled usr keywords:Type,Version,Admin,Themes,Keys #Process Fields and words sections + check_first_verse_line = False field_list = song_fields.split(u'/t') words_list = song_words.split(u'/t') for counter in range(0, len(field_list)): @@ -176,10 +177,25 @@ class CCLIFileImport(SongImport): verse_type = u'B' else: #Other verse_type = u'O' + check_first_verse_line = True verse_text = unicode(words_list[counter]) verse_text = verse_text.replace("/n", "\n") + verse_lines = verse_text.split(u'\n', 1) + if check_first_verse_line: + if verse_lines[0].startswith(u'(PRE-CHORUS'): + verse_type = u'P' + log.debug(u'USR verse PRE-CHORUS: %s', verse_lines[0] ) + verse_text = verse_lines[1] + elif verse_lines[0].startswith(u'(BRIDGE'): + verse_type = u'B' + log.debug(u'USR verse BRIDGE') + verse_text = verse_lines[1] + elif verse_lines[0].startswith(u'('): + verse_type = u'O' + verse_text = verse_lines[1] if len(verse_text) > 0: self.add_verse(verse_text, verse_type) + check_first_verse_line = False #Handle multiple authors author_list = song_author.split(u'/') if len(author_list) < 2: @@ -228,6 +244,7 @@ class CCLIFileImport(SongImport): log.debug(u'TXT file text: %s', textList) self.set_defaults() line_number = 0 + check_first_verse_line = False verse_text = u'' song_comments = u'' song_copyright = u'' @@ -265,16 +282,32 @@ class CCLIFileImport(SongImport): elif verse_desc_parts[0].startswith(u'Br'): verse_type = u'B' else: + #we need to analyse the next line for + #verse type, so set flag verse_type = u'O' + check_first_verse_line = True verse_number = verse_desc_parts[1] else: verse_type = u'O' verse_number = 1 verse_start = True else: - # We have verse content or the start of the - # last part. Add l so as to keep the CRLF - verse_text = verse_text + line + #check first line for verse type + if check_first_verse_line: + if line.startswith(u'(PRE-CHORUS'): + verse_type = u'P' + elif line.startswith(u'(BRIDGE'): + verse_type = u'B' + # Handle all other misc types + elif line.startswith(u'('): + verse_type = u'O' + else: + verse_text = verse_text + line + check_first_verse_line = False + else: + # We have verse content or the start of the + # last part. Add l so as to keep the CRLF + verse_text = verse_text + line else: #line_number=2, copyright if line_number == 2: From 298a159b5ecfd1f6847de875368abf05b99c9a60 Mon Sep 17 00:00:00 2001 From: Derek Scotney Date: Tue, 7 Dec 2010 23:10:57 +0200 Subject: [PATCH 2/3] Update to verse types --- openlp/plugins/songs/lib/cclifileimport.py | 33 +++++++++++----------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index c22c987f4..adb55ee6d 100755 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -30,6 +30,7 @@ import chardet import codecs from songimport import SongImport +from openlp.plugins.songs.lib import VerseType log = logging.getLogger(__name__) @@ -170,28 +171,26 @@ class CCLIFileImport(SongImport): words_list = song_words.split(u'/t') for counter in range(0, len(field_list)): if field_list[counter].startswith(u'Ver'): - verse_type = u'V' + verse_type = VerseType.to_string(VerseType.Verse) elif field_list[counter].startswith(u'Ch'): - verse_type = u'C' + verse_type = VerseType.to_string(VerseType.Chorus) elif field_list[counter].startswith(u'Br'): - verse_type = u'B' + verse_type = VerseType.to_string(VerseType.Bridge) else: #Other - verse_type = u'O' + verse_type = VerseType.to_string(VerseType.Other) check_first_verse_line = True verse_text = unicode(words_list[counter]) verse_text = verse_text.replace("/n", "\n") verse_lines = verse_text.split(u'\n', 1) if check_first_verse_line: if verse_lines[0].startswith(u'(PRE-CHORUS'): - verse_type = u'P' - log.debug(u'USR verse PRE-CHORUS: %s', verse_lines[0] ) + verse_type = VerseType.to_string(VerseType.PreChorus) verse_text = verse_lines[1] elif verse_lines[0].startswith(u'(BRIDGE'): - verse_type = u'B' - log.debug(u'USR verse BRIDGE') + verse_type = VerseType.to_string(VerseType.Bridge) verse_text = verse_lines[1] elif verse_lines[0].startswith(u'('): - verse_type = u'O' + verse_type = VerseType.to_string(VerseType.Other) verse_text = verse_lines[1] if len(verse_text) > 0: self.add_verse(verse_text, verse_type) @@ -276,31 +275,31 @@ class CCLIFileImport(SongImport): verse_desc_parts = clean_line.split(' ') if len(verse_desc_parts) == 2: if verse_desc_parts[0].startswith(u'Ver'): - verse_type = u'V' + verse_type = VerseType.to_string(VerseType.Verse) elif verse_desc_parts[0].startswith(u'Ch'): - verse_type = u'C' + verse_type = VerseType.to_string(VerseType.Chorus) elif verse_desc_parts[0].startswith(u'Br'): - verse_type = u'B' + verse_type = VerseType.to_string(VerseType.Bridge) else: #we need to analyse the next line for #verse type, so set flag - verse_type = u'O' + verse_type = VerseType.to_string(VerseType.Other) check_first_verse_line = True verse_number = verse_desc_parts[1] else: - verse_type = u'O' + verse_type = VerseType.to_string(VerseType.Other) verse_number = 1 verse_start = True else: #check first line for verse type if check_first_verse_line: if line.startswith(u'(PRE-CHORUS'): - verse_type = u'P' + verse_type = VerseType.to_string(VerseType.PreChorus) elif line.startswith(u'(BRIDGE'): - verse_type = u'B' + verse_type = VerseType.to_string(VerseType.Bridge) # Handle all other misc types elif line.startswith(u'('): - verse_type = u'O' + verse_type = VerseType.to_string(VerseType.Other) else: verse_text = verse_text + line check_first_verse_line = False From cc7780574be6119bf7cb73e22dd677a8a58be14e Mon Sep 17 00:00:00 2001 From: Derek Scotney Date: Wed, 8 Dec 2010 21:14:27 +0200 Subject: [PATCH 3/3] reverted back to revision 1134 --- openlp/plugins/songs/lib/cclifileimport.py | 33 +++++++++++----------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index adb55ee6d..c22c987f4 100755 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -30,7 +30,6 @@ import chardet import codecs from songimport import SongImport -from openlp.plugins.songs.lib import VerseType log = logging.getLogger(__name__) @@ -171,26 +170,28 @@ class CCLIFileImport(SongImport): words_list = song_words.split(u'/t') for counter in range(0, len(field_list)): if field_list[counter].startswith(u'Ver'): - verse_type = VerseType.to_string(VerseType.Verse) + verse_type = u'V' elif field_list[counter].startswith(u'Ch'): - verse_type = VerseType.to_string(VerseType.Chorus) + verse_type = u'C' elif field_list[counter].startswith(u'Br'): - verse_type = VerseType.to_string(VerseType.Bridge) + verse_type = u'B' else: #Other - verse_type = VerseType.to_string(VerseType.Other) + verse_type = u'O' check_first_verse_line = True verse_text = unicode(words_list[counter]) verse_text = verse_text.replace("/n", "\n") verse_lines = verse_text.split(u'\n', 1) if check_first_verse_line: if verse_lines[0].startswith(u'(PRE-CHORUS'): - verse_type = VerseType.to_string(VerseType.PreChorus) + verse_type = u'P' + log.debug(u'USR verse PRE-CHORUS: %s', verse_lines[0] ) verse_text = verse_lines[1] elif verse_lines[0].startswith(u'(BRIDGE'): - verse_type = VerseType.to_string(VerseType.Bridge) + verse_type = u'B' + log.debug(u'USR verse BRIDGE') verse_text = verse_lines[1] elif verse_lines[0].startswith(u'('): - verse_type = VerseType.to_string(VerseType.Other) + verse_type = u'O' verse_text = verse_lines[1] if len(verse_text) > 0: self.add_verse(verse_text, verse_type) @@ -275,31 +276,31 @@ class CCLIFileImport(SongImport): verse_desc_parts = clean_line.split(' ') if len(verse_desc_parts) == 2: if verse_desc_parts[0].startswith(u'Ver'): - verse_type = VerseType.to_string(VerseType.Verse) + verse_type = u'V' elif verse_desc_parts[0].startswith(u'Ch'): - verse_type = VerseType.to_string(VerseType.Chorus) + verse_type = u'C' elif verse_desc_parts[0].startswith(u'Br'): - verse_type = VerseType.to_string(VerseType.Bridge) + verse_type = u'B' else: #we need to analyse the next line for #verse type, so set flag - verse_type = VerseType.to_string(VerseType.Other) + verse_type = u'O' check_first_verse_line = True verse_number = verse_desc_parts[1] else: - verse_type = VerseType.to_string(VerseType.Other) + verse_type = u'O' verse_number = 1 verse_start = True else: #check first line for verse type if check_first_verse_line: if line.startswith(u'(PRE-CHORUS'): - verse_type = VerseType.to_string(VerseType.PreChorus) + verse_type = u'P' elif line.startswith(u'(BRIDGE'): - verse_type = VerseType.to_string(VerseType.Bridge) + verse_type = u'B' # Handle all other misc types elif line.startswith(u'('): - verse_type = VerseType.to_string(VerseType.Other) + verse_type = u'O' else: verse_text = verse_text + line check_first_verse_line = False