NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name tgchan autoupdate 1.2
// @namespace http://tampermonkey.net/
// @version 1.2
// @description tgchan autoupdate
// @author Rex
// @include http*://tgchan.org/kusaba/quest/res/*
// @include http*://tgchan.org/kusaba/questdis/res/*
// @grant none
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// @run-at document-start
// @license OSL-3.0
// ==/UserScript==
jQuery.noConflict();
jQuery(document).ready(function($) {
var deadline = null;
setInterval(function(){
if(!deadline || jQuery('.spanUpdating').html() == 'Updating...')
return;
var t = deadline - new Date();
jQuery('.spanUpdating').html((t - t % 1000) / 1000);
},1000);
function updateReplies(timeout) {
jQuery('.spanUpdating').html('Updating...');
if(!timeout)
timeout = 0;
jQuery.get(window.location.href, function( data ) {
var n = data.indexOf('<div style="display: none;" class="unicorn">');
var d = data.substring(n);
d = d.substring(0, d.indexOf('</form>'));
var pagedata = jQuery('<div>').append(d);
var newReplies = pagedata.find('table:has(.reply,.highlight)').toArray().filter(function(x) { return jQuery('#' + jQuery(x).find('.reply,.highlight').get(0).id).length == 0; });
if(newReplies.length > 0) {
jQuery('table:has(.reply,.highlight)').last().after(newReplies);
timeout = 0;
}
var updateUrl = window.location.href.split('#')[0] + '#' + pagedata.find('.reply,.highlight').last().get(0).id.replace('reply', '');
if(updateUrl && window.location.href.split('#').pop() != updateUrl.split('#').pop()) {
//window.location.href = updateUrl;
highlight(updateUrl.split('#').pop());
}
jQuery('.spanUpdating').html('');
if(jQuery('.chkAuto').is(':checked')) {
var newTimeout = timeout >= 30000 ? timeout : timeout + 5000;
deadline = new Date(new Date().getTime() + newTimeout);
setTimeout(function() {
updateReplies(newTimeout);
}, newTimeout);
}
});
}
var navbar = jQuery('.navbar');
navbar.append(' [');
navbar.append(jQuery('<a class="aUpdate" href="#">Update</a>'));
jQuery('.aUpdate').click(function() { event.preventDefault(); updateReplies(); });
navbar.append('] [');
navbar.append(jQuery('<label><input class="chkAuto" type="checkbox" title="Fetch new replies automatically">Auto</label>'));
jQuery('.chkAuto').mouseup(function() {
var chk = jQuery(this).is(':checked');
jQuery('.chkAuto').prop('checked', !chk);
updateReplies();
});
navbar.append('] ');
navbar.append(jQuery('<span class="spanUpdating"></span>'));
});