Skip to content

Instantly share code, notes, and snippets.

@KevinNitroG
Last active November 12, 2024 06:17
Show Gist options
  • Save KevinNitroG/d232a7f4ac4fc5032713cdcd50580be0 to your computer and use it in GitHub Desktop.
Save KevinNitroG/d232a7f4ac4fc5032713cdcd50580be0 to your computer and use it in GitHub Desktop.
Lấy kết quả từ course moodle UIT

What's this

Lấy dữ liệu đáp án của các bài tập học trực tuyến trên Course Moodle UIT (ví dụ môn OS của thầy Duy). Cơ chế là log dữ liệu khi trang web load.


1. Truy cập file JS

  1. F12 vào tab Source
  2. File: h5player (embed.PHP) -> h5p-frame-*(about:blank) -> courses.uit.edu.vn -> pluginfile.php -> ... -> cachedatasets -> *.js

Hoặc có thể Ctrl + P tìm gõ cache để tới file JS

Note

Hiện tại file JS là e33de56a38f1f3e87d5ee4072f0638ef8b263440.js


2. Add logpoint

Note

Ví dụ: image

2.1. Ô nhập video

  1. Tìm Blanks.prototype.createQuestions
  2. Add logpoint sau dòng var question = self.params.questions[i];
  3. Thêm dòng logpoint
`ANSWER\n---\n${question}\n---\n`,
  question.match(/\*(.+?):/g).map((str) => str.slice(1, -1))

2.2. Select, radio question

  1. Tìm H5P.MultiChoice
  2. Add logpoint sau dòng var defaults = {...}
  3. Thêm dòng logpoint
'ANSWER\n---\n\n',
  defaults.question,
  '\n\n',
  defaults.answers.reduce((arr, ele) => {
    if (ele.correct) arr.push(ele.text);
    return arr;
  }, [])

2.3. Đáp án fill

  1. Tìm var createQuestionInstancesFromQuestions = function ...
  2. Add logpoint dòng return result sau cùng của function
  3. Thêm logpoint
'ANSWER\n---\n',result.map((question) => {
  if (question.textFieldHtml)
    return question.params.taskDescription + '\n\n' + question.textFieldHtml + '\n\n';
  else if (question.params?.text)
    return question.params.text + '\n\n' + question.params.questions.join('\n') + '\n\n';
  else return question;
})

3. Triển

  1. F12 mở tab console
  2. Reload trang khoá học
  3. Mục filter để lọc keyword, có thể kết hợp Ctrl + F
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment