Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Limit or eliminate the creation of dummy-albums for orphaned tracks #1453

Closed
andreas-henning opened this issue Jan 12, 2018 · 5 comments
Closed

Comments

@andreas-henning
Copy link
Contributor

andreas-henning commented Jan 12, 2018

Dummy albums are created to serve as a container for orphaned tracks (i.e. tracks without an album).

I propose that dummy-albums should be removed from Artists, Genres and Albums views. In the Artists and Genres views, orphaned tracks will remain accessible through the tracks-list. Orphaned tracks would no longer be accessible from the Albums view, which might pose a problem for some.

On the other hand, I can't imagine this being useful in a practical sense. If we want to play an artist's tracks (including orphaned tracks), we can do that from the 'Artists' view. If we want to play tracks of a certain genre (including orphaned tracks), we can do that from the 'Genres' view. What exactly is the use case where somebody would want to play only an artist's orphaned tracks?

For people with music collections with many orphaned tracks, removing dummy-albums will dramatically shorten the list of albums in the 'Albums' view, making it much easier to find real albums.

For people who have a clean music collection, where every track is assigned to an album, this proposal would change nothing.

Ideas? Feedback?

UPDATE:
Previously I mentioned that dummy-albums can occasionally have no tracks, making them non-functional. I've since created a separate issue for that, which is now here:
#1458

@xipmix
Copy link
Contributor

xipmix commented Jan 13, 2018

One use I can think of for displaying orphaned tracks is so they could be cleaned up, ie assigned to some parent by moving to the subdirectory in the music collection the user deems appropriate. I think flagging them as orphans in the 'Album' view, while making them available as normal under 'Artist' or 'Genre', as you propose, is a reasonable approach.

Does it make any sense to collate all orphans, from whatever artist, in one 'orphans' dummy album in the 'Album' view? That also tidies up the Album listng.

@andreas-henning
Copy link
Contributor Author

andreas-henning commented Jan 13, 2018

@xipmix

I think flagging them as orphans in the 'Album' view, while making them available as normal under 'Artist' or 'Genre', as you propose, is a reasonable approach.

Did I understand you correctly:

It would be okay to remove dummy-albums from the 'Artists' and 'Genres' views, because in both of those views orphaned tracks are still accessible in the list of tracks.

I would certainly agree with that. I also like your idea to collate orphans in the 'Albums' view. IMHO that would nicely clean up collections with many orphans without sacrificing functionality.

I could get behind all of that.

I'll attempt a PR if you think that sort of change isn't going to cause hordes of users to descend on volumio-HQ with pitchforks, because they were using all those dummy-albums in some legitimate way that I just can't think of. ;-)

@xipmix
Copy link
Contributor

xipmix commented Jan 14, 2018

It would be okay to remove dummy-albums from the 'Artists' view (as is already the case in the 'Genres' view), because in both of those views orphaned tracks are still accessible in the list of tracks.

Yes, this is what I was suggesting. I think the danger of fomenting revolution is low. It could be lowered further by documenting the thinking behind orphan handling in docs.

I just noticed volumio/Volumio2-UI#448. I don't think your orphan handling proposal here has an impact there but your PR #1447 might.

@andreas-henning
Copy link
Contributor Author

andreas-henning commented Jan 14, 2018

volumio/Volumio2-UI#448 may be responsible for the non-functional dummy-album I've not yet looked into. Don't know for sure.

I'll attempt a PR to:

  • collate orphaned tracks into a single dummy-album in the Albums view
  • remove dummy-albums from the Genres and Artists views entirely

@andreas-henning andreas-henning changed the title Inconsistent handling of orphaned tracks Limit or eliminate the creation of dummy-albums for orphaned tracks Jan 16, 2018
andreas-henning pushed a commit to andreas-henning/Volumio2 that referenced this issue Jan 16, 2018
…d Artists views.

Collates dummy-albums in the Albums views, i.e. where Volumio might previously have created hundreds or thousands of dummy-albums for orphaned tracks (one dummy-album per artist) now only one is created (shared by all artists).

Fixes: 		volumio/Volumio2/volumio#1453
volumio pushed a commit that referenced this issue Jan 29, 2018
* Ensures dummy-albums in the Genres view are represented using the same icon as in the Artists view.

* Ensures that clicking on a dummy-album will list the orphaned tracks (tracks without an album) for which they were created.

Fixes:		volumio/Volumio2/#1458
Maybe Fixes:   volumio/Volumio2/#1441

* Removes dummy-albums (for tracks without an album) from the Genres and Artists views.

Collates dummy-albums in the Albums views, i.e. where Volumio might previously have created hundreds or thousands of dummy-albums for orphaned tracks (one dummy-album per artist) now only one is created (shared by all artists).

Fixes: 		volumio/Volumio2/#1453
@volumio
Copy link
Owner

volumio commented Jan 29, 2018

Fixed with 5d40d4b

@volumio volumio closed this as completed Jan 29, 2018
volumio added a commit that referenced this issue Apr 11, 2018
* Myvolumio user handling

* Add my-volumio to main menu and fix conf creation

* Add devices

* Fix single browse option

* New API

* enable and disable devices

* Proper close modals emit

* Fix wrong log statement

* Revert "add soft option to cifs mount"

This reverts commit 927cbd1.

* Do not use multicast address for shairport sync

* Webradio thumbnails (#1390)

* fix url to correct github awesome-raspberry-pi list (#1381)

* fix url to correct github awesome-raspberry-pi list

* use official `awesome` badge

found on https://github.com/sindresorhus/awesome/blob/master/awesome.md#awesome-badge

* Update strings_fr.json (#1380)

* Update strings_fr.json

add installer new fields

* Update strings_fr.json

remove several !

* Update strings_fr.json

remove several !

* BBC Radio proper name

* Webradio search lowercase

* Revert "Merge branch 'myvolumio-fire' into master"

This reverts commit 7f86008, reversing
changes made to 37531a6.

* Fix ignoring XMOS Clock Selectors

* Fix HDMI Sparky name

* fix goto

* Use proper getUiConfig in alsa controller

* disable multithreading sox resampler, CPU affinity works best on single core

* Global info

* Do not write useless searchResult.json file

* Selective folder scanning

* toast when add to queue

* Update index.js (#1396)

small typo correction

* Plugin/upnp browser (#1399)

* WIP on upnp-browser

* Typo fix

* Fixed dependencies, added dlna_browser.js

* V1 Stable

* Fixed State Update Service

was upnp_browser instead of mpd

* Continuous discovery and albumart fix

* Final upnp browser implementation

* volatile

* Disable UPNP Search

* single browse upnp

* single browse

* Feature/webradio selection (#1400)

* webradio selection wip

* finished selection retrieval

* Finished webradio selection

* bigger dlna icon

* show albumart on webradios

* Update translations for modal scanning

* no resampling in dop

* Update strings_de.json (#1403)

Adding missing German translations.

* Change smb.conf according to system name

* proper smb conf writing

* Fix avahi service writing

* Fix single browse if no db

* Fix Broken Link (#1404)

- Fix Broken link in `Set up a dev environment`

* Update strings_fr.json (#1402)

remove a !

* Fixing play/pause/resume when in consume mode (#1407)

* Decrease the number of albumart workers

* Tinker i2s (#1409)

* add i2s devices to tinker

* New naming scheme for tinkerboard

* Proper handling of i2s dacs for tinkerboard

* Fixing play/pause/resume when in consume mode (#1410)

* Allow plugin install from source and terminal (#1411)

* add local install

* add update on helper

* fix root webradio if selection not found

* avoid call to conf when pushing fav

* differentiate between mpd updates

* Revert "Revert "add soft option to cifs mount""

This reverts commit 236361d.

* Update strings_it.json

* fix airplay stop condition

* Update strings_fr.json (#1415)

miscellanea small correction

* remove myvolumio

* New packages

* myvolumio functions

* Remove mpd client from upnp browser

* do not report multiple mpd db index

* Credits in system

* Do not list current system

* Proper self NAS name ignore

* Some additions to the dutch translations (#1421)

* Updated dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* add vers 2.0 to smb options

* Tentative fix for random volumio crash due to DLNA browser

* Further error catching for DLNA plugin

* Minor changes in dutch translation (#1423)

* Updated dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Minor changes in dutch translation

* Fix dlna (#1424)

* Further try catch for DLNA discovery

* more logging when searching UPNP

* fix crash of dlna browser with unreachable endpoints

* HDMI UI selector

* Broadcast close wizard

* Copies status from core plugin file (#1429)

* Make 'volumio vstop' work (#1428)

* Call the correct function when vstop argument is given

No 'stop' function is defined. It's 'vstop'

* Prefix all the Volumio Service Comands with 'v'

This should reduce potential confusion between these functions and
commands related to music playback.

* Some additions to dutch translations (#1426)

* Updated dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Minor changes in dutch translation

* Update strings_nl.json

* Revert "Update strings_nl.json"

This reverts commit 5822ea7.

* Changes and new additions

* Small improvements to 'volumio pull' (#1425)

* Avoid /volumio ending up at /volumio-current/volumio

* If the move fails, everything after will go pear-shaped. So exit with an error.

* Avoid complaints from sudo

If sudo is called from a shell in a directory that has been removed,
it complains. The message is harmless but better avoided.

* Revert "add vers 2.0 to smb options"

This reverts commit b0fe8bc.

* Fix zh (#1439)

* fix zh

* Further zh tw translatio

* Revert "Decrease the number of albumart workers"

This reverts commit bb7710b.

* catch an error in albumart for too long names

* DSD autovolume with dsf files

* fix error in upnp albumart

* small spelling mistake (#1459)

gedeaktiveerd ==> gedeaCtiveerd

* fix crash in upnp when no headers.LOCATION is sent

* improve latency of volume control

* websocket cleanup

* remove all time loggings

* Sleep timer disables once triggered, returns 00:00 via getSleep when inactive (#1435)

* Promises4on volumio shutdown&reboot (#1373)

* use Promises for onShutdown and onReboot

using promises to ensure plugin tasks on shutdown and reboot are complete BEFORE going ahead and restarting or shutting down

* Use Promises for onShutdown and onReboot

extending the plugin manager as per @macmpi 's previous changes to plugin start actions, applying to the onVolumioShutdown and onVolumioReboot functions. Allows use of promises to ensure completion of plugin tasks before proceeding with system shutdown or restart... currently there is no way to ensure completion of plugin onShutdown or onReboot actions.

* shutdown and reboot

update previous changes to remove unnecessary rows

* Update pluginmanager.js

* Improved handling of orphaned tracks (#1460)

* Ensures dummy-albums in the Genres view are represented using the same icon as in the Artists view.

* Ensures that clicking on a dummy-album will list the orphaned tracks (tracks without an album) for which they were created.

Fixes:		volumio/Volumio2/#1458
Maybe Fixes:   volumio/Volumio2/#1441

* Removes dummy-albums (for tracks without an album) from the Genres and Artists views.

Collates dummy-albums in the Albums views, i.e. where Volumio might previously have created hundreds or thousands of dummy-albums for orphaned tracks (one dummy-album per artist) now only one is created (shared by all artists).

Fixes: 		volumio/Volumio2/#1453

* Make advice about password lenght consistent at 8+ characters. (#1467)

Fixes: #1322

* Fix crash if service is undefined on stop

* Dev mode

* remove plugin upload from dev page

* update spanish translation

* implemented localization support for plugins (#1466)

* Fallback hotspot setting

* Turkish translations

* Fix mispelled words in italian translations

* Webradio icons jpg

* Fix for allo 2.1 failure with new volume system (twice promise)

* Update strings_de.json (#1478)

Updating German language file. Translating new features and options.

* Fix uninstall from search page

* remove plugin configuration on uninstall

* fixed upnp browser crash if server has no image

* Fix duplicating mdns browser instances

* Fix plugin uninstall, update and unzip

* Added ApplePI DAC (#1489)

* Update strings_de.json

* Ensure clean uris from Dirble (#1493)

Some uris in the dirble search results contain end of line characters,
which break things downstream in volumio. Stripping them away makes things
work again.

* Added NanoPi NEO2 system identifier

* Support for Cheapo card. (#1495)

* NanoPi NEO2 Audio stack

* Properly escape double quotes when constructing mpd command strings - respin (#1482)

* Properly escape strings fed to the mpd 'find' command.

Consider this URI beng passed to listAlbumSongs():
  albums://Kalafina/THE%20BEST%20%22Blue%22
which decodes to this:
  albums://Kalafina/THE BEST "Blue"

When the current code constructs an mpd 'find' command, it produces this:
  find album "THE BEST "Blue"" albumartist "Kalafina"
which causes a failure in MpdClient.receive()
  Error:  [5@0] {} Space expected after closing '"'

What we want to send to mpd is:
  find album "THE BEST \"Blue\"" albumartist "Kalafina"

To get this result, we must escape any double quotes within the strings
that are concatenated to form the 'find' command.
No attempt is made to handle the pathological case of the input string
containing '\"'.

* Whitespace fixups

* More instances of strings being fed to mpdClient.sendCommand()

* Last instances fed to mpdClient.sendCommand(), all folder listings

* Fix strings fed to sendMpdCommand()

* Fix instances od sendMpdCommand in upnp_browser

* Fix instances od sendMpdCommand in webradio

Perhaps not really necessary if every track.uri is properly uri-encoded,
but almost certainly won't hurt.

* Fix plugin install maxbuff

* USB Hotplug

* Singlesources translations

* Fix shutdown for non systemd-compliant systems

* Small correction in dutch translation (#1504)

* Adding dutch translations (#1479)

* Add Fe-Pi Audio Cards (#1503)

* Save logsubmit logs locally (#1473)

* Open log file only after argument parsing

* If we can't upload the log, store it

Sometimes the log upload fails, but it would be nice to keep the
data around so it can be sent by other means. /var/tmp should
persist across reboots, so move the log there.

* Add support for storing log locally, rather than uploading.

In cases where the user knows that an upload attempt will fail
(eg network issues), trying and failing will just be confusing.
To address this, support a second argument to explicitly save
the bug report to local storage.

* Add 'logdump' option to save bug report logs locally

* Drop use of /tmp/logfields

All this file was doing was storing the description line.
Now that we can reliably pass the description to logsubmit.js,
we no longer need it.

* Ensure a parseable description line

The now-removed logfilds file had one useful element -
a line that made it easier to extract the description
input by the user. Restore the line to its parseable form.

* Make the PATH that is in use unambiguous

When volumio.sh is called by the volumio user from the command line,
it gets one PATH but when it is called by shelling out from the volumio
application, it gets quite another. This is because when shelling out
it may run as user 'volumio' but it inherits its PATH from 'root',
since 'root' starts volumio.service.
The right thing to do (tm) is just be explicit about what PATH is needed.

* Whitespace

* Add section headings for each command attempted

* Whitespace

* Crashreport (#1507)

* Stoic mode and crashreport wip

* Finalized crash report

* Proper endpoint for crash report

* Update crashreport.js

* fix plugin publishing icon

* Device naming for HDA intel and proper multidevice (#1509)

* Fix crash when path in network drives is not filled

* Fix crash when no method is available

* Fix moving queue item when a point is undefined

*  Fix unspecified error event in shairport sync meta reader

* Fix crash when plugin misses playback function

* Fix undefined in DLNA browser

* Fix undefined icon list in DLNA browser

* Fix hostname command

* Remove console log from system

* Handle undefined curUri

* Fix service pause if no trackblock service

* fix wrong self logger in commandrouter

* ensure plugins are defined when stopping

* do not emit error on shairport sync stal

* Tentative fix for crash on rename

* Update strings_de.json

* Fix variant

* disableUiControls

* Fix pluginhelper category

* pluginhelper: Use shallow clone (#1515)

* Some small changes and corrections to dutch translations (#1512)

* Small correction in dutch translation

* Some smaal changes and corrections to dutch translations

* Update strings_fr.json (#1511)

add new fields, small correction

* Fix creation of folder with embedded albumart

* Fix remove from queue if title is not defined

* fix crash in playlist creation

* More reliable wireless indicator

* Reduce usage of sudo -S (#1247)

* Refuse to run unless we are root

This script is only ever called under sudo (in volumio.sh).
Since it needs root permissions, check we have them.

* Remove all the sudo calls, we are already root.

* Never run curl as root.

* Avoid sudo -S calls

If the volumio runtime user account ever changes password, problems ensue.
In a separate pull request, appropriate NOPASSWD entries were added to
/etc/sudoers. This patch converts all 'sudo -S' calls to just 'sudo'.

* typo fix

* mkdir -p avoids a useless warning if the directory exists

* remove fb

* Removed unused volumioRebuildLibrary

* Allow only jpg and png images for backgrounds

* Reload UI

* Reload ui on version change

* Update strings_de.json (#1532)

Adding two missing lines to the German translation.

* Add first Baytrail/Cherrytrail Intel soundcards (#1533)

* Fix typo in italian translations
volumio added a commit that referenced this issue Apr 12, 2018
* Myvolumio user handling

* Add my-volumio to main menu and fix conf creation

* Add devices

* Fix single browse option

* New API

* enable and disable devices

* Proper close modals emit

* Fix wrong log statement

* Revert "add soft option to cifs mount"

This reverts commit 927cbd1.

* Do not use multicast address for shairport sync

* Webradio thumbnails (#1390)

* fix url to correct github awesome-raspberry-pi list (#1381)

* fix url to correct github awesome-raspberry-pi list

* use official `awesome` badge

found on https://github.com/sindresorhus/awesome/blob/master/awesome.md#awesome-badge

* Update strings_fr.json (#1380)

* Update strings_fr.json

add installer new fields

* Update strings_fr.json

remove several !

* Update strings_fr.json

remove several !

* BBC Radio proper name

* Webradio search lowercase

* Revert "Merge branch 'myvolumio-fire' into master"

This reverts commit 7f86008, reversing
changes made to 37531a6.

* Fix ignoring XMOS Clock Selectors

* Fix HDMI Sparky name

* fix goto

* Use proper getUiConfig in alsa controller

* disable multithreading sox resampler, CPU affinity works best on single core

* Global info

* Do not write useless searchResult.json file

* Selective folder scanning

* toast when add to queue

* Update index.js (#1396)

small typo correction

* Plugin/upnp browser (#1399)

* WIP on upnp-browser

* Typo fix

* Fixed dependencies, added dlna_browser.js

* V1 Stable

* Fixed State Update Service

was upnp_browser instead of mpd

* Continuous discovery and albumart fix

* Final upnp browser implementation

* volatile

* Disable UPNP Search

* single browse upnp

* single browse

* Feature/webradio selection (#1400)

* webradio selection wip

* finished selection retrieval

* Finished webradio selection

* bigger dlna icon

* show albumart on webradios

* Update translations for modal scanning

* no resampling in dop

* Update strings_de.json (#1403)

Adding missing German translations.

* Change smb.conf according to system name

* proper smb conf writing

* Fix avahi service writing

* Fix single browse if no db

* Fix Broken Link (#1404)

- Fix Broken link in `Set up a dev environment`

* Update strings_fr.json (#1402)

remove a !

* Fixing play/pause/resume when in consume mode (#1407)

* Decrease the number of albumart workers

* Tinker i2s (#1409)

* add i2s devices to tinker

* New naming scheme for tinkerboard

* Proper handling of i2s dacs for tinkerboard

* Fixing play/pause/resume when in consume mode (#1410)

* Allow plugin install from source and terminal (#1411)

* add local install

* add update on helper

* fix root webradio if selection not found

* avoid call to conf when pushing fav

* differentiate between mpd updates

* Revert "Revert "add soft option to cifs mount""

This reverts commit 236361d.

* Update strings_it.json

* fix airplay stop condition

* Update strings_fr.json (#1415)

miscellanea small correction

* remove myvolumio

* New packages

* myvolumio functions

* Remove mpd client from upnp browser

* do not report multiple mpd db index

* Credits in system

* Do not list current system

* Proper self NAS name ignore

* Some additions to the dutch translations (#1421)

* Updated dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* add vers 2.0 to smb options

* Tentative fix for random volumio crash due to DLNA browser

* Further error catching for DLNA plugin

* Minor changes in dutch translation (#1423)

* Updated dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Minor changes in dutch translation

* Fix dlna (#1424)

* Further try catch for DLNA discovery

* more logging when searching UPNP

* fix crash of dlna browser with unreachable endpoints

* HDMI UI selector

* Broadcast close wizard

* Copies status from core plugin file (#1429)

* Make 'volumio vstop' work (#1428)

* Call the correct function when vstop argument is given

No 'stop' function is defined. It's 'vstop'

* Prefix all the Volumio Service Comands with 'v'

This should reduce potential confusion between these functions and
commands related to music playback.

* Some additions to dutch translations (#1426)

* Updated dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Minor changes in dutch translation

* Update strings_nl.json

* Revert "Update strings_nl.json"

This reverts commit 5822ea7.

* Changes and new additions

* Small improvements to 'volumio pull' (#1425)

* Avoid /volumio ending up at /volumio-current/volumio

* If the move fails, everything after will go pear-shaped. So exit with an error.

* Avoid complaints from sudo

If sudo is called from a shell in a directory that has been removed,
it complains. The message is harmless but better avoided.

* Revert "add vers 2.0 to smb options"

This reverts commit b0fe8bc.

* Fix zh (#1439)

* fix zh

* Further zh tw translatio

* Revert "Decrease the number of albumart workers"

This reverts commit bb7710b.

* catch an error in albumart for too long names

* DSD autovolume with dsf files

* fix error in upnp albumart

* small spelling mistake (#1459)

gedeaktiveerd ==> gedeaCtiveerd

* fix crash in upnp when no headers.LOCATION is sent

* improve latency of volume control

* websocket cleanup

* remove all time loggings

* Sleep timer disables once triggered, returns 00:00 via getSleep when inactive (#1435)

* Promises4on volumio shutdown&reboot (#1373)

* use Promises for onShutdown and onReboot

using promises to ensure plugin tasks on shutdown and reboot are complete BEFORE going ahead and restarting or shutting down

* Use Promises for onShutdown and onReboot

extending the plugin manager as per @macmpi 's previous changes to plugin start actions, applying to the onVolumioShutdown and onVolumioReboot functions. Allows use of promises to ensure completion of plugin tasks before proceeding with system shutdown or restart... currently there is no way to ensure completion of plugin onShutdown or onReboot actions.

* shutdown and reboot

update previous changes to remove unnecessary rows

* Update pluginmanager.js

* Improved handling of orphaned tracks (#1460)

* Ensures dummy-albums in the Genres view are represented using the same icon as in the Artists view.

* Ensures that clicking on a dummy-album will list the orphaned tracks (tracks without an album) for which they were created.

Fixes:		volumio/Volumio2/#1458
Maybe Fixes:   volumio/Volumio2/#1441

* Removes dummy-albums (for tracks without an album) from the Genres and Artists views.

Collates dummy-albums in the Albums views, i.e. where Volumio might previously have created hundreds or thousands of dummy-albums for orphaned tracks (one dummy-album per artist) now only one is created (shared by all artists).

Fixes: 		volumio/Volumio2/#1453

* Make advice about password lenght consistent at 8+ characters. (#1467)

Fixes: #1322

* Fix crash if service is undefined on stop

* Dev mode

* remove plugin upload from dev page

* update spanish translation

* implemented localization support for plugins (#1466)

* Fallback hotspot setting

* Turkish translations

* Fix mispelled words in italian translations

* Webradio icons jpg

* Fix for allo 2.1 failure with new volume system (twice promise)

* Update strings_de.json (#1478)

Updating German language file. Translating new features and options.

* Fix uninstall from search page

* remove plugin configuration on uninstall

* fixed upnp browser crash if server has no image

* Fix duplicating mdns browser instances

* Fix plugin uninstall, update and unzip

* Added ApplePI DAC (#1489)

* Update strings_de.json

* Ensure clean uris from Dirble (#1493)

Some uris in the dirble search results contain end of line characters,
which break things downstream in volumio. Stripping them away makes things
work again.

* Added NanoPi NEO2 system identifier

* Support for Cheapo card. (#1495)

* NanoPi NEO2 Audio stack

* Properly escape double quotes when constructing mpd command strings - respin (#1482)

* Properly escape strings fed to the mpd 'find' command.

Consider this URI beng passed to listAlbumSongs():
  albums://Kalafina/THE%20BEST%20%22Blue%22
which decodes to this:
  albums://Kalafina/THE BEST "Blue"

When the current code constructs an mpd 'find' command, it produces this:
  find album "THE BEST "Blue"" albumartist "Kalafina"
which causes a failure in MpdClient.receive()
  Error:  [5@0] {} Space expected after closing '"'

What we want to send to mpd is:
  find album "THE BEST \"Blue\"" albumartist "Kalafina"

To get this result, we must escape any double quotes within the strings
that are concatenated to form the 'find' command.
No attempt is made to handle the pathological case of the input string
containing '\"'.

* Whitespace fixups

* More instances of strings being fed to mpdClient.sendCommand()

* Last instances fed to mpdClient.sendCommand(), all folder listings

* Fix strings fed to sendMpdCommand()

* Fix instances od sendMpdCommand in upnp_browser

* Fix instances od sendMpdCommand in webradio

Perhaps not really necessary if every track.uri is properly uri-encoded,
but almost certainly won't hurt.

* Fix plugin install maxbuff

* USB Hotplug

* Singlesources translations

* Fix shutdown for non systemd-compliant systems

* Small correction in dutch translation (#1504)

* Adding dutch translations (#1479)

* Add Fe-Pi Audio Cards (#1503)

* Save logsubmit logs locally (#1473)

* Open log file only after argument parsing

* If we can't upload the log, store it

Sometimes the log upload fails, but it would be nice to keep the
data around so it can be sent by other means. /var/tmp should
persist across reboots, so move the log there.

* Add support for storing log locally, rather than uploading.

In cases where the user knows that an upload attempt will fail
(eg network issues), trying and failing will just be confusing.
To address this, support a second argument to explicitly save
the bug report to local storage.

* Add 'logdump' option to save bug report logs locally

* Drop use of /tmp/logfields

All this file was doing was storing the description line.
Now that we can reliably pass the description to logsubmit.js,
we no longer need it.

* Ensure a parseable description line

The now-removed logfilds file had one useful element -
a line that made it easier to extract the description
input by the user. Restore the line to its parseable form.

* Make the PATH that is in use unambiguous

When volumio.sh is called by the volumio user from the command line,
it gets one PATH but when it is called by shelling out from the volumio
application, it gets quite another. This is because when shelling out
it may run as user 'volumio' but it inherits its PATH from 'root',
since 'root' starts volumio.service.
The right thing to do (tm) is just be explicit about what PATH is needed.

* Whitespace

* Add section headings for each command attempted

* Whitespace

* Crashreport (#1507)

* Stoic mode and crashreport wip

* Finalized crash report

* Proper endpoint for crash report

* Update crashreport.js

* fix plugin publishing icon

* Device naming for HDA intel and proper multidevice (#1509)

* Fix crash when path in network drives is not filled

* Fix crash when no method is available

* Fix moving queue item when a point is undefined

*  Fix unspecified error event in shairport sync meta reader

* Fix crash when plugin misses playback function

* Fix undefined in DLNA browser

* Fix undefined icon list in DLNA browser

* Fix hostname command

* Remove console log from system

* Handle undefined curUri

* Fix service pause if no trackblock service

* fix wrong self logger in commandrouter

* ensure plugins are defined when stopping

* do not emit error on shairport sync stal

* Tentative fix for crash on rename

* Update strings_de.json

* Fix variant

* disableUiControls

* Fix pluginhelper category

* pluginhelper: Use shallow clone (#1515)

* Some small changes and corrections to dutch translations (#1512)

* Small correction in dutch translation

* Some smaal changes and corrections to dutch translations

* Update strings_fr.json (#1511)

add new fields, small correction

* Fix creation of folder with embedded albumart

* Fix remove from queue if title is not defined

* fix crash in playlist creation

* More reliable wireless indicator

* Reduce usage of sudo -S (#1247)

* Refuse to run unless we are root

This script is only ever called under sudo (in volumio.sh).
Since it needs root permissions, check we have them.

* Remove all the sudo calls, we are already root.

* Never run curl as root.

* Avoid sudo -S calls

If the volumio runtime user account ever changes password, problems ensue.
In a separate pull request, appropriate NOPASSWD entries were added to
/etc/sudoers. This patch converts all 'sudo -S' calls to just 'sudo'.

* typo fix

* mkdir -p avoids a useless warning if the directory exists

* remove fb

* Removed unused volumioRebuildLibrary

* Allow only jpg and png images for backgrounds

* Reload UI

* Reload ui on version change

* Update strings_de.json (#1532)

Adding two missing lines to the German translation.

* Add first Baytrail/Cherrytrail Intel soundcards (#1533)

* Fix typo in italian translations

* Don't create a websocket inconditionally at startup (#1529)

Instead of creating the websocket connection at startup for each
invokation, do it only within the 2 methods that currently require
one: `install` and `update`.

This has the nice side effect of not preventing the script to exit
properly when calling any of the other commands, like `refresh`.

Additionally, the use of `process.exit()` is discouraged, and it's better
to just set an `exitCode` so that any unprocessed event in the event loop
will be handled before exiting.

See here https://nodejs.org/api/process.html#process_process_exit_code
for more details.

* Clean node modules

* Remove redundant `nodetools` package dependency (#1531)

* Add modclean package

* Pack modules util script
@volumio volumio mentioned this issue Apr 12, 2018
volumio added a commit that referenced this issue Apr 12, 2018
* Myvolumio user handling

* Add my-volumio to main menu and fix conf creation

* Add devices

* Fix single browse option

* New API

* enable and disable devices

* Proper close modals emit

* Fix wrong log statement

* Revert "add soft option to cifs mount"

This reverts commit 927cbd1.

* Do not use multicast address for shairport sync

* Webradio thumbnails (#1390)

* fix url to correct github awesome-raspberry-pi list (#1381)

* fix url to correct github awesome-raspberry-pi list

* use official `awesome` badge

found on https://github.com/sindresorhus/awesome/blob/master/awesome.md#awesome-badge

* Update strings_fr.json (#1380)

* Update strings_fr.json

add installer new fields

* Update strings_fr.json

remove several !

* Update strings_fr.json

remove several !

* BBC Radio proper name

* Webradio search lowercase

* Revert "Merge branch 'myvolumio-fire' into master"

This reverts commit 7f86008, reversing
changes made to 37531a6.

* Fix ignoring XMOS Clock Selectors

* Fix HDMI Sparky name

* fix goto

* Use proper getUiConfig in alsa controller

* disable multithreading sox resampler, CPU affinity works best on single core

* Global info

* Do not write useless searchResult.json file

* Selective folder scanning

* toast when add to queue

* Update index.js (#1396)

small typo correction

* Plugin/upnp browser (#1399)

* WIP on upnp-browser

* Typo fix

* Fixed dependencies, added dlna_browser.js

* V1 Stable

* Fixed State Update Service

was upnp_browser instead of mpd

* Continuous discovery and albumart fix

* Final upnp browser implementation

* volatile

* Disable UPNP Search

* single browse upnp

* single browse

* Feature/webradio selection (#1400)

* webradio selection wip

* finished selection retrieval

* Finished webradio selection

* bigger dlna icon

* show albumart on webradios

* Update translations for modal scanning

* no resampling in dop

* Update strings_de.json (#1403)

Adding missing German translations.

* Change smb.conf according to system name

* proper smb conf writing

* Fix avahi service writing

* Fix single browse if no db

* Fix Broken Link (#1404)

- Fix Broken link in `Set up a dev environment`

* Update strings_fr.json (#1402)

remove a !

* Fixing play/pause/resume when in consume mode (#1407)

* Decrease the number of albumart workers

* Tinker i2s (#1409)

* add i2s devices to tinker

* New naming scheme for tinkerboard

* Proper handling of i2s dacs for tinkerboard

* Fixing play/pause/resume when in consume mode (#1410)

* Allow plugin install from source and terminal (#1411)

* add local install

* add update on helper

* fix root webradio if selection not found

* avoid call to conf when pushing fav

* differentiate between mpd updates

* Revert "Revert "add soft option to cifs mount""

This reverts commit 236361d.

* Update strings_it.json

* fix airplay stop condition

* Update strings_fr.json (#1415)

miscellanea small correction

* remove myvolumio

* New packages

* myvolumio functions

* Remove mpd client from upnp browser

* do not report multiple mpd db index

* Credits in system

* Do not list current system

* Proper self NAS name ignore

* Some additions to the dutch translations (#1421)

* Updated dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* add vers 2.0 to smb options

* Tentative fix for random volumio crash due to DLNA browser

* Further error catching for DLNA plugin

* Minor changes in dutch translation (#1423)

* Updated dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Minor changes in dutch translation

* Fix dlna (#1424)

* Further try catch for DLNA discovery

* more logging when searching UPNP

* fix crash of dlna browser with unreachable endpoints

* HDMI UI selector

* Broadcast close wizard

* Copies status from core plugin file (#1429)

* Make 'volumio vstop' work (#1428)

* Call the correct function when vstop argument is given

No 'stop' function is defined. It's 'vstop'

* Prefix all the Volumio Service Comands with 'v'

This should reduce potential confusion between these functions and
commands related to music playback.

* Some additions to dutch translations (#1426)

* Updated dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Small changes to dutch translation

* Minor changes in dutch translation

* Update strings_nl.json

* Revert "Update strings_nl.json"

This reverts commit 5822ea7.

* Changes and new additions

* Small improvements to 'volumio pull' (#1425)

* Avoid /volumio ending up at /volumio-current/volumio

* If the move fails, everything after will go pear-shaped. So exit with an error.

* Avoid complaints from sudo

If sudo is called from a shell in a directory that has been removed,
it complains. The message is harmless but better avoided.

* Revert "add vers 2.0 to smb options"

This reverts commit b0fe8bc.

* Fix zh (#1439)

* fix zh

* Further zh tw translatio

* Revert "Decrease the number of albumart workers"

This reverts commit bb7710b.

* catch an error in albumart for too long names

* DSD autovolume with dsf files

* fix error in upnp albumart

* small spelling mistake (#1459)

gedeaktiveerd ==> gedeaCtiveerd

* fix crash in upnp when no headers.LOCATION is sent

* improve latency of volume control

* websocket cleanup

* remove all time loggings

* Sleep timer disables once triggered, returns 00:00 via getSleep when inactive (#1435)

* Promises4on volumio shutdown&reboot (#1373)

* use Promises for onShutdown and onReboot

using promises to ensure plugin tasks on shutdown and reboot are complete BEFORE going ahead and restarting or shutting down

* Use Promises for onShutdown and onReboot

extending the plugin manager as per @macmpi 's previous changes to plugin start actions, applying to the onVolumioShutdown and onVolumioReboot functions. Allows use of promises to ensure completion of plugin tasks before proceeding with system shutdown or restart... currently there is no way to ensure completion of plugin onShutdown or onReboot actions.

* shutdown and reboot

update previous changes to remove unnecessary rows

* Update pluginmanager.js

* Improved handling of orphaned tracks (#1460)

* Ensures dummy-albums in the Genres view are represented using the same icon as in the Artists view.

* Ensures that clicking on a dummy-album will list the orphaned tracks (tracks without an album) for which they were created.

Fixes:		volumio/Volumio2/#1458
Maybe Fixes:   volumio/Volumio2/#1441

* Removes dummy-albums (for tracks without an album) from the Genres and Artists views.

Collates dummy-albums in the Albums views, i.e. where Volumio might previously have created hundreds or thousands of dummy-albums for orphaned tracks (one dummy-album per artist) now only one is created (shared by all artists).

Fixes: 		volumio/Volumio2/#1453

* Make advice about password lenght consistent at 8+ characters. (#1467)

Fixes: #1322

* Fix crash if service is undefined on stop

* Dev mode

* remove plugin upload from dev page

* update spanish translation

* implemented localization support for plugins (#1466)

* Fallback hotspot setting

* Turkish translations

* Fix mispelled words in italian translations

* Webradio icons jpg

* Fix for allo 2.1 failure with new volume system (twice promise)

* Update strings_de.json (#1478)

Updating German language file. Translating new features and options.

* Fix uninstall from search page

* remove plugin configuration on uninstall

* fixed upnp browser crash if server has no image

* Fix duplicating mdns browser instances

* Fix plugin uninstall, update and unzip

* Added ApplePI DAC (#1489)

* Update strings_de.json

* Ensure clean uris from Dirble (#1493)

Some uris in the dirble search results contain end of line characters,
which break things downstream in volumio. Stripping them away makes things
work again.

* Added NanoPi NEO2 system identifier

* Support for Cheapo card. (#1495)

* NanoPi NEO2 Audio stack

* Properly escape double quotes when constructing mpd command strings - respin (#1482)

* Properly escape strings fed to the mpd 'find' command.

Consider this URI beng passed to listAlbumSongs():
  albums://Kalafina/THE%20BEST%20%22Blue%22
which decodes to this:
  albums://Kalafina/THE BEST "Blue"

When the current code constructs an mpd 'find' command, it produces this:
  find album "THE BEST "Blue"" albumartist "Kalafina"
which causes a failure in MpdClient.receive()
  Error:  [5@0] {} Space expected after closing '"'

What we want to send to mpd is:
  find album "THE BEST \"Blue\"" albumartist "Kalafina"

To get this result, we must escape any double quotes within the strings
that are concatenated to form the 'find' command.
No attempt is made to handle the pathological case of the input string
containing '\"'.

* Whitespace fixups

* More instances of strings being fed to mpdClient.sendCommand()

* Last instances fed to mpdClient.sendCommand(), all folder listings

* Fix strings fed to sendMpdCommand()

* Fix instances od sendMpdCommand in upnp_browser

* Fix instances od sendMpdCommand in webradio

Perhaps not really necessary if every track.uri is properly uri-encoded,
but almost certainly won't hurt.

* Fix plugin install maxbuff

* USB Hotplug

* Singlesources translations

* Fix shutdown for non systemd-compliant systems

* Small correction in dutch translation (#1504)

* Adding dutch translations (#1479)

* Add Fe-Pi Audio Cards (#1503)

* Save logsubmit logs locally (#1473)

* Open log file only after argument parsing

* If we can't upload the log, store it

Sometimes the log upload fails, but it would be nice to keep the
data around so it can be sent by other means. /var/tmp should
persist across reboots, so move the log there.

* Add support for storing log locally, rather than uploading.

In cases where the user knows that an upload attempt will fail
(eg network issues), trying and failing will just be confusing.
To address this, support a second argument to explicitly save
the bug report to local storage.

* Add 'logdump' option to save bug report logs locally

* Drop use of /tmp/logfields

All this file was doing was storing the description line.
Now that we can reliably pass the description to logsubmit.js,
we no longer need it.

* Ensure a parseable description line

The now-removed logfilds file had one useful element -
a line that made it easier to extract the description
input by the user. Restore the line to its parseable form.

* Make the PATH that is in use unambiguous

When volumio.sh is called by the volumio user from the command line,
it gets one PATH but when it is called by shelling out from the volumio
application, it gets quite another. This is because when shelling out
it may run as user 'volumio' but it inherits its PATH from 'root',
since 'root' starts volumio.service.
The right thing to do (tm) is just be explicit about what PATH is needed.

* Whitespace

* Add section headings for each command attempted

* Whitespace

* Crashreport (#1507)

* Stoic mode and crashreport wip

* Finalized crash report

* Proper endpoint for crash report

* Update crashreport.js

* fix plugin publishing icon

* Device naming for HDA intel and proper multidevice (#1509)

* Fix crash when path in network drives is not filled

* Fix crash when no method is available

* Fix moving queue item when a point is undefined

*  Fix unspecified error event in shairport sync meta reader

* Fix crash when plugin misses playback function

* Fix undefined in DLNA browser

* Fix undefined icon list in DLNA browser

* Fix hostname command

* Remove console log from system

* Handle undefined curUri

* Fix service pause if no trackblock service

* fix wrong self logger in commandrouter

* ensure plugins are defined when stopping

* do not emit error on shairport sync stal

* Tentative fix for crash on rename

* Update strings_de.json

* Fix variant

* disableUiControls

* Fix pluginhelper category

* pluginhelper: Use shallow clone (#1515)

* Some small changes and corrections to dutch translations (#1512)

* Small correction in dutch translation

* Some smaal changes and corrections to dutch translations

* Update strings_fr.json (#1511)

add new fields, small correction

* Fix creation of folder with embedded albumart

* Fix remove from queue if title is not defined

* fix crash in playlist creation

* More reliable wireless indicator

* Reduce usage of sudo -S (#1247)

* Refuse to run unless we are root

This script is only ever called under sudo (in volumio.sh).
Since it needs root permissions, check we have them.

* Remove all the sudo calls, we are already root.

* Never run curl as root.

* Avoid sudo -S calls

If the volumio runtime user account ever changes password, problems ensue.
In a separate pull request, appropriate NOPASSWD entries were added to
/etc/sudoers. This patch converts all 'sudo -S' calls to just 'sudo'.

* typo fix

* mkdir -p avoids a useless warning if the directory exists

* remove fb

* Removed unused volumioRebuildLibrary

* Allow only jpg and png images for backgrounds

* Reload UI

* Reload ui on version change

* Update strings_de.json (#1532)

Adding two missing lines to the German translation.

* Add first Baytrail/Cherrytrail Intel soundcards (#1533)

* Fix typo in italian translations

* Don't create a websocket inconditionally at startup (#1529)

Instead of creating the websocket connection at startup for each
invokation, do it only within the 2 methods that currently require
one: `install` and `update`.

This has the nice side effect of not preventing the script to exit
properly when calling any of the other commands, like `refresh`.

Additionally, the use of `process.exit()` is discouraged, and it's better
to just set an `exitCode` so that any unprocessed event in the event loop
will be handled before exiting.

See here https://nodejs.org/api/process.html#process_process_exit_code
for more details.

* Clean node modules

* Remove redundant `nodetools` package dependency (#1531)

* Add modclean package

* Pack modules util script
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants