[fix] Fixes #74

Leading zeroes are nice
This commit is contained in:
Nemo 2022-08-26 17:51:19 +05:30
parent 93321c6fb9
commit 0012c3b083
2 changed files with 49 additions and 2 deletions

View File

@ -11,14 +11,15 @@ export function generate(data, outputFile) {
fs.appendFileSync(outputFile, `FILE "${data.audioFile}" M4A\n`);
for (var i in data.tracks) {
let song = data.tracks[i];
let minutes = song.start.hh * 60 + song.start.mm;
let minutes = String(song.start.hh * 60 + song.start.mm).padStart(2, '0');
let seconds = String(song.start.ss).padStart(2, '0');
fs.appendFileSync(outputFile, ` TRACK ${song.track} AUDIO\n`);
fs.appendFileSync(outputFile, ` TITLE "${song.title}"\n`);
fs.appendFileSync(outputFile, ` PERFORMER "${song.artist}"\n`);
// Cue File is always MINUTES:SECONDS:FRAME, where FRAME is 00
fs.appendFileSync(
outputFile,
` INDEX 01 ${minutes}:${song.start.ss}:00\n`
` INDEX 01 ${minutes}:${seconds}:00\n`
);
}
}

46
test/cue_test.js Normal file
View File

@ -0,0 +1,46 @@
/*jshint esversion: 6 */
import { strict as assert } from "assert";
import { generate } from "../src/cue.js";
import fs from "fs";
const DATA = {
artist: "Dumbledore",
album: "Curse of the Elder Wand",
audioFile: 'audio.m4a',
tracks: [{
artist: "Unknown",
title: "the 1",
track: 1,
start: { ts: "00:00:00", hh: 0, mm: 0, ss: 0, calc: 0 },
end: { ts: "00:3:9", hh: 0, mm: 3, ss: 9, calc: 189 },
_: { left_text: "", right_text: "the 1" },
},
{
artist: "Unknown",
title: "cardigan",
track: 2,
start: { ts: "00:3:09", hh: 0, mm: 3, ss: 9, calc: 189 },
end: { ts: "00:9:30", hh: 0, mm: 9, ss: 30, calc: 570 },
_: { left_text: "", right_text: "cardigan" },
}]
};
describe("CUE", function () {
it("should generate with leading zeroes", function () {
generate(DATA, "/tmp/test.cue");
const CUE_EXPECTED = `REM Generated using youtube-cue
PERFORMER "Dumbledore"
TITLE "Curse of the Elder Wand"
FILE "audio.m4a" M4A
TRACK 1 AUDIO
TITLE "the 1"
PERFORMER "Unknown"
INDEX 01 00:00:00
TRACK 2 AUDIO
TITLE "cardigan"
PERFORMER "Unknown"
INDEX 01 03:09:00
`;
assert.equal(CUE_EXPECTED, fs.readFileSync('/tmp/test.cue', 'utf-8'));
});
});