From 06566d37c2a575086bab6c930288d00568aaca23 Mon Sep 17 00:00:00 2001 From: Borewit Date: Wed, 26 Sep 2018 22:25:32 +0200 Subject: [PATCH] Asynchronous music-metadata updates while streaming (#1449) * Ensure that default file/protocol handlers are re-installed after updating. Previously, they were only installed when the preference was changed. This caused the handlers to point to non-existing files after updates occurred and older versions were removed by Squirrel. Closes #791, #911. * webtorrent/webtorrent-desktop#1340: Switch to async metadata updates. * Use fat arrow * Fix issue track number not displayed if total number of tracks is not defined (common.track.of === null). * Add disk number in addition to track number. * Update order of audio properties from: album, track, disk, format to track, disk, album, format * #1340 Update music-metadata to 2.5.0, enabling async 'per' tag updates #1452 Fix for playing some '.m4b' files * #1340 Commented out the metadata event debug output. * #1340 Remove line comment to get rid of max line length lint error * Update music-metadata 2.6.0 to fix some async events are getting triggered. * Return JSX block. * Get rid of third parameter which is replaced by CSS capitalize * Fixed error when value is undefined. * Update music-metadata dependency to 2.6.1. * fix(package): update music-metadata to version 3.1.0 Closes #1478 * Revert "Ensure that default file/protocol handlers are re-installed after updating." This reverts commit 39145b23664d082d52f6d715a43fb4755b03d162. --- package.json | 2 +- src/renderer/pages/player-page.js | 4 +--- src/renderer/webtorrent.js | 12 ++++++++---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index d952e2e2..760fe425 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "location-history": "^1.0.0", "material-ui": "^0.17.0", "mkdirp": "^0.5.1", - "music-metadata": "^2.4.2", + "music-metadata": "^3.1.0", "network-address": "^1.1.0", "parse-torrent": "^6.0.1", "prettier-bytes": "^1.0.1", diff --git a/src/renderer/pages/player-page.js b/src/renderer/pages/player-page.js index 826d7aeb..5996241b 100644 --- a/src/renderer/pages/player-page.js +++ b/src/renderer/pages/player-page.js @@ -238,9 +238,7 @@ function renderAudioMetadata (state) { const elems = [] // Audio metadata: artist(s) - const artist = common.albumartist || common.artist || - (common.artists && common.artists.filter(function (a) { return a }).join(', ')) || - '(Unknown Artist)' + const artist = common.artist || common.albumartist if (artist) { elems.push((
diff --git a/src/renderer/webtorrent.js b/src/renderer/webtorrent.js index bd73b733..38d48b24 100644 --- a/src/renderer/webtorrent.js +++ b/src/renderer/webtorrent.js @@ -345,7 +345,12 @@ function getAudioMetadata (infoHash, index) { const metadata = { title: file.name } ipc.send('wt-audio-metadata', infoHash, index, metadata) - const options = { native: false, skipCovers: true, fileSize: file.length } + const options = { native: false, + skipCovers: true, + fileSize: file.length, + observer: event => { + ipc.send('wt-audio-metadata', infoHash, index, event.metadata) + } } const onMetaData = file.done // If completed; use direct file access ? mm.parseFile(path.join(torrent.path, file.path), options) @@ -353,9 +358,8 @@ function getAudioMetadata (infoHash, index) { : mm.parseStream(file.createReadStream(), file.name, options) onMetaData - .then(function (metadata) { - console.log('got audio metadata for %s (length=%s): %o', file.name, file.length, metadata) - ipc.send('wt-audio-metadata', infoHash, index, metadata) + .then(() => { + console.log(`metadata for file='${file.name}' completed.`) }).catch(function (err) { return console.log('error getting audio metadata for ' + infoHash + ':' + index, err) })