pascalopitz / unoffical-sonos-controller-for-linux

An Electron based linux app for controlling your sonos system.
http://pascalopitz.github.io/unoffical-sonos-controller-for-linux/
MIT License
551 stars 50 forks source link

Play local music files #14

Open pascalopitz opened 7 years ago

pascalopitz commented 7 years ago

Already under development, the ability to play music from "this device", i.e. the ~/Music folder

programmin1 commented 6 years ago

Can we checkout where this is under development?

KilianB commented 6 years ago

How do you plan on integrating this specific function? I just created a java program indexing my music files and upon request hosting the file in a shared network folder to be able to play them back on sonos devices. While working this seems like a lot of hassle though and I look for a better solution.

eitch commented 6 years ago

@KilianB i would suggest not indexing, but simply listing the folder structure. The user could then just play a single file, a folder, or add a file or folder to the playlist?

KilianB commented 6 years ago

@eitch I indexed the music files in order to be able to search for artists, album names, title etc. (Info taken from the id3 tags). I haven't taken a look at how this specific library plays back files but as for the dependency I currently am using https://github.com/vmichalak/sonos-controller music files have to be supplied as URI which sonos speakers have access to (a shared resource on the network or internet). Therefor playing back files wasn't as trivial as I first though. I haven't taken a look at this repository though. Maybe node or electron is doing the entire work already.

eitch commented 6 years ago

Ahh, ok, that makes it a bit more interesting. A first thought would be to simply start a simple HTTP server locally (this is trivial in Node, no?). Then create an URI which points to this local server and the server knows then how to handle the URI request to stream a local file. I'm not familiar with the streaming specifics, so i'm not sure if just passing the file to the client as a FileStream would suffice.

pascalopitz commented 6 years ago

@KilianB I was investigating indexing as well ... problem I hit was that the available node packages were slow. Then I haven't looked at it in forever as well ... Maybe I could bundle your java service or at least have a look at it? Is it on github?

KilianB commented 6 years ago

It's in a private repository at the moment. The first index run for 8235 files on a network drive takes roughly 5 minutes. The information is saved into an embedded SQL database. Subsequent runs, just looking at the delta, take roughly 15 seconds. I can upload it later this week if you wish but I am not sure if you can easily integrate it into node though.

pascalopitz commented 6 years ago

Node maybe not, but we could investigate if it's something we could bundle with electron. AFAIK it can include other binaries.

CaptainFuzzyFace commented 6 years ago

Hi, it's been a while. How's progress?

0xvividmirage commented 5 years ago

Recently Sonos has been requiring that people update their Sonos to the latest version which has the code for implementing (the dreaded) Alexa. I refuse to update my perfectly working Sonos with this (in my opinion) malicious software. Really hoping to see something develop with local music library playback. Right now I can only use my Sonos with Spotify. I appeciate this unofficial controler though! Thanks for all the work on this!

KilianB commented 5 years ago

I don't know how I forgot about this issue. I am really sorry. Hopefully this weekend I'll upload a small sample application showing how we can playback local music files. I threw together a small demo player to demonstrate the procedure. (just need to populate the table with the indexed files and it's ready to be uploaded here (maybe later today more likely tomorrow).

sonoscontroller

The overall procedure:

  1. Crawl the directories and build a searchable index based on title, album name (id3 tags) (to allow partial or approximate matching using edit distances e.g. levenshtein distance).
  2. Save the index persistently e.g. an SQL database
  3. Make the files available to network devices. (If they are already on a NAS this step can be skipped). Start a fileserver and map all indexed folders to a fixed ip address. by cross referencing the index and the file location we can tell the sonos player to play back files located at the server.
  4. enjoy and listen to your local music.
KilianB commented 5 years ago

Took a bit longer than expected but here you go:

  1. Directory Crawler & File Indexer
  2. SQL Database
  3. File Hosting

Here is a small example how to play back text to speech on any speakers. Which basically plays back a local file but leaves out all the gui parts as well as indexing. Probably a good way to start. https://github.com/KilianB/Java-Sonos-Controller/tree/master/src/main/java/com/github/kilianB/example/voiceToTextPlayback

0xvividmirage commented 5 years ago

Maybe time to roll a release?

pascalopitz commented 5 years ago

@davidpgil A release with no proper pull request?

@KilianB Great work. I did have a look through that, but right now have no time to integrate it into the player. I'd be keen to not mix JS and Java tbh, but most of it makes sense from a conceptual POV. Interesting that you use a SQL DB ...

KilianB commented 5 years ago

I just noticed that the sonos controller allows to add local folders to the music library. Not sure how this is managed but maybe sending the correct upnp events and hosting the files is all that is needed. Maybe we don't need the indexing?

Take a look at the mdns and http requests, especially the content directory event.

addsonoslibrary

Someone would need to investigate what exactly is going on there, I on my part do not have time to do this anytime soon.


Maybe time to roll a release? To be honest the code I have posted is a big mess and would take at least a few days to integrate into this project. Different language, just partially created so it "works".

I am not sure if I really like the SQL database. Indexing music files, the way it's currently done is pretty expensive and should not be done multiple times if not necessary. A persistent storage is a must. On the other hand SQL queries in the source code look tedious. It is great to map relationships between interprets album and tracks, but a database works well if you hit it to request data, in my case most of it is kept in memory all the time and just used to store it between the runtime instances. It is a design decision which shouldn't be taken lightly.

0xvividmirage commented 5 years ago

@pascalopitz nevermind, i didnt realize this was not done yet.

hobleyd commented 5 years ago

Was there any progress on this one?

Thanks!

KilianB commented 5 years ago

I didn't do any additional follow up on this so far.

svrooij commented 4 years ago

Why not use an integrated express webserver (or even the standard node http server), hosting the mp3 dynamically? Then you can add the local url like http://ip_of_local_computer:8000/music/mp3_filename.mp3 as long as it end with .mp3 Sonos will just allow you to add it to any playlist, no indexing required and no messing around with some file share.

pascalopitz commented 4 years ago

@svrooij The serving of the file isn't the problem here, but the generating an index and displaying that so that it integrates well with the browser panel, displays album arte etc.

That said, having played with Electron for a bit now, another measure we could take is a system file browser, select file, play. That would be very easy to achieve.

The other thing I would be concerned about is making sure to only serve music files and info about them, as this is a bit of an attack vector onto the local machine otherwise.

pascalopitz commented 4 years ago

Ok guys n gals. I have implemented a version without indexing, which basically just serves up folder contents. Still pondering what to do about the search. Anyone want to check this out locally and give it a quick test for feedback?

https://github.com/pascalopitz/unoffical-sonos-controller-for-linux/tree/local-music-server

0xvividmirage commented 4 years ago

I'm getting a 404 upon clicking on your link.

pascalopitz commented 4 years ago

Yes, sorry, the branch was removed, as this is now rolled into the new alpha releases. v0.2.1-alpha1 implemented a local music server and a local smapi compatible service visible in the browser panel. In v0.2.1-alpha2 I have added a local file indexer and a text search.

https://github.com/pascalopitz/unoffical-sonos-controller-for-linux/releases/tag/v0.2.1-alpha2

0xvividmirage commented 4 years ago

I just installed it and pointed it to my massive folder of music. So far it does not seem to work for finding my local music. 1) I go to "On this Deviceu" > "Set Local Music Folder" 2) I select my music folder which is in "/home/username/Audio/Music" 3) I go to "On this Device" > "Enable Local Files" 4) I go to "Library" >"Start Indexing" and wait 5) I go to "Select a Music Source" and click on "On this device" 6) Nothing happens

pascalopitz commented 4 years ago

Ok, so "Library"->"Start indexing" issues an indexing request to the music library connected to your Sonos devices, i.e. a network share.

Selecting your music folder does fork a local indexing process inside the electron app.

Even without that you should be able to browse the folder structure of your music folder via the "On this device" source. If that doesn't work for you, I am not sure what could be amiss.

How have you installed the app? What OS etc are you running? Can you fire up the process via command line and see if there's any meaningful output like error messages?

pascalopitz commented 4 years ago

Can anyone else give this a try and report back please?

hobleyd commented 4 years ago

I am moving this weekend, so my network is in pieces currently. I'll try it out early to mid next week and report back!

0xvividmirage commented 4 years ago

How have you installed the app? Deb file installation.

What OS etc are you running? I'm using Trisquel 9 -- based off of Ubuntu 18.04

Can you fire up the process via command line and see if there's any meaningful output like error messages?

username@mycomputer:~$ sonos-controller-unofficial
Gtk-Message: 19:23:20.016: Failed to load module "canberra-gtk-module"
Gtk-Message: 19:23:20.016: Failed to load module "canberra-gtk-module"
Gtk-Message: 19:23:20.016: Failed to load module "topmenu-gtk-module"
Handle new path /home/username/Audio/Music
Server starting
events.js:200
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::13453
    at Server.setupListenHandle [as _listen2] (net.js:1306:16)
    at listenInCluster (net.js:1354:12)
    at Server.listen (net.js:1442:7)
    at Application.listen (/opt/sonos-controller-unofficial/resources/app.asar/node_modules/koa/lib/application.js:82:19)
    at startServer (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/server.js:610:16)
    at process.<anonymous> (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/server.js:638:7)
    at process.emit (events.js:223:5)
    at emit (internal/child_process.js:876:12)
    at processTicksAndRejections (internal/process/task_queues.js:82:21)
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1333:8)
    at processTicksAndRejections (internal/process/task_queues.js:81:21) {
  code: 'EADDRINUSE',
  errno: 'EADDRINUSE',
  syscall: 'listen',
  address: '::',
  port: 13453
}
pascalopitz commented 4 years ago

Okay, that looks like the port for the local server is taken by another process.

Can you do lsof -i :13453

That'll tell us what process. I might either make it configurable or alternatively select another port.

On Fri, 10 Jul 2020, 08:57 davidpgil, notifications@github.com wrote:

How have you installed the app? Deb file installation.

What OS etc are you running? I'm using Trisquel 9 -- based off of Ubuntu 18.04

Can you fire up the process via command line and see if there's any meaningful output like error messages?

username@mycomputer:~$ sonos-controller-unofficial Gtk-Message: 19:23:20.016: Failed to load module "canberra-gtk-module" Gtk-Message: 19:23:20.016: Failed to load module "canberra-gtk-module" Gtk-Message: 19:23:20.016: Failed to load module "topmenu-gtk-module" Handle new path /home/username/Audio/Music Server starting events.js:200 throw er; // Unhandled 'error' event ^

Error: listen EADDRINUSE: address already in use :::13453 at Server.setupListenHandle [as _listen2] (net.js:1306:16) at listenInCluster (net.js:1354:12) at Server.listen (net.js:1442:7) at Application.listen (/opt/sonos-controller-unofficial/resources/app.asar/node_modules/koa/lib/application.js:82:19) at startServer (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/server.js:610:16) at process. (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/server.js:638:7) at process.emit (events.js:223:5) at emit (internal/child_process.js:876:12) at processTicksAndRejections (internal/process/task_queues.js:82:21) Emitted 'error' event on Server instance at: at emitErrorNT (net.js:1333:8) at processTicksAndRejections (internal/process/task_queues.js:81:21) { code: 'EADDRINUSE', errno: 'EADDRINUSE', syscall: 'listen', address: '::', port: 13453 }

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pascalopitz/unoffical-sonos-controller-for-linux/issues/14#issuecomment-656398797, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACCK7FXU36V7HKKEGJ45R3R2ZG5NANCNFSM4C2O47OA .

0xvividmirage commented 4 years ago
username@mycomputer:~$ lsof -i :13453
COMMAND     PID            USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sonos-con 30174 username   42u  IPv6 27698157      0t0  TCP *:13453 (LISTEN)
pascalopitz commented 4 years ago

:hankey: Ok, looks like the spawned sub process is not getting cleaned up properly when you're exiting the program. I'll work on that then.

pascalopitz commented 4 years ago

Can you kill the process via kill -15 30174 and restart? Does it work then?

0xvividmirage commented 4 years ago

Does not seem to respond. I'm clicking "On this device" in the "Select a Music Source Column" and nothing happens.

pascalopitz commented 4 years ago

Is there anything meaningful in the developer console?

pascalopitz commented 4 years ago

Any output when you run the process via command line and re-select your music folder location?

0xvividmirage commented 4 years ago

Any output when you run the process via command line and re-select your music folder location?

username@mycomputer:~$ sonos-controller-unofficial
Gtk-Message: 09:12:05.021: Failed to load module "canberra-gtk-module"
Gtk-Message: 09:12:05.022: Failed to load module "canberra-gtk-module"
Gtk-Message: 09:12:05.022: Failed to load module "topmenu-gtk-module"
Handle new path /home/username/Audio/Music
Server starting
events.js:200
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::13453
    at Server.setupListenHandle [as _listen2] (net.js:1306:16)
    at listenInCluster (net.js:1354:12)
    at Server.listen (net.js:1442:7)
    at Application.listen (/opt/sonos-controller-unofficial/resources/app.asar/node_modules/koa/lib/application.js:82:19)
    at startServer (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/server.js:610:16)
    at process.<anonymous> (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/server.js:638:7)
    at process.emit (events.js:223:5)
    at emit (internal/child_process.js:876:12)
    at processTicksAndRejections (internal/process/task_queues.js:82:21)
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1333:8)
    at processTicksAndRejections (internal/process/task_queues.js:81:21) {
  code: 'EADDRINUSE',
  errno: 'EADDRINUSE',
  syscall: 'listen',
  address: '::',
  port: 13453
}
Gtk-Message: 09:12:24.672: GtkDialog mapped without a transient parent. This is discouraged.
Error [ERR_IPC_CHANNEL_CLOSED]: Channel closed
    at ChildProcess.target.send (internal/child_process.js:678:16)
    at Object.handlePath (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/index.js:34:12)
    at click (/opt/sonos-controller-unofficial/resources/app.asar/menu.js:302:30) {
  code: 'ERR_IPC_CHANNEL_CLOSED'
}
Error [ERR_IPC_CHANNEL_CLOSED]: Channel closed
    at ChildProcess.target.send (internal/child_process.js:678:16)
    at Object.handlePath (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/index.js:34:12)
    at IpcMainImpl.<anonymous> (/opt/sonos-controller-unofficial/resources/app.asar/menu.js:371:26)
    at IpcMainImpl.emit (events.js:223:5)
    at WebContents.<anonymous> (electron/js2c/browser_init.js:173:7846)
    at WebContents.emit (events.js:223:5) {
  code: 'ERR_IPC_CHANNEL_CLOSED'
}
Error [ERR_IPC_CHANNEL_CLOSED]: Channel closed
    at ChildProcess.target.send (internal/child_process.js:678:16)
    at Object.startServer (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/index.js:38:12)
    at IpcMainImpl.<anonymous> (/opt/sonos-controller-unofficial/resources/app.asar/menu.js:374:28)
    at IpcMainImpl.emit (events.js:223:5)
    at WebContents.<anonymous> (electron/js2c/browser_init.js:173:7846)
    at WebContents.emit (events.js:223:5) {
  code: 'ERR_IPC_CHANNEL_CLOSED'
}
Beginning to index /home/username/Audio
Error: ENOENT, localMusic.sqlite not found in /opt/sonos-controller-unofficial/resources/app.asar
    at createError (electron/js2c/asar.js:111:17)
    at Object.module.<computed> [as open] (electron/js2c/asar.js:179:23)
    at Object.writeFile (fs.js:1243:6)
    at internal/util.js:278:30
    at new Promise (<anonymous>)
    at Object.writeFile (internal/util.js:277:12)
    at createIndex (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/db.js:97:37) {
  code: 'ENOENT',
  errno: -2
}
Error: ENOENT, localMusic.sqlite not found in /opt/sonos-controller-unofficial/resources/app.asar
    at createError (electron/js2c/asar.js:111:17)
    at Object.module.<computed> [as open] (electron/js2c/asar.js:179:23)
    at Object.writeFile (fs.js:1243:6)
    at internal/util.js:278:30
    at new Promise (<anonymous>)
    at Object.writeFile (internal/util.js:277:12)
    at createIndex (/opt/sonos-controller-unofficial/resources/app.asar/localMusic/db.js:97:37) {
  code: 'ENOENT',
  errno: -2
}
/opt/sonos-controller-unofficial/resources/app.asar/node_modules/sql.js/dist/sql-wasm.js:107
function D(a){if(e.onAbort)e.onAbort(a);Ha(a);E(a);Va=!0;throw new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");}function pb(a){var b=qb;return String.prototype.startsWith?b.startsWith(a):0===b.indexOf(a)}function rb(){return pb("data:application/octet-stream;base64,")}var qb="sql-wasm.wasm";if(!rb()){var sb=qb;qb=e.locateFile?e.locateFile(sb,z):z+sb}
                                                         ^

RuntimeError: abort(Error: ENOENT, localMusic.sqlite not found in /opt/sonos-controller-unofficial/resources/app.asar). Build with -s ASSERTIONS=1 for more info.
    at process.D (/opt/sonos-controller-unofficial/resources/app.asar/node_modules/sql.js/dist/sql-wasm.js:107:64)
    at process.emit (events.js:223:5)
    at processPromiseRejections (internal/process/promises.js:201:33)
    at processTicksAndRejections (internal/process/task_queues.js:95:32)
0xvividmirage commented 4 years ago

Is there anything meaningful in the developer console?

/opt/sonos-controller-unofficial/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:88 Warning: componentWillReceiveProps has been renamed, and is not recommended for use. See https://fb.me/react-unsafe-component-lifecycles for details.

* Move data fetching code or side effects to componentDidUpdate.
* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state
* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.

Please update the following components: VirtualList
printWarning @ /opt/sonos-controller-unofficial/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:88
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/enhanced/SonosEnhanced.js:85 Object
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/enhanced/SonosEnhanced.js:85 Object
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/enhanced/SonosEnhanced.js:85 Object
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:417 onVolumeEvent 192.168.1.108 44
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:407 onMutedEvent 192.168.1.108 false
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:392 onRenderingControlEvent 192.168.1.108 Object
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:427 onPlayStateEvent 192.168.1.101 stopped
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:427 onPlayStateEvent 192.168.1.108 playing
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:402 onGroupRenderingControlEvent 192.168.1.101 Array(3)
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:377 onZoneGroupTopologyEvent 192.168.1.106 Array(1)
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:452 onContentDirectoryEvent SonosEnhanced Object
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:417 onVolumeEvent 192.168.1.106 46
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:407 onMutedEvent 192.168.1.106 false
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:392 onRenderingControlEvent 192.168.1.106 Object
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:427 onPlayStateEvent 192.168.1.106 playing
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:377 onZoneGroupTopologyEvent 192.168.1.106 Array(1)
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:377 onZoneGroupTopologyEvent 192.168.1.106 Array(1)
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a0C2q5FBAGtuFopEx96ayCf%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a1KnTw354jtQmDvA6b3Fvi0%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a3qp1ushu4Ve2Vl5keFaUDM%3fsid%3d12%26flags%3d8224%26sn%3d2
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:452 onContentDirectoryEvent SonosEnhanced Object
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:452 onContentDirectoryEvent SonosEnhanced Object
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:417 onVolumeEvent 192.168.1.101 44
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:407 onMutedEvent 192.168.1.101 false
/opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js:392 onRenderingControlEvent 192.168.1.101 Object
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a3zkLIQIwUzSVO7BPOiqVSE%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a2cpvqneVD7dxyD2x1Q2N1U%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a60miRS7FrwzvkLRj0Jzlvi%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a0TbUBfDnRESf3Z41MajK2D%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a37ov3WCGKkLizp4ahPHKNR%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a0n7RacgSiGRYOEKysh0glU%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a2yJSmc4zKPW6JHSKTnuwB6%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a7lkkpBe13UFrPIe9Ffn2cb%3fsid%3d12%26flags%3d8224%26sn%3d2
service-worker.js:11 Cached hit http://192.168.1.101:1400/getaa?s=1&u=x-sonos-spotify%3aspotify%253atrack%253a1Ktcsstw5MujUNShL9mskS%3fsid%3d12%26flags%3d8224%26sn%3d2
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/app.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/Application.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/index.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/SonosServiceReducer.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/constants/index.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/constants/Constants.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/GroupManagementReducer.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/CurrentTrackReducer.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/VolumeControlReducer.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/QueueReducer.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/BrowserListReducer.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/constants/BrowserListConstants.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/common/helpers.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/MusicServicesReducer.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/services/MusicServiceClient.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/services/SonosService.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/helpers/getServiceLogoUrl.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/services/enhanced/Discovery.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/services/enhanced/SonosEnhanced.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/services/enhanced/RenderingControlEnhanced.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/services/enhanced/ContentDirectoryEnhanced.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/services/enhanced/ListenerEnhanced.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/SonosServiceActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/helpers/sonos.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/selectors/ZoneGroupSelectors.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/PlaylistReducer.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reducers/EqReducer.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/services/IpcService.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/BrowserListActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/selectors/CurrentTrackSelectors.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/PlaylistActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/common/ipcCommands.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/CurrentTrack.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/CurrentTrackExpanded.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/AlbumArt.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/helpers/dom-utility.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/CurrentTrackCollapsed.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/CurrentTrackNoMusic.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/CurrentTrackActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/QueueList.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/QueueListItem.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/QueueActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/helpers/getSelectionSeries.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/selectors/QueueSelectors.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/BrowserList.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/BrowserListItem.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/selectors/BrowserListSelectors.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/PlayControls.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/PlayerActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/selectors/PlayerSelectors.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/PositionInfo.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/VolumeControls.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/MuteButton.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/ValueSlider.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/VolumeControlActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/EqActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/selectors/GroupManagementSelectors.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/selectors/VolumeControlSelectors.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/ZoneGroupList.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/ZoneGroup.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/ZoneGroupPlayState.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/ZoneGroupMember.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/ZoneGroupActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/GroupManagement.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/GroupManagementNode.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/GroupManagementActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/MusicServiceManagement.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/reduxActions/MusicServicesActions.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/PlaylistManagement.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/PlaylistManagementAddTrack.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/PlaylistManagementEdit.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/PlaylistManagementSave.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/EqSettings.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/SearchBar.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/SearchBarSources.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/components/Loader.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/ui/selectors/LoaderSelectors.js.map: 
DevTools failed to load SourceMap: Could not load content for file:///opt/sonos-controller-unofficial/resources/app.asar/service-worker.js.map: 
pascalopitz commented 4 years ago

You will need to terminate the orphaned process hogging the 13453 port.

0xvividmirage commented 4 years ago

So -- I just tried poiting it to a folder that has less music files and i am able to navigate to it. However, my main music folder, I guess is too large to load. I also notice that my music files will not play. Which audio formats are supported? Can you descibe to me what I need to do as a test to get this to work?

hobleyd commented 4 years ago

My Music folder is a symbolic link to a network drive, but symlinks don't appear in the file browser?

pascalopitz commented 4 years ago

Ok, some changes in v0.2.1-alpha5.

Symlinks are now followed when indexing and browsable, not sure about network shares though.

Files not showing/playing previously even though they are music files might have been caused by them not being tagged. I have changed this and they play fine now, just without album. artist and albumart info.

The list of valid file formats can be found here: https://github.com/pascalopitz/unoffical-sonos-controller-for-linux/blob/master/src/localMusic/common.js This is derived from https://developer.sonos.com/build/content-service-add-features/supported-audio-formats/

hobleyd commented 4 years ago

v0.2.1-alpha6 still won't let me select my Music folder which is a link to an nfs share. I can see the symlink, but it is greyed out.

0xvividmirage commented 4 years ago

Can you share avideo or GIF of what you are doing to get this working on your own machine? I cannot get it to play a local file at all. I tried several formats and it does not function. All of my files are on my local machine.

hobleyd commented 4 years ago

I moved a single Artist to a local folder to try it out. When I start the app, I click on "On this device" and see the Artist in question. When I click on the Artist, I get: <-- POST /smapi --> POST /smapi 200 2ms 2.32kb on the terminal running the app, but nothing else happens...

hobleyd commented 4 years ago

I have been poking around and discovered the developer console. When I click on the artist (Hazel O'Connor for reference) I get:

/snap/sonos-controller-unofficial/20/resources/app.asar/ui/components/BrowserListItem.js:234 double click
/snap/sonos-controller-unofficial/20/resources/app.asar/ui/reducers/index.js:43 Error: Invalid character in entity name
Line: 16
Column: 54
Char:  
    at error (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sax/lib/sax.js:651)
    at strictFail (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sax/lib/sax.js:677)
    at SAXParser.write (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sax/lib/sax.js:1491)
    at Parser.exports.Parser.Parser.parseString (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/xml2js/lib/parser.js:323)
    at Parser.parseString (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/xml2js/lib/parser.js:5)
    at exports.parseString (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/xml2js/lib/parser.js:369)
    at Object.Helpers._ParseXml (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sonos/lib/helpers.js:301)
    at /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sonos/lib/helpers.js:321
    at new Promise (<anonymous>)
    at Object.Helpers.ParseXml (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sonos/lib/helpers.js:320)
(anonymous) @ /snap/sonos-controller-unofficial/20/resources/app.asar/ui/reducers/index.js:43
Promise.catch (async)
(anonymous) @ /snap/sonos-controller-unofficial/20/resources/app.asar/ui/reducers/index.js:42
(anonymous) @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/redux/lib/redux.js:483
_onClick @ /snap/sonos-controller-unofficial/20/resources/app.asar/ui/components/BrowserListItem.js:218
invokeFunc @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10359
trailingEdge @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10408
timerExpired @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10396
setTimeout (async)
setTimeout @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:6668
leadingEdge @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10367
debounced @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10436
handleClick @ /snap/sonos-controller-unofficial/20/resources/app.asar/ui/components/BrowserListItem.js:236
callCallback @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:188
invokeGuardedCallbackDev @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:237
invokeGuardedCallback @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:292
invokeGuardedCallbackAndCatchFirstError @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:306
executeDispatch @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:389
executeDispatchesInOrder @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:414
executeDispatchesAndRelease @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3278
executeDispatchesAndReleaseTopLevel @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3287
forEachAccumulated @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3259
runEventsInBatch @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3304
runExtractedPluginEventsInBatch @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3514
handleTopLevel @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3558
batchedEventUpdates$1 @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:21871
batchedEventUpdates @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:795
dispatchEventForLegacyPluginEventSystem @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3568
attemptToDispatchEvent @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:4267
dispatchEvent @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:4189
unstable_runWithPriority @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/scheduler/cjs/scheduler.development.js:653
runWithPriority$1 @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:11039
discreteUpdates$1 @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:21887
discreteUpdates @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:806
dispatchDiscreteEvent @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:4168
/snap/sonos-controller-unofficial/20/resources/app.asar/ui/reducers/index.js:33 Uncaught (in promise) Error: Invalid character in entity name
Line: 16
Column: 54
Char:  
    at error (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sax/lib/sax.js:651)
    at strictFail (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sax/lib/sax.js:677)
    at SAXParser.write (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sax/lib/sax.js:1491)
    at Parser.exports.Parser.Parser.parseString (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/xml2js/lib/parser.js:323)
    at Parser.parseString (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/xml2js/lib/parser.js:5)
    at exports.parseString (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/xml2js/lib/parser.js:369)
    at Object.Helpers._ParseXml (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sonos/lib/helpers.js:301)
    at /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sonos/lib/helpers.js:321
    at new Promise (<anonymous>)
    at Object.Helpers.ParseXml (/snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sonos/lib/helpers.js:320)
error @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sax/lib/sax.js:651
strictFail @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sax/lib/sax.js:677
write @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sax/lib/sax.js:1491
exports.Parser.Parser.parseString @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/xml2js/lib/parser.js:323
(anonymous) @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/xml2js/lib/parser.js:5
exports.parseString @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/xml2js/lib/parser.js:369
Helpers._ParseXml @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sonos/lib/helpers.js:301
(anonymous) @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sonos/lib/helpers.js:321
Helpers.ParseXml @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/sonos/lib/helpers.js:320
_doRequest @ /snap/sonos-controller-unofficial/20/resources/app.asar/ui/services/MusicServiceClient.js:50
async function (async)
(anonymous) @ /snap/sonos-controller-unofficial/20/resources/app.asar/ui/reducers/index.js:27
(anonymous) @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/redux-promise/lib/index.js:23
(anonymous) @ /snap/sonos-controller-unofficial/20/resources/app.asar/ui/reducers/index.js:48
(anonymous) @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/redux/lib/redux.js:483
_onClick @ /snap/sonos-controller-unofficial/20/resources/app.asar/ui/components/BrowserListItem.js:218
invokeFunc @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10359
trailingEdge @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10408
timerExpired @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10396
setTimeout (async)
setTimeout @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:6668
leadingEdge @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10367
debounced @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/lodash/lodash.js:10436
handleClick @ /snap/sonos-controller-unofficial/20/resources/app.asar/ui/components/BrowserListItem.js:236
callCallback @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:188
invokeGuardedCallbackDev @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:237
invokeGuardedCallback @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:292
invokeGuardedCallbackAndCatchFirstError @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:306
executeDispatch @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:389
executeDispatchesInOrder @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:414
executeDispatchesAndRelease @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3278
executeDispatchesAndReleaseTopLevel @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3287
forEachAccumulated @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3259
runEventsInBatch @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3304
runExtractedPluginEventsInBatch @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3514
handleTopLevel @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3558
batchedEventUpdates$1 @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:21871
batchedEventUpdates @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:795
dispatchEventForLegacyPluginEventSystem @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:3568
attemptToDispatchEvent @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:4267
dispatchEvent @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:4189
unstable_runWithPriority @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/scheduler/cjs/scheduler.development.js:653
runWithPriority$1 @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:11039
discreteUpdates$1 @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:21887
discreteUpdates @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:806
dispatchDiscreteEvent @ /snap/sonos-controller-unofficial/20/resources/app.asar/node_modules/react-dom/cjs/react-dom.development.js:4168
pistikem commented 3 years ago

i am using version 0.2.2 and i am able to surf through the directory tree 'on my device' - so far so good. now, i can only play mp3 music files so far - but none of the FLAC files show up and can't be played therefore. can FLAC files be indexed with this controller ? they definitely work fine with the Android-based Sonos controller on the very same setup using the same linux server - but i would rather use this controller here on linux.

s1037989 commented 2 years ago

FWIW, the local music feature is working terrifically on 0.2.9+, specifically using local regular files (not symlinks), with correct permissions, and not on any kind of non-disk mount point (like NFS, sshfs, s3fs, etc). PR #173 exists to resolve an issue when dealing with filenames with special characters that Sonos doesn't seem to like.

pistikem commented 2 years ago

dear Stefan, dear Pascal,

i happily use the unofficial sonos controller every day but i ultimately 'pulled the plug' in terms of storing FLAC music files on my own linux file server and instead make now use of QNAP's software for that. see here described what agony i went through to (not) get this running on a newest Slackware v15.0 Linux system :

https://www.linuxquestions.org/questions/linux-software-2/sonos-controller-unofficial-stopped-working-with-samba-4-15-5-and-slack150-4175708284/#post6351130

anyway, thank you for your feedback - and sorry for my delayed answer.

bye, pisti


On Thu, 30 Dec 2021, Stefan Adams wrote:

FWIW, the local music feature is working terrifically on 0.2.9+, specifically using local regular files (not symlinks), with correct permissions, and not on any kind of non-disk mount point (like NFS, sshfs, s3fs, etc). PR #173 exists to resolve an issue when dealing with filenames with special characters that Sonos doesn't seem to like.

— Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you commented.[ASVJYVTQOKAPRLBBTFWARELUTSG3TA5CNFSM4C2O47OKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOHPFEQVQ.gif] Message ID: @.***>