songs2slides

A tool that automatically finds song lyrics and creates lyric slideshows
git clone https://git.ashermorgan.net/songs2slides/
Log | Files | Refs | README

commit e2b55f91dfe5fdd2a5e6a96707231c96e4fe0f5e
parent f2182dd129eb126bc97a93fdbbfa4e951c70751f
Author: AsherMorgan <59518073+AsherMorgan@users.noreply.github.com>
Date:   Sun,  6 Sep 2020 12:19:06 -0700

Improve removal of content inside parentheses.

Diffstat:
MSongs2Slides/core.py | 5+----
MTests/test_core.py | 12++++++------
2 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/Songs2Slides/core.py b/Songs2Slides/core.py @@ -66,10 +66,7 @@ def ParseLyrics(title, artist, settings): # Remove content in parentheses if (settings["remove-parentheses"]): - rawLyrics = re.sub(r'\([^)]*\)', '', rawLyrics) - - # Remove extra spaces before commas - rawLyrics = rawLyrics.replace(" ,", ",") + rawLyrics = re.sub(r'\s?\([^)]*\)', '', rawLyrics) # Parse Lyrics rawLines = rawLyrics.split("\n") diff --git a/Tests/test_core.py b/Tests/test_core.py @@ -55,32 +55,32 @@ class TestCore(unittest.TestCase): # Mock core.getLyrics method with patch('Songs2Slides.core.GetLyrics') as mocked_get: # Initialize mocked_get - mocked_get.return_value = ("[Verse 1]\nTest1\nTest2\nTest3\nTest4\nTest5 (Test5)\n\n[Verse 2]\nTest10\nTest20\nTest30\nTest40\nTest50 (Test50)", "Test Song", "Test Artist") + mocked_get.return_value = ("[Verse 1]\nTest1\nTest2\nTest3\nTest4\nTest5 (Test5)\n\n[Verse 2]\nTest10\nTest20\nTest30\nTest40\nTest50(Test50)", "Test Song", "Test Artist") # Test parser lyrics = core.ParseLyrics("tEsT sOnG 2", "tEsT aRtIsT", settings) - self.assertEqual(lyrics, ["Test Song\nTest Artist", "Test1\nTest2\nTest3\nTest4", "Test5 (Test5)", "Test10\nTest20\nTest30\nTest40", "Test50 (Test50)", ""]) + self.assertEqual(lyrics, ["Test Song\nTest Artist", "Test1\nTest2\nTest3\nTest4", "Test5 (Test5)", "Test10\nTest20\nTest30\nTest40", "Test50(Test50)", ""]) mocked_get.assert_called_with("tEsT sOnG 2", "tEsT aRtIsT") # Test parser without title slide settings["title-slides"] = False lyrics = core.ParseLyrics("tEsT sOnG", "tEsT aRtIsT", settings) - self.assertEqual(lyrics, ["Test1\nTest2\nTest3\nTest4", "Test5 (Test5)", "Test10\nTest20\nTest30\nTest40", "Test50 (Test50)", ""]) + self.assertEqual(lyrics, ["Test1\nTest2\nTest3\nTest4", "Test5 (Test5)", "Test10\nTest20\nTest30\nTest40", "Test50(Test50)", ""]) # Test parser without slide at end settings["slide-between-songs"] = False lyrics = core.ParseLyrics("tEsT sOnG", "tEsT aRtIsT", settings) - self.assertEqual(lyrics, ["Test1\nTest2\nTest3\nTest4", "Test5 (Test5)", "Test10\nTest20\nTest30\nTest40", "Test50 (Test50)"]) + self.assertEqual(lyrics, ["Test1\nTest2\nTest3\nTest4", "Test5 (Test5)", "Test10\nTest20\nTest30\nTest40", "Test50(Test50)"]) # Test parser with 3 lines per slide settings["lines-per-slide"] = 3 lyrics = core.ParseLyrics("tEsT sOnG", "tEsT aRtIsT", settings) - self.assertEqual(lyrics, ["Test1\nTest2\nTest3", "Test4\nTest5 (Test5)", "Test10\nTest20\nTest30", "Test40\nTest50 (Test50)"]) + self.assertEqual(lyrics, ["Test1\nTest2\nTest3", "Test4\nTest5 (Test5)", "Test10\nTest20\nTest30", "Test40\nTest50(Test50)"]) # Test parser with parentheses remover settings["remove-parentheses"] = True lyrics = core.ParseLyrics("tEsT sOnG 2", "tEsT aRtIsT", settings) - self.assertEqual(lyrics, ["Test1\nTest2\nTest3", "Test4\nTest5 ", "Test10\nTest20\nTest30", "Test40\nTest50 "]) + self.assertEqual(lyrics, ["Test1\nTest2\nTest3", "Test4\nTest5", "Test10\nTest20\nTest30", "Test40\nTest50"]) # Test parser with blank line mocked_get.return_value = ("[Verse 1]\nTest1\n\n[Instrumental]\n\n[Verse 2]\nTest2", "Test Song", "Test Artist")