오프닝자막, 동영상자막 관련 알고리즘 수정

This commit is contained in:
2025-03-17 18:51:45 +09:00
parent 66223549b8
commit 5d222516a3
18 changed files with 671 additions and 92 deletions

View File

@@ -159,6 +159,8 @@
}
},
"2": {
"subtitleStartTime": 170,
"openingStartTime": 0,
"1": {
"ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
"type": "array",
@@ -186,48 +188,59 @@
"point": 3
},
"5": {
"ele": "//CRCUnitArr[@Name='{search}']",
"search": "금학산 정상에서",
"ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name",
"ele2": "",
"type": "subtitle",
"value": "금학산 정상에서",
"point": 3
},
"6": {
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']",
"ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']",
"search": "금학산 정상에서",
"ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102",
"ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102",
"search" : "금학산 정상에서",
"type": "subtitle",
"value": "바탕체",
"point": 2
},
"7": {
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='170']",
"ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='170']",
"ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101",
"ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101",
"search": "금학산 정상에서",
"type": "subtitle",
"value": "170",
"point": 2
},
"8": {
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-15081004']",
"ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-15081004']",
"ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100",
"ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100",
"search": "금학산 정상에서",
"type": "subtitle",
"value": "-15081004",
"point": 2
},
"9": {
"existEle": "//CRCUnitArr[@Name='{search}']",
"ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex=count(//CROwneUnit[1]/preceding-sibling::CROwneUnit))]/@Length)",
"type": "searchIndex",
"value": 170,
"ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)",
"ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)",
"search": "금학산 정상에서",
"type": "subtitle",
"value": 170,
"point": 2
},
"10": {
"ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='금학산 정상에서']]/preceding::CROwneUnit))][@Length='150']",
"ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[1]/preceding-sibling::CROwneUnit))][@Length='150']",
"ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length",
"ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = {startTime}]/@Length",
"ele3": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length",
"search" : "금학산 정상에서",
"type": "subtitle",
"value": "150",
"point": 2
},
"11": {
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
"type": "range",
"ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@VID600 | //CROwneUnit[{subtitleIndex}]/CRCUnitArr/@VID601",
"ele2": "//CROwneUnit[position() = (//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = 170]/@ClipIndex) + 1]/CRCUnitArr/@VID600 | //CROwneUnit[position() = (//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = 170]/@ClipIndex) + 1]/CRCUnitArr/@VID601",
"type": "subtitle",
"search": "금학산 정상에서",
"start": [ 0.200, 0.800 ],
"end": [ 0.666, 0.999 ],
"value": ["0.260", "0.888"],
"point": 2
},
"12": {
@@ -351,14 +364,17 @@
"point": 3
},
"28": {
"ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit)][@Pos='0']",
"ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Pos='0']",
"existEle": "//CRCUnitArr[@Name='{search}']",
"ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)",
"ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[not(CRCUnitArr[@Name='기본자막'])][2]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)",
"type": "searchIndex",
"value": 0,
"search": "금학산의 기운 (Energy of a Mountain)",
"point": 2
},
"29": {
"ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit))][@Length='120']",
"ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Length='120']",
"ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit/CRCUnitArr[@Name='금학산의 기운 (Energy of a Mountain)']/parent::CROwneUnit/preceding-sibling::CROwneUnit)][@Length=120]",
"ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[not(CRCUnitArr[@Name='기본자막'])][2]/preceding::CROwneUnit)][@Length='120']",
"search": "금학산의 기운 (Energy of a Mountain)",
"point": 2
},