-
Notifications
You must be signed in to change notification settings - Fork 0
/
content.js
49 lines (46 loc) · 1.63 KB
/
content.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
/*
Script injected into content page
Author: @sergeyzavg
*/
// Some patterns to calculate lections time
var timePatterns = [
/\((\d+):(\d+)\)/, // (17:34)
/\((\d+) min\)/, // (17 min)
/\[(\d+) min\]/, // [17 min]
/\((\d+)m(\d+)s\)/, // (17m34s)
/\[(\d+)m(\d+)s\]/ // [17m34s]
];
function getCourseInfo() {
function parseTime(text){
var i = 0, acc = 0;
do {
match = (new RegExp(timePatterns[i++])).exec(text);
} while (timePatterns[i] && !match);
if (match != null) {
if (match[1]) acc += parseInt(match[1] * 60);
if (match[2]) acc += parseInt(match[2]);
}
return acc;
}
var courseInfo = {
name:$('.course-topbanner-name').text(),
courseUrl:$('.course-navbar-item.active:first a').attr("href"),
logoUrl:$('.course-navbar-container:first img').attr('src'),
instructor:$('.course-topbanner-instructor').text()
};
if (!courseInfo.name) return null;
courseInfo.id = courseInfo.courseUrl.replace(/\//g,'_');
courseInfo.viewed = courseInfo.unviewed = courseInfo.total = 0;
$('.viewed .lecture-link').each(function () {
courseInfo.viewed += parseTime($(this).text());
});
$('.unviewed .lecture-link').each(function () {
courseInfo.unviewed += parseTime($(this).text());
});
courseInfo.total = courseInfo.viewed + courseInfo.unviewed;
if (courseInfo.total == 0) return null;
return courseInfo;
}
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
if (request.req == 'getCourseInfo') sendResponse({reply:getCourseInfo()});
});