drift-meter/measure-drift.mjs

66 lines
1.6 KiB
JavaScript
Raw Normal View History

2021-10-01 22:02:49 +02:00
#!/usr/bin/zx
2021-10-01 22:17:22 +02:00
const label_file_path = process.argv.slice(-2)[0];
const align_to = process.argv.slice(-2)[1];
2021-10-01 22:02:49 +02:00
const labels = (await $`cat ${label_file_path}`).stdout
.split("\n")
.filter((e) => e != "")
.map((l) => l.split("\t"))
.map(([start, stop, label]) => {
const suffix = label.match(/-[^-]+$/)[0];
const filename = label.replace(suffix, "");
return {
time: parseFloat(start),
label,
filename,
suffix: suffix.slice(1),
};
})
.reduce((acc, element) => {
if (!acc[element.filename]) {
acc[element.filename] = {
labels: {},
};
}
acc[element.filename].labels[element.suffix] = element.time;
return acc;
}, {});
for (let filename in labels) {
const filelabels = labels[filename].labels;
for (const suffix of ["A", "B"]) {
const duration =
filelabels[`end${suffix}`] - filelabels[`start${suffix}`] || null;
const key = `duration[${suffix}]`;
labels[filename][key] = duration;
}
}
for (let filename1 in labels) {
for (let filename2 in labels) {
if (filename1 === filename2) {
continue;
}
for (const suffix of ["A", "B"]) {
const key = `duration[${suffix}]`;
2021-10-01 22:17:22 +02:00
if (
labels[filename1][key] &&
labels[filename2][key] &&
filename2 == align_to
) {
2021-10-01 22:02:49 +02:00
console.log(
2021-10-01 22:17:22 +02:00
"Aby dostosować",
2021-10-01 22:02:49 +02:00
filename1,
"do",
2021-10-01 22:02:49 +02:00
filename2,
"należy odpalić change-length z parametrem",
`${labels[filename2][key] / labels[filename1][key]}`
2021-10-01 22:02:49 +02:00
);
break;
}
}
}
}