Skip to content

Commit

Permalink
Add ability to disable VDJ remix field
Browse files Browse the repository at this point in the history
  • Loading branch information
aw-was-here committed Apr 28, 2023
1 parent dc44cc5 commit 36df3e4
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 8 deletions.
16 changes: 8 additions & 8 deletions nowplaying/inputs/m3u.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:', '')
Expand All @@ -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

Expand Down
7 changes: 7 additions & 0 deletions nowplaying/inputs/virtualdj.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 '''
Expand Down Expand Up @@ -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 '''
Expand All @@ -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 '''
Expand Down
16 changes: 16 additions & 0 deletions nowplaying/resources/inputs_virtualdj_ui.ui
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,22 @@ li.checked::marker { content: "\2612"; }
<string>Re-read Playlists</string>
</property>
</widget>
<widget class="QCheckBox" name="remix_checkbox">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>131</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Use Remix Field</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</widget>
<resources/>
<connections/>
Expand Down
23 changes: 23 additions & 0 deletions tests/test_m3u.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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 '''
Expand Down
24 changes: 24 additions & 0 deletions tests/test_virtualdj.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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 '''
Expand Down

0 comments on commit 36df3e4

Please sign in to comment.