From 88aea719ad3a7b43aa5f8efea5ef1aa19e281a6f Mon Sep 17 00:00:00 2001 From: patrickkfkan Date: Sat, 23 Jan 2021 00:38:15 +0800 Subject: [PATCH] parseAlbumInfo(): handle relative track urls --- lib/parser.js | 6 +++++- lib/utils.js | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/parser.js b/lib/parser.js index 6502b18..f941248 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -181,10 +181,14 @@ function parseAlbumInfo(html, opts) { return file; } basic.track.itemListElement.forEach( track => { + let trackUrl = track.item.url; + if (!utils.isAbsoluteUrl(trackUrl)) { + trackUrl = utils.getUrl(trackUrl, album.url); + } album.tracks.push({ position: track.position, name: track.item.name, - url: track.item.url, + url: trackUrl, duration: track.item.duration_secs, streamUrl: _getStreamUrl(track.item.url) }); diff --git a/lib/utils.js b/lib/utils.js index 0ed0274..72e57d1 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -108,6 +108,11 @@ function stripMultipleWhitespaces(str) { return str.replace(/\s+/g, ' '); } +function isAbsoluteUrl(url) { + const isAbsolute = new RegExp('^([a-z]+://|//)', 'i'); + return isAbsolute.test(url); +} + module.exports = { getUrl, getSiteUrl, @@ -120,5 +125,6 @@ module.exports = { substrBefore, splitUrl, getSearchUrl, - stripMultipleWhitespaces + stripMultipleWhitespaces, + isAbsoluteUrl }; \ No newline at end of file