-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
98 lines (76 loc) · 3.09 KB
/
script.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
if (document.title.indexOf("Трекер") != -1) {
var ratings = ["imdbRating", "tomatoUserMeter"];
let table = document.getElementById("tor-tbl");
createColumn(table.querySelector("thead tr"));
Array.prototype.slice.call(table.querySelectorAll("#tor-tbl tbody tr")).forEach(e=>rowRating(e));
document.querySelector("#tor-tbl").tablesorter();
}
function createColumn(el) {
ratings.forEach(ratingName=> {
//imdb
let imdbTH = document.createElement("TH");
imdbTH.setAttribute("class", "{sorter: 'digit'} header");
let imdbB = document.createElement("b");
imdbB.setAttribute("class", "tbs-text");
let rating = document.createTextNode(ratingName);
imdbB.appendChild(rating);
imdbTH.appendChild(imdbB);
let imdbSpan = document.createElement("span");
imdbSpan.setAttribute("class", "tbs-icon");
let spanText = document.createTextNode(" ");
imdbSpan.appendChild(spanText);
imdbTH.appendChild(imdbSpan);
el.appendChild(imdbTH);
});
}
function rowRating(el) {
ratings.forEach(ratingName=> {
let imdb = document.createElement("td");
imdb.setAttribute("class", "row4 small " + ratingName);
let imdbRating = document.createTextNode("0");
imdb.appendChild(imdbRating);
let imdbTitleNode = el.querySelector("td.t-title div.t-title a.tLink");
if (imdbTitleNode) {
let title = imdbTitleNode.text;
let obj = {};
if (isSeries(title)) {
let enTitle = title.substr(title.indexOf("/") + 1);
obj.enTitle = enTitle.substr(0, enTitle.indexOf("/")).trim();
obj.type = "series"
} else {
obj.enTitle = title.substr(title.indexOf("/") + 1, title.indexOf("(") - title.indexOf("/") - 1).trim();
obj.type = "movie"
}
obj.year = title.substr(title.indexOf("[") + 1, 4);
queryForRating(el, obj);
}
el.appendChild(imdb);
});
}
function isSeries(title) {
return title.indexOf("Сезон") != -1;
}
function queryForRating(e, obj, depth = 0) {
let xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.omdbapi.com/?tomatoes=true&t=" + obj.enTitle + "&y=" + obj.year + "&type=" + obj.type, true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (JSON.parse(xhr.responseText).Response == "True") {
ratings.forEach(ratingName=> {
var rating = JSON.parse(xhr.responseText)[ratingName];
if (rating.match(/^\d[.]?\d$/)) {
e.querySelector("td." + ratingName).textContent = rating;
}
});
} else {
if (depth <= 2) {
if (obj.enTitle.indexOf(":") != -1) {
obj.enTitle = obj.enTitle.substr(0, obj.enTitle.indexOf(":"));
queryForRating(e, obj, depth + 1);
}
}
}
}
};
xhr.send();
}