Skip to content

연세대학교 마일리지 수강 신청 결과 미리보기

Notifications You must be signed in to change notification settings

J3m3/yonsei-mileage-preview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yonsei-mileage-preview

Note

스크립트를 주입해 마일리지 수강 신청 결과를 미리 조회합니다.

  • 수강 신청 결과는 F12 단축키를 통해 열 수 있는 개발자 도구의 콘솔에서 확인할 수 있습니다.
  • URL 패턴이 https://underwood1.yonsei.ac.kr/*과 매칭될 때만 스크립트가 동작합니다.

Sample Image

sample

Installation

Direct Injection

  1. 브라우저 콘솔에 injected.js 파일의 내용을 붙여넣고 실행합니다.

Via Chrome Extension

  1. 본 레포지토리를 git clone하거나, 다운로드 후 압축을 풀어줍니다. 압축 해제 후 디렉토리 구조는 아래와 같습니다.
yonsei-mileage-preview
├── README.md
├── images
│   └── sample.png
├── inject.js
├── injected.js
└── manifest.json
  1. 크롬을 실행한 뒤 chrome://extensions/로 이동합니다.
  2. 오른쪽 상단의 개발자 모드를 켜 줍니다.
  3. 상단 툴바의 압축해제된 확장 프로그램을 로드합니다.를 클릭한 뒤, yonsei-mileage-preview 디렉토리를 선택합니다.
  4. 확장 프로그램을 활성화합니다. (URL 패턴이라는 제한이 걸려 있긴 하나, 마일리지 결과를 조회할 때만 사용할 것을 권합니다)

주입되는 스크립트 (injected.js)

(function () {
  const MILEAGE_RESOURCE = "findMileStdList";
  const COURESE_NAME_KEY = "subjtNm";
  const MILEAGE_RESULT_KEY = "mlgAtnlcTrgetYn";
  const MILEAGE_RANK_KEY = "mlgRank";
  const KEY_MAP = {
    [COURESE_NAME_KEY]: `강의명(${COURESE_NAME_KEY})`,
    [MILEAGE_RESULT_KEY]: `마일리지 신청 결과(${MILEAGE_RESULT_KEY})`,
    [MILEAGE_RANK_KEY]: `마일리지 순위(${MILEAGE_RANK_KEY})`,
  };
  let fetched = false;

  function processResponse(responseText) {
    const response = JSON.parse(responseText);
    const mileageResults = Object.values(response)[0];
    return mileageResults.map((result) =>
      Object.entries(result).reduce((acc, [key, val]) => ({
        ...acc,
        [KEY_MAP[key] ?? key]: val,
      }))
    );
  }

  const originalOpen = XMLHttpRequest.prototype.open;
  XMLHttpRequest.prototype.open = function (method, url, ...args) {
    this.addEventListener("load", function () {
      if (url.includes(MILEAGE_RESOURCE) && !fetched) {
        const mileageResults = processResponse(this.responseText);
        console.table(mileageResults, [
          KEY_MAP[COURESE_NAME_KEY],
          KEY_MAP[MILEAGE_RESULT_KEY],
          KEY_MAP[MILEAGE_RANK_KEY],
        ]);
        fetched = true;
      }
    });
    originalOpen.apply(this, [method, url, ...args]);
  };
})();

About

연세대학교 마일리지 수강 신청 결과 미리보기

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published