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 '''