Keeps alive Colab session (Adds a button for activation.) / Colab oturumunu aktif tutar.
// ==UserScript==
// @name Google Colab Stay Alive
// @namespace https://gist.github.com/mcakici/e418862ca6b448bb04f8aacf680478c0
// @version 1.1.1
// @description Keeps alive Colab session (Adds a button for activation.) / Colab oturumunu aktif tutar.
// @include /^https?:\/\/colab\.research\.google\.com\/.*$/
// @run-at document-end
// @grant none
// ==/UserScript==
(function() {
window.addEventListener('load', function() {
var isEnabled = false;
var colabKeepAlive = null;
//Keep Page Active
Object.defineProperty(document, 'visibilityState', {value: 'visible', writable: true});
Object.defineProperty(document, 'hidden', {value: false, writable: true});
document.dispatchEvent(new Event("visibilitychange"));
//Define MutationObserver to automatically reconnect
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
var observer = new MutationObserver(function(mutations) {
setTimeout(function () {
if(isEnabled === true && document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect") !== null){
console.log('> Colab Stay Alive Detected DOM changes.');
var ok = document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect");
var okTXT = ok.textContent
if(okTXT.indexOf("Reconnect") !== -1 || okTXT.indexOf("RECONNECT") !== -1 || okTXT.indexOf("Connect") !== -1 || okTXT.indexOf("connect") !== -1 || okTXT.indexOf("CONNECT") !== -1 || okTXT.indexOf("Yeniden bağlan") !== -1 || okTXT.indexOf("Bağlan") !== -1 || okTXT.indexOf("Yeniden Bağlan") !== -1) {
console.log('> Colab Stay Alive Reconnecting...');
ok.click();
console.log('> Colab Stay Alive Connected.');
}
if(typeof document.getElementsByTagName('colab-recaptcha-dialog')[0] !== 'undefined'){
document.getElementsByTagName('iron-overlay-backdrop')[0].click();
}
if(typeof document.getElementsByTagName('colab-dialog')[0] !== 'undefined' && typeof document.getElementsByTagName('colab-dialog')[0].textContent !== 'undefined'){
var dialogTXT = document.getElementsByTagName('colab-dialog')[0].textContent;
if(dialogTXT.indexOf("Çalışma zamanının bağlantısı kesildi") !== -1 || dialogTXT.indexOf("runtime has timed out") !== -1){
document.getElementsByTagName('iron-overlay-backdrop')[0].click();
}
}
}
}, 3000);
});
observer.observe(document.body, {childList: true});
function Colab_KeepAlive(){
if(document.querySelector("#check_KeepAliveColab").checked && colabKeepAlive == null){
colabKeepAlive = setInterval(function(){
if(document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.getElementById('connect') !== null){
document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.getElementById('connect').click();
console.log("> Colab Stay Alive Connect Button Clicked Successfully.");
}
}, 60000);
isEnabled = true;
console.log("> Colab Stay Alive Activated.");
}else{
clearInterval(colabKeepAlive);
colabKeepAlive = null;
isEnabled = false;
console.log("> Colab Stay Alive Disabled.");
}
document.getElementById('check_KeepAliveColab').blur();
}
console.log("> Colab Keep Alive Started.");
var mydiv = document.createElement('div');
mydiv.style = 'position:fixed;top:0;left:47%;background:rgba(0,0,0,0.65);color:#000;z-index:999;padding:8px 10px;';
mydiv.innerHTML = '<paper-checkbox id="check_KeepAliveColab" role="checkbox"><span style="color:#fff">Keep-alive</span></paper-checkbox>';
document.getElementsByTagName('body')[0].appendChild(mydiv);
document.getElementById("check_KeepAliveColab").addEventListener("click", Colab_KeepAlive);
});
})();