ddoc commited on
Commit
d5a0767
·
1 Parent(s): 4d6745c

Upload 2 files

Browse files
Files changed (2) hide show
  1. colab-timer.js +122 -0
  2. colabTimer.txt +1 -0
colab-timer.js ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ let startTime;
2
+ let timeout;
3
+ let myHeaders = new Headers();
4
+ myHeaders.append("Bypass-Tunnel-Reminder", "Thanks for checking my code lol")
5
+ myHeaders.append("ngrok-skip-browser-warning", "Seriously tho, thank you so much!")
6
+
7
+ function updateTimer(el) {
8
+ const a = (i) => (i < 10 ? "0" + i : i);
9
+ const b = (x) => Math.floor(x);
10
+ let c = b(Date.now() / 1000) - startTime;
11
+ h = a(b(c / 3600));
12
+ m = a(b((c / 60) % 60));
13
+ s = a(b(c % 60));
14
+ // console.log(h,m,s)
15
+
16
+ // show different text betwen 4:58 and 5:15
17
+ if (c > 298 && c < 315) {
18
+ el.innerText =
19
+ "Usually there's captcha at this time, please check your colab (" +
20
+ h +
21
+ ":" +
22
+ m +
23
+ ":" +
24
+ s +
25
+ ")";
26
+ } else {
27
+ el.innerText = h + ":" + m + ":" + s;
28
+ }
29
+
30
+ //refresh timer every 30 seconds
31
+ if (c % 30 == 0) {
32
+ refreshTimer(el, true);
33
+ return;
34
+ }
35
+
36
+ timeout = setTimeout(() => updateTimer(el), 1000);
37
+ }
38
+
39
+ refreshTimer = (timerEl, notext = false) => {
40
+ if (timeout) {
41
+ clearTimeout(timeout);
42
+ timeout = null;
43
+ }
44
+ if (!notext) timerEl.innerText = "Connecting...";
45
+ fetch("file=static/colabTimer.txt", { cache: "no-store", headers: myHeaders })
46
+ .then((response) => {
47
+ if (response.status == 404) {
48
+ timerEl.innerText = "Error. Colab disconnected!";
49
+ return;
50
+ }
51
+ response.text().then((text) => {
52
+ startTime = parseInt(text);
53
+ if (isNaN(startTime))
54
+ timerEl.innerText = "Error. NaN stuff... Maybe network error";
55
+ else updateTimer(timerEl);
56
+ });
57
+ })
58
+ .catch((err) => {
59
+ console.log(err);
60
+ timerEl.innerText = "Error. "+err;
61
+ });
62
+ };
63
+
64
+ toggleNotification = (imgEl, audioEl, divEl) => {
65
+ audioEl.muted = !audioEl.muted
66
+ audioEl.currentTime = 0;
67
+ audioEl.play();
68
+ divEl.title = !audioEl.muted ? "Currently not-muted. Click to mute" : "Currently muted. Click to unmute";
69
+ divEl.style.borderColor =
70
+ !audioEl.muted
71
+ ? "#00ff00"
72
+ : "#ff0000";
73
+ imgEl.src = audioEl.muted ? "https://api.iconify.design/ion:md-notifications-off.svg?color=%23ff0000" : "https://api.iconify.design/ion:md-notifications.svg?color=%2300ff00";
74
+ }
75
+
76
+ onUiLoaded(function () {
77
+ const quickSettings = gradioApp().querySelector("#quicksettings");
78
+ const audioEl = gradioApp().querySelector("#audio_notification > audio")
79
+
80
+ if (gradioApp().querySelector("#nocrypt-timer") != null) return;
81
+
82
+ let mainDiv = document.createElement("div");
83
+ mainDiv.id = "nocrypt-timer";
84
+ mainDiv.className = "justify-start";
85
+ mainDiv.style = "gap: 10px; user-select: none; margin-block: -10px; transform-origin: left center; scale: 0.8; display:flex;";
86
+
87
+ let div2 = document.createElement("div");
88
+ div2.className = "gr-box";
89
+ div2.style =
90
+ "gap: 0.5rem; border-radius:10px; display:flex;align-items:center;border-width:1px; display:flex; cursor: pointer; padding-block: 3px; width: fit-content; padding-inline: 5px; border-color: orange; z-index: 999; background-color: transparent !important;";
91
+ div2.title = "Colab Timer Integration by NoCrypt. Click to refresh.";
92
+
93
+ let img = document.createElement("img");
94
+ img.src =
95
+ "https://ssl.gstatic.com/colaboratory-static/common/de56aa663d279b80074b6c21f69dc872/img/favicon.ico";
96
+ img.width = 24;
97
+
98
+ let timerEl = document.createElement("div");
99
+ timerEl.style = "font-family: monospace;color: orange;";
100
+ timerEl.innerText = "Connecting...";
101
+ div2.appendChild(img);
102
+ div2.appendChild(timerEl);
103
+ mainDiv.appendChild(div2);
104
+ div2.onclick = () => refreshTimer(timerEl);
105
+
106
+ let div3 = document.createElement("div");
107
+ div3.className = "gr-box";
108
+ div3.style =
109
+ "gap: 0.5rem; border-radius:10px; display:flex;align-items:center;border-width:1px; display:flex; cursor: pointer; padding-block: 3px; width: fit-content; padding-inline: 5px; border-color: lime; z-index: 999; background-color: transparent !important;";
110
+ div3.title = "Currently not-muted. Click to mute";
111
+
112
+ let img2 = document.createElement("img");
113
+ img2.src =
114
+ "https://api.iconify.design/ion:md-notifications.svg?color=%2300ff00";
115
+ img2.width = 20;
116
+ div3.appendChild(img2);
117
+ div3.onclick = () => toggleNotification(img2, audioEl, div3);
118
+ mainDiv.appendChild(div3);
119
+
120
+ quickSettings.parentNode.insertBefore(mainDiv, quickSettings.nextSibling);
121
+ refreshTimer(timerEl);
122
+ });
colabTimer.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ 1690279131