diff --git a/copyFiles.py b/copyFiles.py index 5948846..46a45e3 100644 --- a/copyFiles.py +++ b/copyFiles.py @@ -28,8 +28,8 @@ def copy_dic_subdirs(source_root, target_root_b, target_root_c): print(f"Skipping {dir_name} under {parent_dir}, as it doesn't match '2교시' or '3교시'.") # 사용법 -source_directory = "/Users/waterdrw/Nextcloud/Development/KAIT/검정데이터/제2501회 정기/답안파일/제2501회 디지털정보활용능력_정기_답안파일/" # 원본 디렉토리 경로 -target_directory_b = "./output/B" # '2교시'의 타겟 경로 -target_directory_c = "./output/C" # '3교시'의 타겟 경로 +source_directory = r"C:\Users\dra\project\data\제2501회 정기\답안파일\제2501회 디지털정보활용능력_정기_답안파일\경기남부" # 원본 디렉토리 경로 +target_directory_b = r".\output\B" # '2교시'의 타겟 경로 +target_directory_c = r".\output\C" # '3교시'의 타겟 경로 copy_dic_subdirs(source_directory, target_directory_b, target_directory_c) diff --git a/output.xlsx b/output.xlsx index a2076ea..3d57cf5 100644 Binary files a/output.xlsx and b/output.xlsx differ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2312f75 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,410 @@ +{ + "name": "psd-test", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "psd-test", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "jsonpath": "^1.1.1", + "psd": "^3.4.0", + "xlsx": "^0.18.5", + "xmldom": "^0.6.0", + "xpath": "^0.0.34" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/coffee-script": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", + "integrity": "sha512-W3s+SROY73OmrSGtPTTW/2wp2rmW5vuh0/tUuCK1NvTuyzLOVPccIP9whmhZ4cYWcr2NJPNENZIFaAMkTD5G3w==", + "deprecated": "CoffeeScript on NPM has moved to \"coffeescript\" (no hyphen)", + "license": "MIT", + "dependencies": { + "mkdirp": "~0.3.5" + }, + "bin": { + "cake": "bin/cake", + "coffee": "bin/coffee" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/coffeescript-module": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/coffeescript-module/-/coffeescript-module-0.2.1.tgz", + "integrity": "sha512-xVLuaDltmc5OnwvGd7/82U/kwQ0me09b66Ywg/N/KynmE41XTWbsl2+dCySOs3ixnjsy5xXOdM5BjIpjNUAQSg==" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "license": "MIT", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jspack": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/jspack/-/jspack-0.0.4.tgz", + "integrity": "sha512-DC/lSTXYDDdYWzyY/9A1kMzp6Ov9mCRhZQ1cGg4te2w3y4/aKZTSspvbYN4LUsvSzMCb/H8z4TV9mYYW/bs3PQ==" + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/parse-engine-data": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-engine-data/-/parse-engine-data-0.1.2.tgz", + "integrity": "sha512-V3SuNul7Rd+8g2XDykqz1X/OJYD+VWmueHPza3fvEXdXbUqm6ohny0d7u5U8xcBrwkr7VpJc4FncP2vSpNt5vg==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.4.4" + } + }, + "node_modules/pngjs": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.2.0.tgz", + "integrity": "sha512-MCRe3RYxSIqrYgJjgo0DrYcsgN8oaMvR6RmBGo75rZQnQIYLisvvcP7eESsWHY9b7TcZPc9jtOWWwDrCQ6xc2A==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/psd": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/psd/-/psd-3.4.0.tgz", + "integrity": "sha512-LCPskSzQopgwOgFFaYbKgEzm8yOid0cT/GoA46yCnP1ZYTdmkm6cSQNa3x/3GcDX9IUatV+gRrf6RHskLGAdHQ==", + "dependencies": { + "coffee-script": "~ 1.7.1", + "coffeescript-module": "~ 0.2.1", + "iconv-lite": "~ 0.4.4", + "jspack": "~ 0.0.3", + "lodash": "~4.17.21", + "parse-engine-data": "~ 0.1", + "pngjs": "3.2.0", + "rsvp": "~ 3.0.6" + } + }, + "node_modules/rsvp": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.0.21.tgz", + "integrity": "sha512-D+v2iA91GqQ2C6E5StYdg1EN/FCFR27/3MoTa3A/yF2xwzU95o85MTgzReYhl82YnLK0eZwRHvyVEWeXjqbydQ==", + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "license": "MIT", + "dependencies": { + "escodegen": "^1.8.1" + } + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "license": "MIT" + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xmldom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz", + "integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xpath": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.34.tgz", + "integrity": "sha512-FxF6+rkr1rNSQrhUNYrAFJpRXNzlDoMxeXN5qI84939ylEv3qqPFKa85Oxr6tDaJKqwW6KKyo2v26TSv3k6LeA==", + "license": "MIT", + "engines": { + "node": ">=0.6.0" + } + } + } +} diff --git a/package.json b/package.json index bde97a0..dbf3725 100644 --- a/package.json +++ b/package.json @@ -9,5 +9,12 @@ }, "keywords": [], "author": "", - "license": "ISC" + "license": "ISC", + "dependencies": { + "jsonpath": "^1.1.1", + "psd": "^3.4.0", + "xlsx": "^0.18.5", + "xmldom": "^0.6.0", + "xpath": "^0.0.34" + } } diff --git a/psdExport.js b/psdExport.js index e15c2f8..a27f62b 100644 --- a/psdExport.js +++ b/psdExport.js @@ -6,8 +6,7 @@ const path = require('path'); const xpath = require('xpath'); const { DOMParser } = require('xmldom'); - -const sampleDir = './output/C/DIC'; +const sampleDir = './output/B/DIC'; const students = fs.readdirSync(sampleDir); // 기준표 파일 읽기 @@ -323,50 +322,54 @@ function getScore(psdData, scoring, index) { continue; } - - const result = jsonPath.query(psdTree, ele); - console.log(`ele: ${ele}, value: ${value} result: ${result}`); - if (result.length == 0) { - gradingResult[key] = 0; - continue; - } - if (type == "boolean") { + try { + const result = jsonPath.query(psdTree, ele); + console.log(`ele: ${ele}, value: ${value} result: ${result}`); + if (result.length == 0) { + gradingResult[key] = 0; + continue; + } + if (type == "boolean") { // console.log(`result ${result.length}`); - gradingResult[key] = result.length > 0 ? point : 0; - } - // value가 color code인 경우 R,G,B를 16진수로 변환하여 비교하고 같다면 점수 부여 - // value: "ffa200" - // result: [255,162,0,255] - // 255,162,0,255 -> ffa200 - else if (type == "color") { - // console.log(`result ${result}`); // result 255,162,0,255 - const temp = result[0].slice(0, 3).join(','); // 255,162,0 - color = temp.split(',').map(v => parseInt(v).toString(16)).join(''); // ffa20 - // ffa20 -> ffa200 - if (color.length == 5) { - color = color + '0'; + gradingResult[key] = result.length > 0 ? point : 0; } + // value가 color code인 경우 R,G,B를 16진수로 변환하여 비교하고 같다면 점수 부여 + // value: "ffa200" + // result: [255,162,0,255] + // 255,162,0,255 -> ffa200 + else if (type == "color") { + // console.log(`result ${result}`); // result 255,162,0,255 + const temp = result[0].slice(0, 3).join(','); // 255,162,0 + color = temp.split(',').map(v => parseInt(v).toString(16)).join(''); // ffa20 + // ffa20 -> ffa200 + if (color.length == 5) { + color = color + '0'; + } // console.log(`color: ${color}`); - gradingResult[key] = result.length > 0 && value === color ? point : 0; - } + gradingResult[key] = result.length > 0 && value === color ? point : 0; + } - // type이 font인 경우 font의 이름만 추출하여 비교 - // value: "Arial" - // result: ["Arial-BoldItalicMT"] - else if (type == "font") { + // type이 font인 경우 font의 이름만 추출하여 비교 + // value: "Arial" + // result: ["Arial-BoldItalicMT"] + else if (type == "font") { // console.log(`result ${result}`); - const font = result[0].split('-')[0]; + const font = result[0].split('-')[0]; // console.log(`font: ${font}`); - gradingResult[key] = result.length > 0 && value === font ? point : 0; - } + gradingResult[key] = result.length > 0 && value === font ? point : 0; + } - else if (result[0] === value) { - gradingResult[key] = point; - totalScore += point; - } else { + else if (result[0] === value) { + gradingResult[key] = point; + totalScore += point; + } else { + gradingResult[key] = 0; + } + } catch (error) { + console.error(`Error processing JSONPath query for ele: ${ele}`, error); gradingResult[key] = 0; } } diff --git a/scoring.json b/scoring.json index 2dfe075..7f251c6 100644 --- a/scoring.json +++ b/scoring.json @@ -48,7 +48,7 @@ "point": 0 }, "4": { - "ele": "$.children[?(@.name=='Amusement Park')]", + "ele": "$.children[?(@.name=='동네쉼터')]", "type": "boolean", "point": 10 }, @@ -57,30 +57,30 @@ "point": 0 }, "6": { - "ele": "$.children[?(@.name=='Amusement Park')].name", - "value": "Amusement Park", + "ele": "$.children[?(@.name=='Neighborhood Friends')].name", + "value": "Neighborhood Friends", "point": 10 }, "7": { - "ele": "$.children[?(@.name=='Amusement Park')].text.font.names[0]", + "ele": "$.children[?(@.name=='Neighborhood Friends')].text.font.names[0]", "type": "font", "value": "Arial", "point": 10 }, "8": { - "ele": "$.children[?(@.name=='Amusement Park')].text.font.names[0]", + "ele": "$.children[?(@.name=='Neighborhood Friends')].text.font.names[0]", "value": "Arial-BoldItalicMT", "point": 10 }, "9": { - "ele": "$.children[?(@.name=='Amusement Park')].text.font.sizes[0]", + "ele": "$.children[?(@.name=='Neighborhood Friends')].text.font.sizes[0]", "value": 48, "point": 10 }, "10": { - "ele": "$.children[?(@.name=='Amusement Park')].text.font.colors[0]", + "ele": "$.children[?(@.name=='Neighborhood Friends')].text.font.colors[0]", "type": "color", - "value": "aaaaaa", + "value": "ffa200", "point": 10 }, "11": { @@ -96,25 +96,25 @@ "point": 0 }, "14": { - "ele": "$.children[?(@.name=='가오슝 놀이공원 가요')].name", - "value": "가오슝 놀이공원 가요", + "ele": "$.children[?(@.name=='동네 친구들')].name", + "value": "동네 친구들", "point": 10 }, "15": { - "ele": "$.children[?(@.name=='가오슝 놀이공원 가요')].text.font.names[0]", + "ele": "$.children[?(@.name=='동네 친구들')].text.font.names[0]", "type": "font", - "value": "DotumChe", + "value": "GungsuhChe", "point": 10 }, "16": { - "ele": "$.children[?(@.name=='가오슝 놀이공원 가요')].text.font.sizes[0]", + "ele": "$.children[?(@.name=='동네 친구들')].text.font.sizes[0]", "value": 36, "point": 10 }, "17": { - "ele": "$.children[?(@.name=='가오슝 놀이공원 가요')].text.font.colors[0]", + "ele": "$.children[?(@.name=='동네 친구들')].text.font.colors[0]", "type": "color", - "value": "261795", + "value": "27d6dc", "point": 10 }, "18": { @@ -134,7 +134,7 @@ "point": 0 }, "22": { - "ele": "$.children[?(@.name=='드롭존')]", + "ele": "$.children[?(@.name=='동네쉼터')]", "type": "boolean", "point": 10 }, @@ -170,59 +170,59 @@ }, "2": { "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", - "value": "150", + "value": "140", "point": 2 }, "3": { "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", "type": "startend", "start": "0", - "end": "230", + "end": "340", "point": 2 }, "4": { - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='43'][@VID100='5'][@VID103='0.89999998']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='52'][@VID100='10'][@VID103='0.80000001']", "point": 3 }, "5": { - "ele": "//GPString[@VID7='재미있는 놀이공원']/@VID7", + "ele": "//GPString[@VID7='추억의 말뚝박기 놀이']/@VID7", "type": "subtitle", "length": 1, "point": 3 }, "6": { - "ele": "//CRCUnitArr[@Name='재미있는 놀이공원']//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", + "ele": "//CRCUnitArr[@Name='추억의 말뚝박기 놀이']//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", "point": 2 }, "7": { - "ele": "//CRCUnitArr[@Name='재미있는 놀이공원']//GCUnitPool[@Type='1']/GCUnit[@VID101='130']", + "ele": "//CRCUnitArr[@Name='추억의 말뚝박기 놀이']//GCUnitPool[@Type='1']/GCUnit[@VID101='110']", "point": 2 }, "8": { - "ele": "//CRCUnitArr[@Name='재미있는 놀이공원']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele": "//CRCUnitArr[@Name='추억의 말뚝박기 놀이']//GCUnitPool/GCUnit[@Type='4']/@VID100", "type": "color", - "value": "-6742488", + "value": "-270661", "point": 2 }, "9": { - "ele": "//CRCUnitArr[@Name='재미있는 놀이공원']/@VID600 | //CRCUnitArr[@Name='재미있는 놀이공원']/@VID601", + "ele": "//CRCUnitArr[@Name='추억의 말뚝박기 놀이']/@VID600 | //CRCUnitArr[@Name='추억의 말뚝박기 놀이']/@VID601", "type": "multi", "value": [ - 0.291, - 0.914 + 0.292, + 0.929 ], "point": 2 }, "10": { - "existEle": "//CRCUnitArr[@Name='재미있는 놀이공원']", - "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='재미있는 놀이공원']]/preceding::CROwneUnit))]/@Length)", + "existEle": "//CRCUnitArr[@Name='추억의 말뚝박기 놀이']", + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='추억의 말뚝박기 놀이']]/preceding::CROwneUnit))]/@Length)", "type": "searchIndex", - "value": 150, + "value": 160, "point": 2 }, "11": { - "existEle": "//CRCUnitArr[@Name='재미있는 놀이공원']", - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='재미있는 놀이공원']]/preceding::CROwneUnit)]/@Length", + "existEle": "//CRCUnitArr[@Name='추억의 말뚝박기 놀이']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='추억의 말뚝박기 놀이']]/preceding::CROwneUnit)]/@Length", "type": "searchIndex", "value": "120", "point": 2 @@ -238,15 +238,15 @@ "existEle": "//CRClip[@Path='이미지1.jpg']", "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/@Length", "type": "searchIndex", - "value": "150", + "value": "180", "point": 2 }, "14": { "type": "multi", "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]//CRFilter/@ID |//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]//CRFilter/@VID100", "value": [ - "102", - "2" + "99", + "65" ], "point": 2 }, @@ -254,8 +254,8 @@ "type": "multi", "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@ID|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Range|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Type", "value": [ - "11", - "320:380", + "19", + "460:520", "2" ], "point": 2 @@ -264,7 +264,7 @@ "existEle": "//CRClip[@Path='이미지3.jpg']", "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/@Length", "type": "searchIndex", - "value": "180", + "value": "150", "point": 2 }, "17": { @@ -280,8 +280,8 @@ "type": "multi", "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@ID|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Range|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Type", "value": [ - "8", - "500:560", + "10", + "640:670", "2" ], "point": 2 @@ -290,15 +290,15 @@ "existEle": "//CRClip[@Path='이미지2.jpg']", "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/@Length", "type": "searchIndex", - "value": "180", + "value": "150", "point": 2 }, "20": { "type": "multi", "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]//CRFilter/@ID |//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]//CRFilter/@VID100", "value": [ - "67", - "4" + "184", + "20" ], "point": 2 }, @@ -306,50 +306,50 @@ "type": "multi", "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@ID|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Range|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Type", "value": [ - "19", - "710:740", + "0", + "760:820", "2" ], "point": 2 }, "22": { - "ele": "//GPString[@VID7='자동차 레이싱 코스' or @VID7='(A Car Racing Course)']/@VID7", + "ele": "//GPString[@VID7='동네 풍경' or @VID7='(Neighborhood Scene)']/@VID7", "type": "subtitle", "length": 2, "point": 3 }, "23": { - "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", + "ele": "//CRCUnitArr[@Name='동네 풍경 (Neighborhood Scene)']//GCUnitPool[@Type='1']/GCUnit[@VID102='궁서체']", "point": 2 }, "24": { - "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", + "ele": "//CRCUnitArr[@Name='동네 풍경 (Neighborhood Scene)']//GCUnitPool[@Type='1']/GCUnit[@VID101='160']", "point": 2 }, "25": { - "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele": "//CRCUnitArr[@Name='동네 풍경 (Neighborhood Scene)']//GCUnitPool/GCUnit[@Type='4']/@VID100", "type": "color", - "value": "-8036654", + "value": "-1589535", "point": 2 }, "26": { - "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']//GCUnitPool/GCUnit[@Type='2'][@VID100='0.30000001'][@VID101='-16777216']", + "ele": "//CRCUnitArr[@Name='동네 풍경 (Neighborhood Scene)']//GCUnitPool/GCUnit[@Type='2'][@VID100='0.2'][@VID101='-8510694']", "point": 2 }, "27": { - "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)'][@VID505='1'][@VID507='2']", + "ele": "//CRCUnitArr[@Name='동네 풍경 (Neighborhood Scene)'][@VID505='18'][@VID507='2']", "point": 3 }, "28": { - "existEle": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']", - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='재미있는 놀이공원']]/preceding::CROwneUnit)]/@Pos", + "existEle": "//CRCUnitArr[@Name='동네 풍경 (Neighborhood Scene)']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='추억의 말뚝박기 놀이']]/preceding::CROwneUnit)]/@Pos", "type": "searchIndex", "value": "0", "point": 2 }, "29": { - "existEle": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']", - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']]/preceding::CROwneUnit))]/@Length", + "existEle": "//CRCUnitArr[@Name='동네 풍경 (Neighborhood Scene)']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='동네 풍경 (Neighborhood Scene)']]/preceding::CROwneUnit))]/@Length", "type": "searchIndex", "value": "120", "point": 2 @@ -359,11 +359,11 @@ "point": 2 }, "31":{ - "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='720']", + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='810']", "point": 2 }, "32":{ - "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']", "point": 2 } diff --git a/제2501회 정기 DIC C형.json b/제2501회 정기 DIC C형.json new file mode 100644 index 0000000..2dfe075 --- /dev/null +++ b/제2501회 정기 DIC C형.json @@ -0,0 +1,371 @@ +{ + "0": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "none", + "point": 0 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "none", + "point": 0 + }, + "7": { + "ele": "none", + "point": 0 + }, + "8": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "boolean", + "point": 10 + } + }, + "1": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "$.children[?(@.name=='Amusement Park')]", + "type": "boolean", + "point": 10 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "$.children[?(@.name=='Amusement Park')].name", + "value": "Amusement Park", + "point": 10 + }, + "7": { + "ele": "$.children[?(@.name=='Amusement Park')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 10 + }, + "8": { + "ele": "$.children[?(@.name=='Amusement Park')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 10 + }, + "9": { + "ele": "$.children[?(@.name=='Amusement Park')].text.font.sizes[0]", + "value": 48, + "point": 10 + }, + "10": { + "ele": "$.children[?(@.name=='Amusement Park')].text.font.colors[0]", + "type": "color", + "value": "aaaaaa", + "point": 10 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "none", + "point": 0 + }, + "14": { + "ele": "$.children[?(@.name=='가오슝 놀이공원 가요')].name", + "value": "가오슝 놀이공원 가요", + "point": 10 + }, + "15": { + "ele": "$.children[?(@.name=='가오슝 놀이공원 가요')].text.font.names[0]", + "type": "font", + "value": "DotumChe", + "point": 10 + }, + "16": { + "ele": "$.children[?(@.name=='가오슝 놀이공원 가요')].text.font.sizes[0]", + "value": 36, + "point": 10 + }, + "17": { + "ele": "$.children[?(@.name=='가오슝 놀이공원 가요')].text.font.colors[0]", + "type": "color", + "value": "261795", + "point": 10 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "$.children[?(@.name=='드롭존')]", + "type": "boolean", + "point": 10 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "$[?(@.width == 65 && @.height == 35)]", + "type": "boolean", + "point": 10 + } + }, + "2": { + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지1.jpg", + "이미지3.jpg", + "이미지2.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1]/@Speed", + "value": "150", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "230", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='43'][@VID100='5'][@VID103='0.89999998']", + "point": 3 + }, + "5": { + "ele": "//GPString[@VID7='재미있는 놀이공원']/@VID7", + "type": "subtitle", + "length": 1, + "point": 3 + }, + "6": { + "ele": "//CRCUnitArr[@Name='재미있는 놀이공원']//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", + "point": 2 + }, + "7": { + "ele": "//CRCUnitArr[@Name='재미있는 놀이공원']//GCUnitPool[@Type='1']/GCUnit[@VID101='130']", + "point": 2 + }, + "8": { + "ele": "//CRCUnitArr[@Name='재미있는 놀이공원']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "type": "color", + "value": "-6742488", + "point": 2 + }, + "9": { + "ele": "//CRCUnitArr[@Name='재미있는 놀이공원']/@VID600 | //CRCUnitArr[@Name='재미있는 놀이공원']/@VID601", + "type": "multi", + "value": [ + 0.291, + 0.914 + ], + "point": 2 + }, + "10": { + "existEle": "//CRCUnitArr[@Name='재미있는 놀이공원']", + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='재미있는 놀이공원']]/preceding::CROwneUnit))]/@Length)", + "type": "searchIndex", + "value": 150, + "point": 2 + }, + "11": { + "existEle": "//CRCUnitArr[@Name='재미있는 놀이공원']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='재미있는 놀이공원']]/preceding::CROwneUnit)]/@Length", + "type": "searchIndex", + "value": "120", + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]//CRFilter/@ID |//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]//CRFilter/@VID100", + "value": [ + "102", + "2" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@ID|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Range|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Type", + "value": [ + "11", + "320:380", + "2" + ], + "point": 2 + }, + "16": { + "existEle": "//CRClip[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]//CRFilter/@ID |//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]//CRFilter/@VID101", + "value": [ + "103", + "10" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@ID|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Range|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Type", + "value": [ + "8", + "500:560", + "2" + ], + "point": 2 + }, + "19": { + "existEle": "//CRClip[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]//CRFilter/@ID |//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]//CRFilter/@VID100", + "value": [ + "67", + "4" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@ID|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Range|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Type", + "value": [ + "19", + "710:740", + "2" + ], + "point": 2 + }, + "22": { + "ele": "//GPString[@VID7='자동차 레이싱 코스' or @VID7='(A Car Racing Course)']/@VID7", + "type": "subtitle", + "length": 2, + "point": 3 + }, + "23": { + "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", + "point": 2 + }, + "24": { + "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", + "point": 2 + }, + "25": { + "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "type": "color", + "value": "-8036654", + "point": 2 + }, + "26": { + "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']//GCUnitPool/GCUnit[@Type='2'][@VID100='0.30000001'][@VID101='-16777216']", + "point": 2 + }, + "27": { + "ele": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)'][@VID505='1'][@VID507='2']", + "point": 3 + }, + "28": { + "existEle": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='재미있는 놀이공원']]/preceding::CROwneUnit)]/@Pos", + "type": "searchIndex", + "value": "0", + "point": 2 + }, + "29": { + "existEle": "//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='자동차 레이싱 코스 (A Car Racing Course)']]/preceding::CROwneUnit))]/@Length", + "type": "searchIndex", + "value": "120", + "point": 2 + }, + "30":{ + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Pos='0']", + "point": 2 + }, + "31":{ + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='720']", + "point": 2 + }, + "32":{ + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", + "point": 2 + } + + } +} \ No newline at end of file