From 493aca1ed177b14892cd98db88d01ff451c298f4 Mon Sep 17 00:00:00 2001 From: dragdra Date: Tue, 1 Apr 2025 14:41:14 +0900 Subject: [PATCH] =?UTF-8?q?=ED=83=80=EC=9E=84=EB=9D=BC=EC=9D=B8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20'=EB=B9=84=EB=94=94=EC=98=A42'=EC=9D=B8=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=EB=8F=84=20=EC=A0=95=EB=8B=B5=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 250331_DIC_2503C_채점결과.xlsx | Bin 150478 -> 150478 bytes 250401_DIC_2503C_TEST.xlsx | Bin 0 -> 21378 bytes DIC_2503A.json | 16 ++++++++-------- DIC_2503B.json | 16 ++++++++-------- DIC_2503C.json | 16 ++++++++-------- psdExport_2.js | 18 +++++++++++++++--- z.xbook | 2 +- 7 files changed, 40 insertions(+), 28 deletions(-) create mode 100644 250401_DIC_2503C_TEST.xlsx diff --git a/250331_DIC_2503C_채점결과.xlsx b/250331_DIC_2503C_채점결과.xlsx index addd2281a95083335268670e0d940ffc4c72b006..cf0a1d244acf96657a7a93444ba540b57928897b 100644 GIT binary patch delta 394 zcmX>%o%7su&JF#lEJ~O6e{7ztx_z=L5V%X#is}CWaNMdgn$LMH|%6|V4S{U7o))R3%h`FAQq$7^o6?^#i#9t@qNJj z=>{-?=^ncoGZ>902Tl~)?8tnZ#P|omx+IRlrU4~Jsc9ITG?rshazLzv^_jm5S=iK)ul$}tvcW*5fA7AEo%;L;Kr_Np-m5MD~ z(eoY*?zeDVprH#D$24$Z(4mJ+BAmnmZ+h4TnLbo{^F>cqD3j*HXa^}*>Dz@)8v(M( z=zbs~oHLkw7~p4xZbP{rig{U~MmM3@j~2|$NQQJG(JIkHB<^UAL@yR9iO`e6mjx}s z&ruq1F-CWpo!Tm`O_7m>QnT5Sty6Wu{BkPn<LmwV%nz8KXS@}NsYNUW;_3{_VY@8J^pUKT2?�ka^A^8f$< diff --git a/250401_DIC_2503C_TEST.xlsx b/250401_DIC_2503C_TEST.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c29efa8270f253744ff3aac5f4e05afbab91694c GIT binary patch literal 21378 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 J`0p0J{Tv2NfuR5Z literal 0 HcmV?d00001 diff --git a/DIC_2503A.json b/DIC_2503A.json index 2332f21..1b86235 100644 --- a/DIC_2503A.json +++ b/DIC_2503A.json @@ -228,16 +228,16 @@ "point": 2 }, "10": { - "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", - "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", "search": "자연 놀이터", "type": "video", "value": 170, "point": 2 }, "11": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", "search": "자연 놀이터", "type": "video", "value": "120", @@ -384,16 +384,16 @@ "point": 3 }, "28": { - "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", - "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", "search": "자연 속 놀이터 Nature playground", "type": "opening", "value": 0, "point": 2 }, "29": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", "search": "자연 속 놀이터 Nature playground", "type": "opening", "value": "120", diff --git a/DIC_2503B.json b/DIC_2503B.json index 0a64a72..36948a4 100644 --- a/DIC_2503B.json +++ b/DIC_2503B.json @@ -229,8 +229,8 @@ "point": 2 }, "10": { - "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", - "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", "search": "숲 속으로 떠나는 여행", "type": "videoIsExist", "value": [179, 180], @@ -238,8 +238,8 @@ "desc": "출제 오류로 인해 두 가지 정답 모두 인정" }, "11": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", "search": "숲 속으로 떠나는 여행", "type": "video", "value": "120", @@ -386,16 +386,16 @@ "point": 3 }, "28": { - "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", - "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", "search": "길가에 피어있는 꽃 Roadside flowers", "type": "opening", "value": 0, "point": 2 }, "29": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", "search": "길가에 피어있는 꽃 Roadside flowers", "type": "opening", "value": "120", diff --git a/DIC_2503C.json b/DIC_2503C.json index 16f7218..88c8e7d 100644 --- a/DIC_2503C.json +++ b/DIC_2503C.json @@ -228,16 +228,16 @@ "point": 2 }, "10": { - "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", - "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", "search": "연못 전망대 가는 길", "type": "video", "value": 170, "point": 2 }, "11": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", "search": "연못 전망대 가는 길", "type": "video", "value": "150", @@ -384,16 +384,16 @@ "point": 3 }, "28": { - "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", - "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", + "ele": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/preceding-sibling::CRTrackClip/@Length)", "search": "자연 테마 파크 Nature theme park", "type": "opening", "value": 0, "point": 2 }, "29": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", + "ele": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][@ClipIndex={clipIndex}]/@Length", "search": "자연 테마 파크 Nature theme park", "type": "opening", "value": "120", diff --git a/psdExport_2.js b/psdExport_2.js index dc1f833..2bd82e8 100644 --- a/psdExport_2.js +++ b/psdExport_2.js @@ -15,7 +15,6 @@ const todayDate = getToday(); // const scoringJson = require('./DIC_2503A.json'); // const scoringJson = require('./DIC_2503B.json'); const scoringJson = require('./DIC_2503C.json'); -const { get } = require('http'); // const scoringJson = require('./DIC_2503D.json'); // TEST @@ -127,6 +126,8 @@ const flattenedData = scoringResultList.map(student => { // excel에 표시하지 않을 key값들 const exceptKeys = [ "0", // 학생 이름 항상 제외 + "1", // psd1 + "2", // psd2 ] const exceptSubkeys = [ "videoStartTime", @@ -151,6 +152,17 @@ const flattenedData = scoringResultList.map(student => { const worksheet = XLSX.utils.json_to_sheet(flattenedData); const workbook = XLSX.utils.book_new(); +// 열 너비 계산 +const columnWidths = Object.keys(flattenedData[0]).map(key => { + const maxLength = Math.max( + key.length, // 열 제목의 길이 + ...flattenedData.map(row => (row[key] ? row[key].toString().length : 0)) // 각 셀의 데이터 길이 + ); + return { wch: maxLength + 1 }; // 여유 공간 추가 +}); + +// 열 너비 설정 +worksheet['!cols'] = columnWidths; // Add the worksheet to the workbook XLSX.utils.book_append_sheet(workbook, worksheet, '채점 결과'); @@ -171,8 +183,8 @@ function getTrackClipNode(xmlDoc, type, videoStartTime, openingStartTime) { const startTime = type === 'video' ? videoStartTime : openingStartTime; // xpath 구문을 통해 CRTrackClip 요소의 ClipIndex를 찾음 - const trackClipNode1 = xpath.select1(`//CRTrackList[@Name="텍스트"]/CRTrackClip[not(@ClipIndex='-1')][${subtitleOrder}]`, xmlDoc); - const trackClipNode2 = xpath.select1(`//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = ${startTime}]`, xmlDoc); + const trackClipNode1 = xpath.select1(`//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][${subtitleOrder}]`, xmlDoc); + const trackClipNode2 = xpath.select1(`//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = ${startTime}]`, xmlDoc); return trackClipNode = trackClipNode1 ?? trackClipNode2; } diff --git a/z.xbook b/z.xbook index 8ce3b01..71dd00b 100644 --- a/z.xbook +++ b/z.xbook @@ -1 +1 @@ -[{"kind":2,"language":"xpath","value":"//Layer/Name/@value = 'Germs'"},{"kind":2,"language":"xpath","value":"//Layer[Name[@value='Germs']]/Effects/Item[Name[@value='선명하게'] and EffectData[amount[@value=\"12\"]]]"},{"kind":2,"language":"xpath","value":"//Layer[Name[@value='Germs']]/Effects/Item/(Name/@value | EffectData/amount/@value)"},{"kind":2,"language":"xpath","value":"//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']"},{"kind":2,"language":"xpath","value":"//Layer//op_points[Item]/Item[last()]/X/@value"},{"kind":2,"language":"xpath","value":"//Layer//op_points[Item]/Item[1]/X/@value"},{"kind":2,"language":"xpath","value":"//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value"},{"kind":2,"language":"xpath","value":"//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value"},{"kind":2,"language":"xpath","value":"//Layer/BlendOp/@value | //Layer/Opacity/@value"},{"kind":2,"language":"xpath","value":"//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']"},{"kind":2,"language":"xpath","value":"//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']"},{"kind":2,"language":"xpath","value":"//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip)])]/@*[name()='ID' or name()='Range' or name()='Type']"},{"kind":2,"language":"xpath","value":"sum(//CRCUnitArr[1] and //CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][1]/preceding-sibling::CRTrackClip/@Length)"},{"kind":2,"language":"xpath","value":"sum(//CRCUnitArr[2] and //CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][2]/preceding-sibling::CRTrackClip/@Length)\r\n"}] \ No newline at end of file +[{"kind":2,"language":"xpath","value":"//Layer/Name/@value = 'Germs'"},{"kind":2,"language":"xpath","value":"//Layer[Name[@value='Germs']]/Effects/Item[Name[@value='선명하게'] and EffectData[amount[@value=\"12\"]]]"},{"kind":2,"language":"xpath","value":"//Layer[Name[@value='Germs']]/Effects/Item/(Name/@value | EffectData/amount/@value)"},{"kind":2,"language":"xpath","value":"//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']"},{"kind":2,"language":"xpath","value":"//Layer//op_points[Item]/Item[last()]/X/@value"},{"kind":2,"language":"xpath","value":"//Layer//op_points[Item]/Item[1]/X/@value"},{"kind":2,"language":"xpath","value":"//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value"},{"kind":2,"language":"xpath","value":"//Layer//Shape[contains(draw_type/@value, 'Interior')]/secondary_color/@value"},{"kind":2,"language":"xpath","value":"//Layer/BlendOp/@value | //Layer/Opacity/@value"},{"kind":2,"language":"xpath","value":"//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']"},{"kind":2,"language":"xpath","value":"//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']"},{"kind":2,"language":"xpath","value":"//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip)])]/@*[name()='ID' or name()='Range' or name()='Type']"},{"kind":2,"language":"xpath","value":"sum(//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][2]/preceding-sibling::CRTrackClip/@Length)"},{"kind":2,"language":"xpath","value":"//CRTrackList[@Name=\"텍스트\" or @Name=\"비디오2\"]/CRTrackClip[not(@ClipIndex='-1')][2]/@Length"}] \ No newline at end of file