kar-to-ass
Version:
Converts midi/kar karaoke files to ass format
36 lines (27 loc) • 1.08 kB
text/typescript
import {promisify} from 'util';
import {exists, readFile, writeFile} from 'fs';
const passThroughFunction = (fn: any, args: any) => {
if(!Array.isArray(args)) args = [args];
return promisify(fn)(...args);
};
export const asyncExists = (file: string) => passThroughFunction(exists, file);
export const asyncReadFile = (...args: any) => passThroughFunction(readFile, args);
export const asyncWriteFile = (...args: any) => passThroughFunction(writeFile, args);
export function usToAss(us: number): string {
return msToAss(Math.round(1e-3 * us));
}
function msToAss(ms: number): string {
const date = new Date(ms);
const hour = date.getUTCHours();
const hourStr = `${hour}`.padStart(2, '0');
const min = date.getUTCMinutes();
const minStr = `${min}`.padStart(2, '0');
const sec = date.getUTCSeconds();
const secStr = `${sec}`.padStart(2, '0');
const mil = date.getUTCMilliseconds();
const milStr = `${mil}`.padStart(3, '0');
return `${hourStr}:${minStr}:${secStr}.${milStr.substr(0, 2)}`;
}
export function clone(a: any) {
return JSON.parse(JSON.stringify(a));
}