diff --git a/nowplaying/inputs/m3u.py b/nowplaying/inputs/m3u.py index 7d3b3a52..b0af31c5 100755 --- a/nowplaying/inputs/m3u.py +++ b/nowplaying/inputs/m3u.py @@ -115,8 +115,7 @@ def _verify_file(self, m3ufilename, filestring): break return found - @staticmethod - def _parse_extvdj(inputline): + def _parse_extvdj(self, inputline): ''' read the #EXTVDJ comment extension ''' metadata = {} vdjline = inputline.replace('#EXTVDJ:', '') @@ -131,12 +130,13 @@ def _parse_extvdj(inputline): except AttributeError: pass - try: - remix = EXTVDJ_REMIX_RE.match(vdjline).group(1) - if metadata.get('title'): - metadata['title'] += f' ({remix})' - except AttributeError: - pass + if self.config.cparser.value('virtualdj/useremix', type=bool): + try: + remix = EXTVDJ_REMIX_RE.match(vdjline).group(1) + if metadata.get('title'): + metadata['title'] += f' ({remix})' + except AttributeError: + pass return metadata diff --git a/nowplaying/inputs/virtualdj.py b/nowplaying/inputs/virtualdj.py index 20365dc7..0ed83357 100755 --- a/nowplaying/inputs/virtualdj.py +++ b/nowplaying/inputs/virtualdj.py @@ -131,6 +131,7 @@ def defaults(self, qsettings): str(vdjdir.joinpath('History'))) qsettings.setValue('virtualdj/playlists', str(vdjdir.joinpath('Playlists'))) + qsettings.setValue('virtualdj/useremix', True) def on_playlist_reread_button(self): ''' user clicked re-read collections ''' @@ -173,6 +174,10 @@ def load_settingsui(self, qwidget): self.config.cparser.value('virtualdj/history')) qwidget.playlistdir_lineedit.setText( self.config.cparser.value('virtualdj/playlists')) + qwidget.remix_checkbox.setChecked( + self.config.cparser.value('virtualdj/useremix', + type=bool, + defaultValue=True)) def verify_settingsui(self, qwidget): ''' verify settings ''' @@ -189,6 +194,8 @@ def save_settingsui(self, qwidget): qwidget.historydir_lineedit.text()) self.config.cparser.setValue('virtualdj/playlists', qwidget.playlistdir_lineedit.text()) + self.config.cparser.setValue('virtualdj/useremix', + qwidget.remix_checkbox.isChecked()) def desc_settingsui(self, qwidget): ''' description ''' diff --git a/nowplaying/resources/inputs_virtualdj_ui.ui b/nowplaying/resources/inputs_virtualdj_ui.ui index e2a4e376..f8fdc050 100644 --- a/nowplaying/resources/inputs_virtualdj_ui.ui +++ b/nowplaying/resources/inputs_virtualdj_ui.ui @@ -95,6 +95,22 @@ li.checked::marker { content: "\2612"; } Re-read Playlists + + + + 20 + 30 + 131 + 20 + + + + Use Remix Field + + + true + + diff --git a/tests/test_m3u.py b/tests/test_m3u.py index f683f055..6c3d4535 100755 --- a/tests/test_m3u.py +++ b/tests/test_m3u.py @@ -285,6 +285,8 @@ async def test_vdjm3u_remix(m3u_bootstrap): # pylint: disable=redefined-outer-n ''' automated integration test ''' config = m3u_bootstrap mym3udir = config.cparser.value('m3u/directory') + config.cparser.setValue('virtualdj/useremix', True) + config.cparser.sync() plugin = nowplaying.inputs.m3u.Plugin(config=config, m3udir=mym3udir) await plugin.start() await asyncio.sleep(5) @@ -301,6 +303,27 @@ async def test_vdjm3u_remix(m3u_bootstrap): # pylint: disable=redefined-outer-n await asyncio.sleep(5) +@pytest.mark.asyncio +async def test_vdjm3u_noremix(m3u_bootstrap): # pylint: disable=redefined-outer-name + ''' automated integration test ''' + config = m3u_bootstrap + mym3udir = config.cparser.value('m3u/directory') + config.cparser.setValue('virtualdj/useremix', False) + config.cparser.sync() + plugin = nowplaying.inputs.m3u.Plugin(config=config, m3udir=mym3udir) + await plugin.start() + await asyncio.sleep(5) + m3ufile = os.path.join(mym3udir, 'test.m3u') + write_extvdj_remix(m3ufile) + await asyncio.sleep(1) + metadata = await plugin.getplayingtrack() + assert metadata.get('artist') == 'j. period' + assert metadata.get('title') == 'Buddy [Remix]' + assert not metadata.get('filename') + await plugin.stop() + await asyncio.sleep(5) + + @pytest.mark.asyncio async def test_vdjm3u_ampersand(m3u_bootstrap): # pylint: disable=redefined-outer-name ''' automated integration test ''' diff --git a/tests/test_virtualdj.py b/tests/test_virtualdj.py index b1a7eeef..e7a3cd14 100755 --- a/tests/test_virtualdj.py +++ b/tests/test_virtualdj.py @@ -290,6 +290,8 @@ async def test_vdjvirtualdj_remix(virtualdj_bootstrap): # pylint: disable=redef ''' automated integration test ''' config = virtualdj_bootstrap myvirtualdjdir = config.cparser.value('virtualdj/history') + config.cparser.setValue('virtualdj/useremix', True) + config.cparser.sync() plugin = nowplaying.inputs.virtualdj.Plugin(config=config, m3udir=myvirtualdjdir) await plugin.start() @@ -307,6 +309,28 @@ async def test_vdjvirtualdj_remix(virtualdj_bootstrap): # pylint: disable=redef await asyncio.sleep(5) +@pytest.mark.asyncio +async def test_vdjvirtualdj_noremix(virtualdj_bootstrap): # pylint: disable=redefined-outer-name + ''' automated integration test ''' + config = virtualdj_bootstrap + myvirtualdjdir = config.cparser.value('virtualdj/history') + config.cparser.setValue('virtualdj/useremix', False) + config.cparser.sync() + plugin = nowplaying.inputs.virtualdj.Plugin(config=config, + m3udir=myvirtualdjdir) + await plugin.start() + await asyncio.sleep(5) + virtualdjfile = os.path.join(myvirtualdjdir, 'test.m3u') + write_extvdj_remix(virtualdjfile) + await asyncio.sleep(1) + metadata = await plugin.getplayingtrack() + assert metadata.get('artist') == 'j. period' + assert metadata.get('title') == 'Buddy [Remix]' + assert not metadata.get('filename') + await plugin.stop() + await asyncio.sleep(5) + + @pytest.mark.asyncio async def test_vdjvirtualdj_ampersand(virtualdj_bootstrap): # pylint: disable=redefined-outer-name ''' automated integration test '''