-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfetch_courses.js
65 lines (53 loc) · 2.29 KB
/
fetch_courses.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
const fs = require('fs').promises;
const axios = require('axios');
const FormData = require('form-data');
async function main()
{
try
{
await fs.access('courses.json');
}
catch (error)
{
await fs.writeFile('courses.json', '{}');
}
const data = await fs.readFile('index.html', 'utf8');
var students = data.match(/const students = \s*\[([\s\S]*?)\]/)[1];
students = "[" + students + "]";
students = students.replace(/(\d)\"\,/g,"$1\"");
students = JSON.parse(students);
students = students.map(s=>s.student_id);
for(var i=0;i<students.length;i++)
{
const form_data = new FormData();
const username = students[i];
form_data.append('username', username);
var course_request = await axios.post("https://vu.sbu.ac.ir/class/course.list.php", form_data);
var courses = course_request.data.match(/<li class="list-group-item" >([\s\S]*?)<\/li>/g);
if(!courses)
{
courses = [];
}
else
{
courses = courses.map(c=>c.replace(/<a.*?>(.*?)<\/a>/g, "$1"));
courses = courses.map(c=>c.replace(/<\/?li.*?>/g, ""));
courses = courses.map(c=>c.replace(/\(.*?\)/g, ""));
courses = courses.map(c=>c.replace(/\n/g, ""));
courses = courses.map(c=>c.replace(/\r/g, ""));
courses = courses.map(c=>c.replace(/\t/g, ""));
courses = courses.map(c=>c.replace(/ي/g, "ی"));
courses = courses.map(c=>c.replace(/ك/g, "ک"));
var persian_numbers = ["۰","۱","۲","۳","۴","۵","۶","۷","۸","۹"];
var english_numbers = ["0","1","2","3","4","5","6","7","8","9"];
courses = courses.map(c=>c.split("").map(l=>english_numbers.includes(l)?persian_numbers[english_numbers.indexOf(l)]:l).join(""));
courses = courses.map(c=>c.trim());
}
var courses_json = await fs.readFile('courses.json', 'utf8');
courses_json = JSON.parse(courses_json);
courses_json[username] = courses;
await fs.writeFile('courses.json', JSON.stringify(courses_json, null, 0));
console.log(`(${i}) courses for student ${username} fetched and saved.`);
}
}
main();