forked from openlp/openlp
Backport songbeamer fix
bzr-revno: 2682
This commit is contained in:
commit
991296d8e3
@ -22,11 +22,10 @@
|
|||||||
"""
|
"""
|
||||||
The :mod:`songbeamer` module provides the functionality for importing SongBeamer songs into the OpenLP database.
|
The :mod:`songbeamer` module provides the functionality for importing SongBeamer songs into the OpenLP database.
|
||||||
"""
|
"""
|
||||||
import chardet
|
|
||||||
import codecs
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import chardet
|
||||||
|
|
||||||
from openlp.plugins.songs.lib import VerseType
|
from openlp.plugins.songs.lib import VerseType
|
||||||
from openlp.plugins.songs.lib.importers.songimport import SongImport
|
from openlp.plugins.songs.lib.importers.songimport import SongImport
|
||||||
@ -120,7 +119,7 @@ class SongBeamerImport(SongImport):
|
|||||||
# The encoding should only be ANSI (cp1252), UTF-8, Unicode, Big-Endian-Unicode.
|
# The encoding should only be ANSI (cp1252), UTF-8, Unicode, Big-Endian-Unicode.
|
||||||
# So if it doesn't start with 'u' we default to cp1252. See:
|
# So if it doesn't start with 'u' we default to cp1252. See:
|
||||||
# https://forum.songbeamer.com/viewtopic.php?p=419&sid=ca4814924e37c11e4438b7272a98b6f2
|
# https://forum.songbeamer.com/viewtopic.php?p=419&sid=ca4814924e37c11e4438b7272a98b6f2
|
||||||
if self.input_file_encoding.lower().startswith('u'):
|
if not self.input_file_encoding.lower().startswith('u'):
|
||||||
self.input_file_encoding = 'cp1252'
|
self.input_file_encoding = 'cp1252'
|
||||||
infile = open(import_file, 'rt', encoding=self.input_file_encoding)
|
infile = open(import_file, 'rt', encoding=self.input_file_encoding)
|
||||||
song_data = infile.readlines()
|
song_data = infile.readlines()
|
||||||
|
@ -49,6 +49,13 @@ class TestSongBeamerFileImport(SongImportTestHelper):
|
|||||||
self.file_import([os.path.join(TEST_PATH, 'Lobsinget dem Herrn.sng')],
|
self.file_import([os.path.join(TEST_PATH, 'Lobsinget dem Herrn.sng')],
|
||||||
self.load_external_result_data(os.path.join(TEST_PATH, 'Lobsinget dem Herrn.json')))
|
self.load_external_result_data(os.path.join(TEST_PATH, 'Lobsinget dem Herrn.json')))
|
||||||
|
|
||||||
|
def test_cp1252_encoded_file(self):
|
||||||
|
"""
|
||||||
|
Test that a CP1252 encoded file get's decoded properly.
|
||||||
|
"""
|
||||||
|
self.file_import([os.path.join(TEST_PATH, 'cp1252song.sng')],
|
||||||
|
self.load_external_result_data(os.path.join(TEST_PATH, 'cp1252song.json')))
|
||||||
|
|
||||||
|
|
||||||
class TestSongBeamerImport(TestCase):
|
class TestSongBeamerImport(TestCase):
|
||||||
"""
|
"""
|
||||||
|
8
tests/resources/songbeamersongs/cp1252song.json
Normal file
8
tests/resources/songbeamersongs/cp1252song.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"title": "Some Song",
|
||||||
|
"authors": ["Author"],
|
||||||
|
"verses" : [
|
||||||
|
["Here are a couple of \"weird\" chars’’’.\n", "v"],
|
||||||
|
["Here is another one….\n\n", "v"]
|
||||||
|
]
|
||||||
|
}
|
15
tests/resources/songbeamersongs/cp1252song.sng
Normal file
15
tests/resources/songbeamersongs/cp1252song.sng
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#LangCount=1
|
||||||
|
#Editor=SongBeamer 4.28a
|
||||||
|
#Version=3
|
||||||
|
#Format=F/K//
|
||||||
|
#TitleFormat=U
|
||||||
|
#Title=Some Song
|
||||||
|
#Author=Author
|
||||||
|
#Melody=Author
|
||||||
|
#(c)=No copyright
|
||||||
|
#CCLI=0000000000
|
||||||
|
---
|
||||||
|
Here are a couple of "weird" chars’’’.
|
||||||
|
---
|
||||||
|
Here is another one….
|
||||||
|
|
Loading…
Reference in New Issue
Block a user