vincelwt / harmony

:musical_note: Sleek music player for Spotify, SoundCloud, Google Play Music and your local files
http://getharmony.xyz
859 stars 58 forks source link

Harmony doesn't play the next song in the list. #195

Closed unixfox closed 6 years ago

unixfox commented 6 years ago

Since the 0.8.0 version when a song reaches the end of the track harmony doesn't play the next song and get stuck. Here is a screenshot of harmony stuck: image-20171118-02

vincelwt commented 6 years ago

Hey, This must have something to do with the new way Harmony is preloading tracks. Could you send me the log so I can have further information to debug? You can get it by pressing Cmd+alt+i and going over the console tab Thanks!

unixfox commented 6 years ago

I got another issue that I didn't have yesterday, the feed list is absent. Here is a screenshot of the console: image-20171119-06 Logs:

We are on a -linux- system
main.js:227 Uncaught TypeError: Cannot read property 'active' of undefined
    at Data.find (file:///opt/Harmony/resources/app.asar/app/js/main.js:227:19)
    at Cursor.execFn (/opt/Harmony/resources/app.asar/node_modules/linvodb3/lib/model.js:390:12)
    at ready (/opt/Harmony/resources/app.asar/node_modules/linvodb3/lib/cursor.js:205:54)
    at EventEmitter.<anonymous> (/opt/Harmony/resources/app.asar/node_modules/linvodb3/lib/cursor.js:193:7)
    at emitNone (events.js:86:13)
    at EventEmitter.emit (events.js:188:7)
    at /opt/Harmony/resources/app.asar/node_modules/linvodb3/lib/cursor.js:333:45
    at /opt/Harmony/resources/app.asar/node_modules/linvodb3/lib/cursor.js:382:5
    at /opt/Harmony/resources/app.asar/node_modules/levelup/lib/levelup.js:211:7
    at /opt/Harmony/resources/app.asar/node_modules/level-js/index.js:54:12
player.js:135 Uncaught TypeError: Cannot read property 'active' of undefined
    at Function.playTrack (player.js:135)
    at playByIndex (main.js:50)
    at HTMLDivElement.ondblclick (index.html:1)
playTrack @ player.js:135
playByIndex @ main.js:50
ondblclick @ index.html:1
utils.js:7 Testing internet & checking for updates...
events.js:163 Uncaught Error: EACCES: permission denied, open '/tmp348833862'
events.js:163 Uncaught Error: EACCES: permission denied, open '/tmp348833862'
main.js:311 Uncaught TypeError: Cannot read property 'active' of undefined
    at refresh (main.js:311)
    at testInternet (main.js:366)
    at Request.request [as _callback] (utils.js:32)
    at Request.self.callback (/opt/Harmony/resources/app.asar/node_modules/request/request.js:188)
    at emitTwo (events.js:106)
    at Request.emit (events.js:194)
    at Request.<anonymous> (/opt/Harmony/resources/app.asar/node_modules/request/request.js:1171)
    at emitOne (events.js:96)
    at Request.emit (events.js:191)
    at IncomingMessage.<anonymous> (/opt/Harmony/resources/app.asar/node_modules/request/request.js:1091)
refresh @ main.js:311
testInternet @ main.js:366
request @ utils.js:32
self.callback @ /opt/Harmony/resources/app.asar/node_modules/request/request.js:188
emitTwo @ events.js:106
emit @ events.js:194
(anonymous) @ /opt/Harmony/resources/app.asar/node_modules/request/request.js:1171
emitOne @ events.js:96
emit @ events.js:191
(anonymous) @ /opt/Harmony/resources/app.asar/node_modules/request/request.js:1091
onceWrapper @ events.js:293
emitNone @ events.js:91
emit @ events.js:188
endReadableNT @ _stream_readable.js:975
_combinedTickCallback @ internal/process/next_tick.js:80
_tickCallback @ internal/process/next_tick.js:104
utils.js:7 Testing internet & checking for updates...
main.js:311 Uncaught TypeError: Cannot read property 'active' of undefined
    at refresh (main.js:311)
    at testInternet (main.js:366)
    at Request.request [as _callback] (utils.js:32)
    at Request.self.callback (/opt/Harmony/resources/app.asar/node_modules/request/request.js:188)
    at emitTwo (events.js:106)
    at Request.emit (events.js:194)
    at Request.<anonymous> (/opt/Harmony/resources/app.asar/node_modules/request/request.js:1171)
    at emitOne (events.js:96)
    at Request.emit (events.js:191)
    at IncomingMessage.<anonymous> (/opt/Harmony/resources/app.asar/node_modules/request/request.js:1091)
refresh @ main.js:311
testInternet @ main.js:366
request @ utils.js:32
self.callback @ /opt/Harmony/resources/app.asar/node_modules/request/request.js:188
emitTwo @ events.js:106
emit @ events.js:194
(anonymous) @ /opt/Harmony/resources/app.asar/node_modules/request/request.js:1171
emitOne @ events.js:96
emit @ events.js:191
(anonymous) @ /opt/Harmony/resources/app.asar/node_modules/request/request.js:1091
onceWrapper @ events.js:293
emitNone @ events.js:91
emit @ events.js:188
endReadableNT @ _stream_readable.js:975
_combinedTickCallback @ internal/process/next_tick.js:80
_tickCallback @ internal/process/next_tick.js:104
player.js:421 Uncaught TypeError: Cannot read property 'active' of undefined
    at ended (player.js:421)
    at HTMLAudioElement.getById.addEventListener._ (player.js:488)
ended @ player.js:421
getById.addEventListener._ @ player.js:488

But I got the issue fixed by resetting the settings but I'm still facing to the initial issue and here is a screenshot of the issue: image-20171119-07 Logs:

We are on a -linux- system
utils.js:7 Testing internet & checking for updates...
utils.js:35 Latest release is 0.8.0 and we're running 0.8.0
main.js:341 Fetching services data over.
events.js:163 Uncaught Error: EACCES: permission denied, open '/tmp357058157'
/tmp357058157:1 GET file:///tmp357058157 net::ERR_FILE_NOT_FOUND
index.html:1 Uncaught (in promise) DOMException: Failed to load because no supported source was found.
vincelwt commented 6 years ago

Thanks. This is partly due to how Harmony is now caching tracks for faster playback. While I fix this, I'll add it as an experimental option and default to how it was before. Expect an update very soon

unixfox commented 6 years ago

Isn't related to the path? I can see that Harmony is trying to create a file in the temporary directory but the path is malformed and gets a permission denied. For example on my screenshot it's /tmp357058157 and it should be /tmp/357058157. Moreover harmony is working fine under root permissions and if I list the files at the root of my system I can find the temporary files:

[emilien@pcryzen]: />$ ls
bin  boot  dev  etc  home  lib  lib64  lost+found  mnt  opt  proc  root  run  sbin  srv  sys  tmp  tmp357125555  tmp358395836  usr  var
vincelwt commented 6 years ago

Yes, you are correct. The problem is this path is obtained directly through an Electron API (as it varies with machines) and it doesn't always returns the same path format depending on machines. Once I figure out exactly all the paths formats it can return and a way to formalize them, then it'll be good

vincelwt commented 6 years ago

@unixfox Could you try with the new version? There is now a settings option (disabled by default) which allow you to enable the caching. I also tried to fix paths issues when saving to the tmp directory, is it now working? Thanks!

unixfox commented 6 years ago

It's working fine now with and without caching! Thank you.