-
Notifications
You must be signed in to change notification settings - Fork 0
/
content.js
78 lines (71 loc) · 2.66 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
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
function findStreamLinks() {
const $btnLinks = document.querySelectorAll("a.btn");
console.log($btnLinks);
for (const linkElement of $btnLinks) {
if (linkElement.href.includes("cmd=streamVideo") && linkElement.classList.contains("btn")) {
addDirectLinkEvent(linkElement);
}
}
}
function addDirectLinkEvent(e) {
const newLink = document.createElement('a');
newLink.classList.add('btn');
newLink.classList.add('btn-info');
newLink.innerHTML = `Direktlink`;
newLink.addEventListener('click', () => {
loadExternalPage(e, newLink);
});
e.parentElement.appendChild(newLink);
}
function loadExternalPage(e, newLink) {
newLink.innerHTML = "Loading";
let timeout = setTimeout(() => {
newLink.innerHTML = "Timeout!"
setTimeout(() => newLink.innerHTML = "Direktlink")
}, 10000);
fetch(e.href)
.then(function(response) {
// When the page is loaded convert it to text
return response.text()
})
.then(function(html) {
// Initialize the DOM parser
let parser = new DOMParser();
// Parse the text
let targetDocument = parser.parseFromString(html, "text/html");
clearTimeout(timeout);
openDirectDownloadLink(e, targetDocument, newLink);
})
.catch(function(err) {
console.log('Failed to fetch page: ', err);
});
}
function openDirectDownloadLink(originalLink, targetDocument, newLink) {
try {
let x = targetDocument.getElementsByTagName('script')
let script = x[x.length - 1]
let text = script.text.replaceAll("\n", "").replaceAll("\t", "").replaceAll("xoctPaellaPlayer.init(", "[").replaceAll(")", "]")
let link = JSON.parse(text)[0].streams[0].sources.mp4[0].src
navigator.clipboard.writeText(link).then(function () {
console.log('Async: Copying to clipboard was successful!');
newLink.innerHTML = "Copied!";
setTimeout(() => newLink.innerHTML = "Direktlink", 2500);
}, function (err) {
console.error('Async: Could not copy text: ', err);
newLink.innerHTML = "Error";
setTimeout(() => newLink.innerHTML = "Direktlink", 2500);
});
} catch (err) {
newLink.innerHTML = "Error";
setTimeout(() => newLink.innerHTML = "Direktlink", 2500);
}
}
const checkExist = setInterval(function() {
if (document.querySelector('#il_center_col form').childNodes) {
console.log("Exists!");
clearInterval(checkExist);
findStreamLinks();
} else {
console.log("does not exist");
}
}, 100);