2022 CMES 민방위 사이버 교육 스킵 스크립트
date
Jul 24, 2022
slug
cmes-auto-script-2022
status
Published
tags
etc
type
Post
comment
comment
summary
CMES 사이버교육센터의 교육 이수 스크립트입니다. https://www.cmes.or.kr에 최적화 된 스크립트로 타 민방위 사이버 교육센터 사이트에서는 작동하지 않습니다. (e.g. CDEC)
민방위 사이버교육센터의 교육 이수 스크립트입니다.
https://www.cmes.or.kr 사이트에 최적화 된 스크립트로 타 민방위 사이버 교육센터 사이트에서는 작동하지 않습니다.
![https://www.cmes.or.kr](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2a4761fe-6b47-4bb1-9532-114c29c63719%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2021-07-24_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_7.14.57.png?table=block&id=6761221c-7010-441c-b40b-f2917dab5b5e&cache=v2)
수강 화면(동영상 보는 화면)에서 크롬의 개발자 도구를 여신 뒤에 (
F12, ⌘+⌥+i
)
아래 스크립트를 붙여넣기 하시면 해당 강의가 이수 처리됩니다.마지막 평가 문제는 난이도가 어려운 편은 아니니 직접 푸시는 것을 권장드립니다~
(async () => {
let interval;
const accessToken = JSON.parse(JSON.parse(atob(localStorage.getItem("korn"))))
.token;
const viedoJs = document.querySelector(".video-js");
viedoJs.player.pause();
const videoDuration = viedoJs.player.duration() ?? 0;
const breadcrumb = videoDuration % 30;
const lastViewedTime = Math.floor(videoDuration - breadcrumb);
const headers = {
accept: "application/json, text/plain, */*",
"content-type": "application/json;charset=UTF-8",
"x-access-token": accessToken,
};
const getPlayInfo = async () => {
const data = {
seq: 1,
cyber_time: 0,
};
const response = await fetch("https://api.cmes.or.kr/cyber/getPlayInfo", {
headers,
method: "POST",
});
if (response.status !== 200) {
return data;
}
const result = await response.json();
return result;
};
let { cyber_seq: seq, cyber_time: currentTime = 0 } = await getPlayInfo();
const endVideo = async () => {
const response = await fetch("https://api.cmes.or.kr/cyber/endPlay", {
headers,
method: "POST",
body: `{\"seq\":${seq},\"mobile\":false}`,
});
if (response.status !== 200) {
return;
}
const result = await response.text();
if (String(result) !== "1") {
console.log("failed");
return;
}
alert("완료 처리\n다음 강의로 이동해주세요.");
document.location.href = "https://www.cmes.or.kr/sddm/cyberList";
};
const setPlayTime = async () => {
const response = await fetch("https://api.cmes.or.kr/cyber/setPlayTime", {
headers,
method: "POST",
body: `{\"time\":\"${currentTime}\",\"seq\":${seq}}`,
});
if (response.status !== 200) {
return;
}
const result = await response.text();
if (String(result) !== "1") {
console.log("failed");
clearInterval(interval);
return;
}
const progress = Math.floor((currentTime / lastViewedTime) * 100);
console.log(`seq: ${seq}, 진행률: ${Math.floor(progress)}%`);
currentTime += 30;
if (currentTime < lastViewedTime) {
return;
}
clearInterval(interval);
endVideo();
};
interval = setInterval(setPlayTime, 1000);
})();