Hi! Your script didn't work right away, index was always 0. I don't know Javascript, but ChatGPT was able to fix it. This is what it came up with. Thanks, bye!
(function() { 'use strict'; console.log("Discogs Cuesheet Generator script is running");
// Angepasster Selektor für den Track-Titel let trackTitleElement = track.querySelector('td.trackTitle_loyWF span'); let trackTitle = trackTitleElement ? trackTitleElement.textContent.trim() : "TRACKTITLE";
// Angepasster Selektor für die Dauer let durationElement = track.querySelector('td.duration_GhhxK span'); let duration = durationElement ? durationElement.textContent.trim() : "00:00";
let [minutes, seconds] = duration.split(':').map(Number); let trackDuration = (minutes * 60) + seconds; // Dauer in Sekunden
let startTimeFormatted = formatTime(totalSeconds);
cuesheet += `\nTRACK ${trackNumber} AUDIO\n TITLE "${trackTitle}"\n PERFORMER "${artist}"\n INDEX 01 ${startTimeFormatted}\n`;
totalSeconds += trackDuration; // Addiere die Trackdauer zu den Gesamtsekunden });
// Create a Blob with the cuesheet content const blob = new Blob([cuesheet], { type: 'text/plain' });
// Create a download link const link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = `${artist} - ${album}.cue`;
function formatTime(totalSeconds) { let minutes = Math.floor(totalSeconds / 60); let seconds = totalSeconds % 60; let frames = 0; // We don't have frame information, so we'll use 0 return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}:${String(frames).padStart(2, '0')}`; }
Hi! Your script didn't work right away, index was always 0. I don't know Javascript, but ChatGPT was able to fix it. This is what it came up with. Thanks, bye!
(function() {
'use strict';
console.log("Discogs Cuesheet Generator script is running");
let button = document.createElement('button');
button.textContent = 'Generate Cuesheet';
button.style.position = 'fixed';
button.style.top = '260px';
button.style.left = '30px';
button.style.zIndex = '9999';
document.body.appendChild(button);
function generateCuesheet() {
console.log("generateCuesheet function called");
try {
let artistElement = document.querySelector('h1 a[href^="/artist/"]');
let artist = artistElement ? artistElement.textContent.trim() : "ARTIST";
let albumElement = document.querySelector('h1');
let album = albumElement ? albumElement.textContent.split('–').pop().trim() : "ALBUM";
let tracks = document.querySelectorAll('tr[data-track-position]');
let cuesheet = `PERFORMER "${artist}"\nTITLE "${album}"\nFILE "${artist} - ${album}.mp3" MP3\n`;
let totalSeconds = 0;
tracks.forEach((track, index) => {
let trackNumber = track.getAttribute('data-track-position') || String(index + 1).padStart(2, '0');
// Angepasster Selektor für den Track-Titel
let trackTitleElement = track.querySelector('td.trackTitle_loyWF span');
let trackTitle = trackTitleElement ? trackTitleElement.textContent.trim() : "TRACKTITLE";
// Angepasster Selektor für die Dauer
let durationElement = track.querySelector('td.duration_GhhxK span');
let duration = durationElement ? durationElement.textContent.trim() : "00:00";
let [minutes, seconds] = duration.split(':').map(Number);
let trackDuration = (minutes * 60) + seconds; // Dauer in Sekunden
let startTimeFormatted = formatTime(totalSeconds);
cuesheet += `\nTRACK ${trackNumber} AUDIO\n TITLE "${trackTitle}"\n PERFORMER "${artist}"\n INDEX 01 ${startTimeFormatted}\n`;
totalSeconds += trackDuration; // Addiere die Trackdauer zu den Gesamtsekunden
});
// Create a Blob with the cuesheet content
const blob = new Blob([cuesheet], { type: 'text/plain' });
// Create a download link
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = `${artist} - ${album}.cue`;
// Trigger the download
link.click();
// Clean up
URL.revokeObjectURL(link.href);
} catch (error) {
console.error("Error generating cuesheet:", error.message);
alert("Error generating cuesheet: " + error.message);
}
}
function formatTime(totalSeconds) {
let minutes = Math.floor(totalSeconds / 60);
let seconds = totalSeconds % 60;
let frames = 0; // We don't have frame information, so we'll use 0
return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}:${String(frames).padStart(2, '0')}`;
}
button.addEventListener('click', generateCuesheet);
})();