Discogs Cuesheet Generator

Generate and download cuesheets from Discogs release pages

< 脚本Discogs Cuesheet Generator的反馈

评价:好评 - 脚本运行良好

§
发表于:2025-02-28

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);
})();

发表回复

登录(不可用)以发表回复。

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址