From 76e35381271ca43e07aa0541e680b198fe65872c Mon Sep 17 00:00:00 2001 From: Martin Thompson Date: Thu, 24 Jun 2010 21:13:32 +0100 Subject: [PATCH] Imports all of SOF and the opensong default songs without crashing --- openlp/plugins/songs/lib/test2.opensong | 45 +++++++++++++++++ .../plugins/songs/lib/test_importing_lots.py | 49 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 openlp/plugins/songs/lib/test2.opensong create mode 100644 openlp/plugins/songs/lib/test_importing_lots.py diff --git a/openlp/plugins/songs/lib/test2.opensong b/openlp/plugins/songs/lib/test2.opensong new file mode 100644 index 000000000..e6a3b4913 --- /dev/null +++ b/openlp/plugins/songs/lib/test2.opensong @@ -0,0 +1,45 @@ + + + Martins 2nd Test + Martin Thompson + 2010 Martin Thompson + 2 + + Blah + + + + + + + + + + + ;Comment +[V] +. A B C +1 v1 Line 1___ +2 v2 Line 1___ +. A B C7 +1 V1 Line 2 +2 V2 Line 2 + +[b1] + Bridge 1 + Bridge 1 line 2 +[C1] + Chorus 1 + +[C2] + Chorus 2 + + diff --git a/openlp/plugins/songs/lib/test_importing_lots.py b/openlp/plugins/songs/lib/test_importing_lots.py new file mode 100644 index 000000000..7543de60e --- /dev/null +++ b/openlp/plugins/songs/lib/test_importing_lots.py @@ -0,0 +1,49 @@ +from openlp.plugins.songs.lib.opensongimport import OpenSongImport +from openlp.plugins.songs.lib.manager import SongManager +from glob import glob +from zipfile import ZipFile +import os +from traceback import print_exc +import sys +import codecs +def opensong_import_lots(): + ziploc=u'/home/mjt/openlp/OpenSong_Data/' + files=[] + files.extend(glob(ziploc+u'Songs.zip')) + files.extend(glob(ziploc+u'SOF.zip')) +# files.extend(glob(ziploc+u'spanish_songs_for_opensong.zip')) +# files.extend(glob(ziploc+u'opensong_*.zip')) + errfile=codecs.open(u'import_lots_errors.txt', u'w', u'utf8') + manager=SongManager() + for file in files: + print u'Importing', file + z=ZipFile(file, u'r') + for song in z.infolist(): + filename=song.filename.decode('cp852') + parts=os.path.split(filename) + if parts[-1] == u'': + #No final part => directory + continue + # xxx need to handle unicode filenames (CP437?? Winzip does this) + print " ", file, ":",filename, + songfile=z.open(song) + + o=OpenSongImport(manager) + try: + o.do_import_file(songfile) + except: + print "Failure", + + errfile.write(u'Failure: %s:%s\n' %(file, filename)) + songfile=z.open(song) + for l in songfile.readlines(): + l=l.decode('utf8') + print(u' |%s\n'%l.strip()) + errfile.write(u' |%s\n'%l.strip()) + print_exc(3, file=errfile) + continue + # o.finish() + print "OK" + # o.song.print_song() +if __name__=="__main__": + opensong_import_lots()