NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Live Counting AHK // @namespace http://tampermonkey.net/ // @version 0.2.2 // @description try to take over the world! // @author VitaminB16 // @match *://*.reddit.com/live/* // @license MIT // @updateURL https://openuserjs.org/meta/vitaminb16/Live_Counting_AHK.meta.js // ==/UserScript== // does not require LCE. If LCE is running, make sure NOT to set `Submit Shortcut` to `Enter`. Set it either to `Off` or to `Ctrl+Enter` // 17/May/22 added submit-shortcut selector, fixed bug where non-counts would persist after sending // 18/Aug/22 added anti bar spam functionality – on by default // 02/Dec/22 changes of 18 Aug are now off by default $(document).ready(function () { // When document has loaded var make_LC_better = 0 // settings selector with submit-shortcut options var AHKSettings = '<h1 style="font-size:16px;"><a id="ahk_settings" href="https://openuserjs.org/scripts/vitaminb16/Live_Counting_AHK" target="_blank">Tampermonkey AHK (off)</a><br><p for="ahk_shortcut">Send shortcut: <select name="ahk_shortcut" id="ahk_shortcut"><option value="ahk_enter">Enter</option><option value="ahk_space">Space</option><option value="ahk_shift">Shift</option><option value="ahk_control">Control</option><option value="ahk_alt">Option (Alt)</option><option value="ahk_cmd">Cmd</option><option value="ahk_tab">Tab</option><option value="ahk_esc">Escape</option></select></p><p for="improve_lc">Improve LC: <label class="switch"><input class="improve_lc" type="checkbox" name="improve_lc"></label></p></h1>' setTimeout(function () { jQuery('#lceversion').before(AHKSettings) var saved_ahk_shortcut = sessionStorage.getItem('ahk_setting_shortcut') var ahk_selector = document.querySelector('#ahk_shortcut') var improve_LC_selector = document.querySelector('.improve_lc') if (saved_ahk_shortcut != null) {ahk_selector.value = saved_ahk_shortcut} var ahk_dict = {'ahk_enter':13, 'ahk_space':32, 'ahk_shift':16, 'ahk_control':17, 'ahk_alt':18, 'ahk_tab':9, 'ahk_esc':27, 'ahk_cmd':91} var ahk_shortcut = ahk_dict[ahk_selector.value] ahk_selector.onchange = function(){ sessionStorage.setItem('ahk_setting_shortcut', ahk_selector.value) ahk_shortcut = ahk_dict[ahk_selector.value] };/* improve_LC_selector.onchange = function(){ make_LC_better = 1 - make_LC_better }; improve_LC_selector.click() // comment this out if you don't want LC to be a better place. */ var sent = 0; var text = ""; var newText = sessionStorage.getItem('count'); var state = 0; var active = sessionStorage.getItem('active'); if (active == null) {active = 0} function improveCountingExperience(x) { x = x.replaceAll(/(agoncbg|goncbg|i cant fucking hp?|i cant fucking hp|i cant fucking|i cant hp?|i cant hp|chalupa exacta|chalupa latexacta|trifecta!!!!!|trifecta!!!!|trifecta!!!|trifecta!!|trifecta!|trifectas|trifecta|trejexacta|exacta!!!|exacta!!|exacta!|exacta|antibar|bar)/ig, '') return(x) } function makeLC_Better() { let p = document.querySelectorAll('p') let n_p = p.length let i = 0 for (i=0; i < n_p; i++) { p[i].innerHTML = improveCountingExperience(p[i].innerHTML) } } function removeStuff() { if (active == 1) { document.querySelectorAll('.liveupdate.pending-embed.stricken').forEach(x => x.remove()) } } // `cuteballgames` hide stricken counts. uncomment this line if you want to hide stricken counts `cuteballgames` // var intervalId = window.setInterval(function() {removeStuff()}, 400); // hide every mention of 'trifecta' and its various slippery variations var intervalId = window.setInterval(function() {if (make_LC_better == 1) {makeLC_Better()}}, 500); document.addEventListener("keypress", function (e) { // when textarea is empty, paste the stored count (e.g. 27,852,8) var textArea = document.querySelectorAll('.usertext-edit.md-container textarea')[0] if ((textArea.value == "" || textArea.value == "\n") && active == 1) { textArea.value = sessionStorage.getItem('count') } }); document.addEventListener("keydown", function (e) { // right arrow to send pincus {:} var textArea = document.querySelectorAll('.usertext-edit.md-container textarea')[0] if (e.keyCode == 39 && active == 1) { textArea.value = textArea.value + " {:}" } }); document.addEventListener("keypress", function (e) { if ([13, 32].includes(ahk_shortcut)) // if enter or space is the shortcut { // main part of the script var object = document.querySelectorAll('.save-button button')[0] var textArea = document.querySelectorAll('.usertext-edit.md-container textarea')[0] if ((e.keyCode == parseInt(ahk_shortcut)) && active == 1) { // when enter is pressed let t = (textArea.value) // take what is in the text area (e.g. 27,852,852) let oldText = sessionStorage.getItem('count'); // take the last stored count (e.g. 27,852,8) if (t == "") { textArea.value = oldText } // this is the equivalent of NoClear t = textArea.value newText = sessionStorage.getItem('count'); if ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9].toString().includes(t[0])) { // if the first character is an integer let itemToPaste = t.slice(0, 8) sessionStorage.setItem('count', itemToPaste); // save the first 9 characters (e.g. 27,852,8) object.click() // send update sent = 0 setTimeout(function () { textArea.value = itemToPaste; textArea.focus(); }, 50); // paste and refocus } else { object.click() // send update setTimeout(function () { textArea.value = itemToPaste; textArea.focus(); }, 50); // paste and refocus } } } }); // same, but with keydown insteadd of keypress document.addEventListener("keydown", function (e) { if (![13, 32].includes(ahk_shortcut)) // if anything else is the shortcut { // main part of the script var object = document.querySelectorAll('.save-button button')[0] var textArea = document.querySelectorAll('.usertext-edit.md-container textarea')[0] if ((e.keyCode == parseInt(ahk_shortcut)) && active == 1) { // when enter is pressed let t = (textArea.value) // take what is in the text area (e.g. 27,852,852) let oldText = sessionStorage.getItem('count'); // take the last stored count (e.g. 27,852,8) if (t == "") { textArea.value = oldText } // this is the equivalent of NoClear t = textArea.value newText = sessionStorage.getItem('count'); if ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9].toString().includes(t[0])) { // if the first character is an integer let itemToPaste = t.slice(0, 8) sessionStorage.setItem('count', itemToPaste); // save the first 9 characters (e.g. 27,852,8) object.click() // send update sent = 0 setTimeout(function () { textArea.value = itemToPaste; textArea.focus(); }, 50); // paste and refocus } else { object.click() // send update setTimeout(function () { textArea.value = itemToPaste; textArea.focus(); }, 50); // paste and refocus } } } }); // press `=` to activate; `-` to deactivate document.addEventListener("keypress", function (e) { var textArea = document.querySelectorAll('.usertext-edit.md-container textarea')[0] if (event.keyCode == 61) { active = 1 // setTimeout(function () {textArea.value = sessionStorage.getItem('count')}, 300) document.querySelector('#ahk_settings').textContent = "Tampermonkey AHK (on)" } else if (event.keyCode == 45) { active = 0 document.querySelector('#ahk_settings').textContent = "Tampermonkey AHK (off)" } }); var intervalId2 = window.setInterval(function () { // (this might be unnecessary, but here for extra safety) // if a count was just sent and text box is empty, paste the saved count var textArea = document.querySelectorAll('.usertext-edit.md-container textarea')[0] if ((textArea.value == "" || textArea.value == "\n") && active == 1) { // paste when the count was sent textArea.value = sessionStorage.getItem('count'); sent = 1 } }, 200) }, 2000) });