From e604a3cf67fbea85e5ad426706c0584624fca46b Mon Sep 17 00:00:00 2001 From: devdra9 Date: Mon, 3 Feb 2025 18:31:19 +0900 Subject: [PATCH] =?UTF-8?q?psdExport.js=20=EC=98=88=EC=99=B8=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- copyFiles.py | 6 +- output.xlsx | Bin 309895 -> 40940 bytes package-lock.json | 410 +++++++++++++++++++++++++++++++++++++ package.json | 9 +- psdExport.js | 75 +++---- scoring.json | 116 +++++------ 제2501회 정기 DIC C형.json | 371 +++++++++++++++++++++++++++++++++ 7 files changed, 889 insertions(+), 98 deletions(-) create mode 100644 package-lock.json create mode 100644 제2501회 정기 DIC C형.json 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 a2076ea4c2321f3689c3a9d7b611c40df4acacd3..3d57cf53eaab1ee96d6365c649c5bbde7208f693 100644 GIT binary patch delta 1457 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 TNnghQ`!$f_|NJ-H>V5wo!IU38 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