-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
72 lines (60 loc) · 2.94 KB
/
main.cpp
File metadata and controls
72 lines (60 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include "SubFile.h"
void appendBlockToFile(std::ofstream *MergedSubtitles, Block block, int index);
int main() {
std::ofstream MergedSubtitles("mergedTranslation.srt");
SubFile primary("primary.srt");
SubFile secondary("secondary.srt");
// SubFile empty("empty.txt");
Block primaryBlock = primary.getNextBlock();;
Block secondaryBlock = secondary.getNextBlock();
Block lastPrimaryBlock = primaryBlock;
Block nextPrimaryBlock = primary.getNextBlock();
int index = 1;
while (true) {
if (index == 124) {
int i = 0;
}
if (primaryBlock.empty()) break;
if (!secondaryBlock.empty() &&
(secondaryBlock.from > primaryBlock.from || secondaryBlock.to > primaryBlock.to)) {
appendBlockToFile(&MergedSubtitles, primaryBlock, index);
lastPrimaryBlock = primaryBlock;
primaryBlock = nextPrimaryBlock;
nextPrimaryBlock = primary.getNextBlock();
} else if (!secondaryBlock.empty()
&& ((secondaryBlock.from < primaryBlock.to && secondaryBlock.from > primaryBlock.from)
|| (secondaryBlock.to < primaryBlock.to && secondaryBlock.to > primaryBlock.from)
|| (secondaryBlock.from < nextPrimaryBlock.to && secondaryBlock.from > nextPrimaryBlock.from)
|| (secondaryBlock.to < nextPrimaryBlock.to && secondaryBlock.to > nextPrimaryBlock.from)
|| (secondaryBlock.from < lastPrimaryBlock.to && secondaryBlock.from > lastPrimaryBlock.from)
|| (secondaryBlock.to < lastPrimaryBlock.to && secondaryBlock.to > lastPrimaryBlock.from))) {
// appendBlockToFile(&MergedSubtitles, primaryBlock, index);
// lastPrimaryBlock = primaryBlock;
// primaryBlock = nextPrimaryBlock;
// nextPrimaryBlock = primary.getNextBlock();
secondaryBlock = secondary.getNextBlock();
} else if (!secondaryBlock.empty() && (secondaryBlock.to < primaryBlock.from)) {
appendBlockToFile(&MergedSubtitles, secondaryBlock, index);
secondaryBlock = secondary.getNextBlock();
} else {
appendBlockToFile(&MergedSubtitles, primaryBlock, index);
lastPrimaryBlock = primaryBlock;
primaryBlock = nextPrimaryBlock;
nextPrimaryBlock = primary.getNextBlock();
}
index++;
}
MergedSubtitles.close();
return 0;
}
void appendBlockToFile(std::ofstream *MergedSubtitles, Block block, int index) {
*MergedSubtitles << index;
*MergedSubtitles << std::endl;
*MergedSubtitles << block.getTimeStampString();
*MergedSubtitles << std::endl;
*MergedSubtitles << block.content;
*MergedSubtitles << std::endl;
}
//If end time (secondary) < start time (primary) -> append (secondary) (do not skip primary)
//else if start time (secondary) between start and end (primary) -> append (primary) + skip (secondary)