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