diff --git a/mb_qol_inline_recording_tracks.user.js b/mb_qol_inline_recording_tracks.user.js index ca3231b4..82e8def6 100644 --- a/mb_qol_inline_recording_tracks.user.js +++ b/mb_qol_inline_recording_tracks.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name MB: QoL: Inline all recording's tracks on releases -// @version 2024.7.25 +// @version 2024.8.2 // @description Display all tracks and releases on which a recording appears from the release page. // @author ROpdebee // @license MIT; https://opensource.org/licenses/MIT @@ -15,6 +15,11 @@ // @grant none // ==/UserScript== +let releaseMbid = location.pathname.match(/\/release\/([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})/); +if (releaseMbid) { + releaseMbid = releaseMbid[1]; +} + function splitChunks(arr, chunkSize) { let chunks = []; for (let i = 0; i < arr.length; i += chunkSize) { @@ -77,14 +82,17 @@ function getReleaseName(release) { } function formatRow(release) { - return `${getReleaseName(release)} (${getTrackIndices(release.media)})`; + let rowHead = '
appears on:
${getReleaseName(release)} (${getTrackIndices(release.media)}) ${toIntelligibleTime(release.media[0].track[0].length)}
`; } function insertRows(recordingTd, recordingInfo) { let rowElements = recordingInfo.releases .sort(compareReleases) .map(formatRow) - .map(row => '
appears on:
' + row + '
') .join('\n'); rowElements = '
' + rowElements + '
'; let existingArs = recordingTd.querySelector('div.ars'); @@ -151,3 +159,12 @@ onReactHydrated(document.querySelector('.tracklist-and-credits'), () => { document.querySelector('span#medium-toolbox') .firstChild.before(button, ' | '); }); + +function toIntelligibleTime(_ms) { + var ms = typeof _ms == "string" ? parseInt(_ms, 10) : _ms; + if (ms > 0) { + var d = new Date(ms); + return (d.getUTCHours() > 0 ? d.getUTCHours() + ":" + d.getUTCMinutes().toString().padStart(2, "0") : d.getUTCMinutes()) + ":" + d.getUTCSeconds().toString().padStart(2, "0") + (d.getUTCMilliseconds() > 0 ? "." + d.getUTCMilliseconds().toString().padStart(3, "0") : ""); + } + return "?:??"; +}