mirror of
https://github.com/captn3m0/youtube-cue.git
synced 2024-09-28 04:23:32 +00:00
parent
93321c6fb9
commit
0012c3b083
@ -11,14 +11,15 @@ export function generate(data, outputFile) {
|
|||||||
fs.appendFileSync(outputFile, `FILE "${data.audioFile}" M4A\n`);
|
fs.appendFileSync(outputFile, `FILE "${data.audioFile}" M4A\n`);
|
||||||
for (var i in data.tracks) {
|
for (var i in data.tracks) {
|
||||||
let song = data.tracks[i];
|
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, ` TRACK ${song.track} AUDIO\n`);
|
||||||
fs.appendFileSync(outputFile, ` TITLE "${song.title}"\n`);
|
fs.appendFileSync(outputFile, ` TITLE "${song.title}"\n`);
|
||||||
fs.appendFileSync(outputFile, ` PERFORMER "${song.artist}"\n`);
|
fs.appendFileSync(outputFile, ` PERFORMER "${song.artist}"\n`);
|
||||||
// Cue File is always MINUTES:SECONDS:FRAME, where FRAME is 00
|
// Cue File is always MINUTES:SECONDS:FRAME, where FRAME is 00
|
||||||
fs.appendFileSync(
|
fs.appendFileSync(
|
||||||
outputFile,
|
outputFile,
|
||||||
` INDEX 01 ${minutes}:${song.start.ss}:00\n`
|
` INDEX 01 ${minutes}:${seconds}:00\n`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
46
test/cue_test.js
Normal file
46
test/cue_test.js
Normal 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'));
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user