Skip to content

Instantly share code, notes, and snippets.

@slacktracer
Created April 11, 2018 17:03
Show Gist options
  • Save slacktracer/7c14c0173ad9e31e2367eed834484417 to your computer and use it in GitHub Desktop.
Save slacktracer/7c14c0173ad9e31e2367eed834484417 to your computer and use it in GitHub Desktop.
JS Bin // source https://jsbin.com/mataxiv
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
const input = `1
00:00:02,252 --> 00:00:06,797
Por 300 anos,
a dinastia Targaryen governou Westeros.
2
00:00:07,132 --> 00:00:08,925
Ainda havia guerras.
3
00:00:09,009 --> 00:00:12,261
Casas ainda eram queimadas
e homens ainda morriam.
4
00:00:12,346 --> 00:00:15,348
Mas em comparação com o caos anterior,
5
00:00:15,432 --> 00:00:17,266
o reino era estável.
6
00:00:17,684 --> 00:00:19,268
E tedioso.
7
00:00:19,603 --> 00:00:23,940
Os Targaryen mentiram, roubaram
e mataram tanto quanto os outros lordes.
8
00:00:24,191 --> 00:00:27,318
Mas eles tinham dragões para responder
às reclamações.
9
00:00:28,237 --> 00:00:30,404
Até que não tiveram mais.
`;
const offset = "00:00:33,999";
const offsets = parseToNumbers(offset);
const eachGroup = input.split("\n\n");
const x = eachGroup
.map(group => {
const [id, timecodes, ...text] = group.split("\n");
const [start, end] = timecodes.split(" --> ");
const newTimecodes = [
parseToString(adjustTime(sum(offsets, parseToNumbers(start)))),
parseToString(adjustTime(sum(offsets, parseToNumbers(end))))
].join(" --> ");
return `${id}\n${newTimecodes}\n${text.join("\n")}`;
})
.join("\n\n");
console.log(x);
function adjustTime(timecode) {
let add = 0;
if (timecode[3] > 999) {
timecode[3] = timecode[3] % 1000;
add = 1;
}
timecode[2] += add;
add = 0;
if (timecode[2] > 59) {
timecode[2] = timecode[2] % 60;
add = 1;
}
timecode[1] += add;
add = 0;
if (timecode[1] > 59) {
timecode[1] = timecode[1] % 60;
add = 1;
}
timecode[0] += add;
return timecode;
}
function parseToNumbers(input) {
let values = input.split(":");
[values[2], values[3]] = values[2].split(",");
return values.map(number => Number(number));
}
function parseToString(input) {
const result = input.map((number, index) =>
String(number).padStart(index < 3 ? 2 : 3, "0")
);
return `${result[0]}:${result[1]}:${result[2]},${result[3]}`;
}
function sum(offset, timecode) {
return timecode.map((number, index) => {
return number + offset[index];
});
}
</script>
<script id="jsbin-source-javascript" type="text/javascript">const input = `1
00:00:02,252 --> 00:00:06,797
Por 300 anos,
a dinastia Targaryen governou Westeros.
2
00:00:07,132 --> 00:00:08,925
Ainda havia guerras.
3
00:00:09,009 --> 00:00:12,261
Casas ainda eram queimadas
e homens ainda morriam.
4
00:00:12,346 --> 00:00:15,348
Mas em comparação com o caos anterior,
5
00:00:15,432 --> 00:00:17,266
o reino era estável.
6
00:00:17,684 --> 00:00:19,268
E tedioso.
7
00:00:19,603 --> 00:00:23,940
Os Targaryen mentiram, roubaram
e mataram tanto quanto os outros lordes.
8
00:00:24,191 --> 00:00:27,318
Mas eles tinham dragões para responder
às reclamações.
9
00:00:28,237 --> 00:00:30,404
Até que não tiveram mais.
`;
const offset = "00:00:33,999";
const offsets = parseToNumbers(offset);
const eachGroup = input.split("\n\n");
const x = eachGroup
.map(group => {
const [id, timecodes, ...text] = group.split("\n");
const [start, end] = timecodes.split(" --> ");
const newTimecodes = [
parseToString(adjustTime(sum(offsets, parseToNumbers(start)))),
parseToString(adjustTime(sum(offsets, parseToNumbers(end))))
].join(" --> ");
return `${id}\n${newTimecodes}\n${text.join("\n")}`;
})
.join("\n\n");
console.log(x);
function adjustTime(timecode) {
let add = 0;
if (timecode[3] > 999) {
timecode[3] = timecode[3] % 1000;
add = 1;
}
timecode[2] += add;
add = 0;
if (timecode[2] > 59) {
timecode[2] = timecode[2] % 60;
add = 1;
}
timecode[1] += add;
add = 0;
if (timecode[1] > 59) {
timecode[1] = timecode[1] % 60;
add = 1;
}
timecode[0] += add;
return timecode;
}
function parseToNumbers(input) {
let values = input.split(":");
[values[2], values[3]] = values[2].split(",");
return values.map(number => Number(number));
}
function parseToString(input) {
const result = input.map((number, index) =>
String(number).padStart(index < 3 ? 2 : 3, "0")
);
return `${result[0]}:${result[1]}:${result[2]},${result[3]}`;
}
function sum(offset, timecode) {
return timecode.map((number, index) => {
return number + offset[index];
});
}
</script></body>
</html>
const input = `1
00:00:02,252 --> 00:00:06,797
Por 300 anos,
a dinastia Targaryen governou Westeros.
2
00:00:07,132 --> 00:00:08,925
Ainda havia guerras.
3
00:00:09,009 --> 00:00:12,261
Casas ainda eram queimadas
e homens ainda morriam.
4
00:00:12,346 --> 00:00:15,348
Mas em comparação com o caos anterior,
5
00:00:15,432 --> 00:00:17,266
o reino era estável.
6
00:00:17,684 --> 00:00:19,268
E tedioso.
7
00:00:19,603 --> 00:00:23,940
Os Targaryen mentiram, roubaram
e mataram tanto quanto os outros lordes.
8
00:00:24,191 --> 00:00:27,318
Mas eles tinham dragões para responder
às reclamações.
9
00:00:28,237 --> 00:00:30,404
Até que não tiveram mais.
`;
const offset = "00:00:33,999";
const offsets = parseToNumbers(offset);
const eachGroup = input.split("\n\n");
const x = eachGroup
.map(group => {
const [id, timecodes, ...text] = group.split("\n");
const [start, end] = timecodes.split(" --> ");
const newTimecodes = [
parseToString(adjustTime(sum(offsets, parseToNumbers(start)))),
parseToString(adjustTime(sum(offsets, parseToNumbers(end))))
].join(" --> ");
return `${id}\n${newTimecodes}\n${text.join("\n")}`;
})
.join("\n\n");
console.log(x);
function adjustTime(timecode) {
let add = 0;
if (timecode[3] > 999) {
timecode[3] = timecode[3] % 1000;
add = 1;
}
timecode[2] += add;
add = 0;
if (timecode[2] > 59) {
timecode[2] = timecode[2] % 60;
add = 1;
}
timecode[1] += add;
add = 0;
if (timecode[1] > 59) {
timecode[1] = timecode[1] % 60;
add = 1;
}
timecode[0] += add;
return timecode;
}
function parseToNumbers(input) {
let values = input.split(":");
[values[2], values[3]] = values[2].split(",");
return values.map(number => Number(number));
}
function parseToString(input) {
const result = input.map((number, index) =>
String(number).padStart(index < 3 ? 2 : 3, "0")
);
return `${result[0]}:${result[1]}:${result[2]},${result[3]}`;
}
function sum(offset, timecode) {
return timecode.map((number, index) => {
return number + offset[index];
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment