Last active
July 25, 2022 07:39
-
-
Save finwe/c84dd83cf13f16469a231d833d6df39f to your computer and use it in GitHub Desktop.
Okoun userscripts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Autorenew novyků | |
// @namespace http://tampermonkey.net/ | |
// @version 1.0 | |
// @author You | |
// @include *okoun.cz/* | |
// @icon https://www.google.com/s2/favicons?domain=okoun.cz | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
/** | |
* Autorenew novyků | |
*/ | |
const titleEl = document.querySelector('title'); | |
const title = titleEl.text; | |
let container = document.querySelector('.main > .yui-g > .yui-u'); | |
if (container.length === 0) { | |
container = document.querySelector(".main > .yui-gc > .yui-u"); | |
} | |
container.innerHTML = "<p title='Naposledy načteno' id='last_reload'></p>"; | |
const novydiv = document.createElement('div'); | |
novydiv.id = 'novydiv' | |
container.appendChild(novydiv); | |
loadNew(); | |
setInterval( function() { | |
loadNew(); | |
}, 60000); | |
function loadNew() | |
{ | |
fetch('https://www.okoun.cz/favourites.jsp?new=1&k=' + Math.random()) | |
.then(data => { | |
data.text().then(function (text) { | |
let items = new DOMParser().parseFromString(text, 'text/html').querySelectorAll('.item'); | |
let output = ''; | |
items.forEach(function (item) { | |
const datestr = item.querySelector("span.date").innerHTML; | |
const nazev = item.querySelector("a.name").innerHTML; | |
const href = item.querySelector("a.name").getAttribute('href'); | |
let novych = item.querySelector("b").innerHTML; | |
novych = novych.replace(/ (nových|nový|nové)/, ''); | |
output += "<div class='item'><a class='klub' title='" + datestr + "' href='" + href + "'>" + nazev + "</a> - " + novych + '</div>'; | |
}); | |
if (output.length > 0) { | |
output = '<h3>S novými</h3>' + output; | |
titleEl.text = '* ' + title; | |
} | |
novydiv.innerHTML = output; | |
}); | |
}).catch(error => { | |
console.log(error); | |
}); | |
var dt = new Date(); | |
document.getElementById('last_reload').innerHTML = dt.getHours() + "." + dt.getMinutes().toString().padStart(2, '0') + ":" + dt.getSeconds().toString().padStart(2, '0'); | |
} | |
})(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Formatting Panel | |
// @namespace http://molhanec.net/lopuch/?n=Main.Okoun | |
// @description Prida k textovemu poli tlacitka pro formatovani textu | |
// @include *okoun.cz/* | |
// @icon https://www.google.com/s2/favicons?domain=okoun.cz | |
// @version 1.0 | |
// @grant none | |
// ==/UserScript== | |
function addButtons(parent, textarea) | |
{ | |
parent.insertBefore(create_button('B', bold), textarea); | |
parent.insertBefore(create_button('I', italic), textarea); | |
parent.insertBefore(create_button('U', underline), textarea); | |
parent.insertBefore(create_button('S', strike), textarea); | |
parent.insertBefore(create_button('BR', br), textarea); | |
parent.insertBefore(document.createTextNode('\xA0\xA0\xA0'), textarea); | |
parent.insertBefore(create_button('URL', link), textarea); | |
parent.insertBefore(create_button('IMG', img), textarea); | |
parent.insertBefore(create_button('FONT', font), textarea); | |
parent.insertBefore(create_button('SPOIL', spoil), textarea); | |
parent.insertBefore(document.createTextNode('\xA0\xA0\xA0'), textarea); | |
parent.insertBefore(create_button('CODE', code), textarea); | |
parent.insertBefore(document.createElement('br'), textarea); | |
} | |
function link(event) | |
{ | |
try { | |
var textarea = event.target.parentNode.querySelector('textarea'); | |
var url = prompt('Zadejte adresu odkazu: ', ''); | |
if (url) { | |
if (textarea.selectionStart < textarea.selectionEnd) { | |
var pretext = textarea.value.substring(0, textarea.selectionStart); | |
var posttext = textarea.value.substring(textarea.selectionEnd, textarea.value.length); | |
var selection = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd); | |
textarea.value = pretext + '<a href="' + url + '">' + selection + '</a>' + posttext; | |
} else { | |
var str = prompt('Zadejte text odkazu: ', ''); | |
textarea.value = textarea.value + '<a href="' + url + '">' + str + '</a>'; | |
} | |
} | |
textarea.focus(); | |
event.preventDefault(); | |
} catch (exception) { | |
alert(exception.message); | |
} | |
} | |
function img(event) { | |
try { | |
var textarea = event.target.parentNode.querySelector('textarea'); | |
if (textarea.selectionStart < textarea.selectionEnd) { | |
var pretext = textarea.value.substring(0, textarea.selectionStart); | |
var posttext = textarea.value.substring(textarea.selectionEnd, textarea.value.length); | |
var selection = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd); | |
textarea.value = pretext + '<img src="' + selection + '" />' + posttext; | |
} else { | |
var str = prompt('Zadejte cestu k obrazku: ', ''); | |
if (str) textarea.value = textarea.value + '<img src="' + str + '" />'; | |
} | |
textarea.focus(); | |
event.preventDefault(); | |
} catch (exception) { | |
alert(exception.message); | |
} | |
} | |
function font(event) { | |
try { | |
var textarea = event.target.parentNode.querySelector('textarea'); | |
var color = prompt('Zadejte barvu textu: ', ''); | |
var size = prompt('Zadejte velikost fontu: ', ''); | |
if (color || size) { | |
var string_to_write; | |
if (textarea.selectionStart < textarea.selectionEnd) { | |
var pretext = textarea.value.substring(0, textarea.selectionStart); | |
var posttext = textarea.value.substring(textarea.selectionEnd, textarea.value.length); | |
var selection = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd); | |
string_to_write = '<font'; | |
if (color) { string_to_write = string_to_write +' color="' + color + '"'; } | |
if (size) { string_to_write = string_to_write +' size="' + size +'"'; } | |
string_to_write = string_to_write +'>' + selection + '</font>'; | |
textarea.value = pretext + string_to_write + posttext; | |
} else { | |
var str = prompt('Zadejte text: ', ''); | |
string_to_write = '<font'; | |
if (color) { string_to_write = string_to_write +' color="' + color + '"'; } | |
if (size) { string_to_write = string_to_write +' size="' + size +'"'; } | |
string_to_write = string_to_write +'>' + str + '</font>'; | |
textarea.value = textarea.value + string_to_write; | |
} | |
} | |
textarea.focus(); | |
event.preventDefault(); | |
} catch (exception) { | |
alert(exception.message); | |
} | |
} | |
function surroundText(event, opening, closing) { | |
try { | |
var textarea = event.target.parentNode.querySelector('textarea'); | |
var pretext = textarea.value.substring(0, textarea.selectionStart); | |
var posttext = textarea.value.substring(textarea.selectionEnd, textarea.value.length); | |
var selection = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd); | |
textarea.value = pretext + opening + selection + closing + posttext; | |
textarea.focus(); | |
event.preventDefault(); | |
} catch (exception) { | |
alert(exception.message); | |
} | |
} | |
function spoil(event) { | |
surroundText(event, '<table><tr><td bgcolor="#fff"><font color="#fff">', '</font></td></tr></table>'); | |
} | |
function bold(event) { | |
surroundText(event, '<b>', '</b>'); | |
} | |
function italic(event) { | |
surroundText(event, '<i>', '</i>'); | |
} | |
function underline(event) { | |
surroundText(event, '<u>', '</u>'); | |
} | |
function strike(event) { | |
surroundText(event, '<s>', '</s>'); | |
} | |
function br(event) { | |
try { | |
var textarea = event.target.parentNode.querySelector('textarea'); | |
const selectionStart = textarea.selectionStart; | |
const selectionEnd = textarea.selectionEnd; | |
const value = textarea.value; | |
const pretext = value.substring(0, selectionStart); | |
const posttext = value.substring(selectionEnd, value.length); | |
const selection = value.substring(selectionStart, selectionEnd); | |
textarea.value = pretext + selection + '<br>' + posttext; | |
textarea.focus(); | |
textarea.selectionStart = selectionEnd + 4; | |
textarea.selectionEnd = selectionEnd + 4; | |
event.preventDefault(); | |
} catch (exception) { | |
alert(exception.message); | |
} | |
} | |
function code(event) { | |
surroundText(event, '<div class="code">', '</div>'); | |
} | |
function mouseover(event) | |
{ | |
this.style.border = "1px solid #808080"; | |
this.style.backgroundColor = "#E0E0E0"; | |
event.preventDefault(); | |
} | |
function mouseout(event) | |
{ | |
this.style.border = "1px solid #A7A6AA"; | |
this.style.backgroundColor = "white"; | |
event.preventDefault(); | |
} | |
function create_button(text, listener) | |
{ | |
var button = document.createElement('button'); | |
var txt = document.createTextNode(text); | |
button.style.font = "10pt Arial"; | |
button.style.border = "1px solid #A7A6AA"; | |
button.style.backgroundColor = "white"; | |
button.style.cursor = "pointer"; | |
button.style.marginBottom = "2px"; | |
button.style.marginRight = "2px"; | |
switch (text) { | |
case 'B': button.style.fontWeight = "bold"; | |
break; | |
case 'I': button.style.fontStyle = "italic"; | |
break; | |
case 'U': button.style.textDecoration = "underline"; | |
break; | |
case 'S': button.style.textDecoration = "line-through"; | |
break; | |
} | |
button.insertBefore(txt, null); | |
button.addEventListener("mouseover", mouseover, false); | |
button.addEventListener("mouseout", mouseout, false); | |
button.addEventListener("click", listener, false); | |
return button; | |
} | |
try { | |
var textarea = document.querySelector("textarea"); | |
if (textarea) { | |
var parent = textarea.parentNode; | |
addButtons(parent, textarea); | |
} | |
(new MutationObserver(function (records, observer) { | |
records.forEach(function (record) { | |
for (var node of record.addedNodes) { | |
if (node.className == 'post content') { | |
node.querySelectorAll('textarea').forEach(function (textarea) { | |
var parent = textarea.parentNode; | |
addButtons(parent, textarea); | |
}); | |
} | |
} | |
}); | |
})).observe(document, { childList: true, subtree: true }); | |
} catch (exception) { | |
alert(exception.message); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Skrývání debilů | |
// @namespace http://tampermonkey.net/ | |
// @version 2.0 | |
// @description try to take over the world! | |
// @author Finwe | |
// @include *okoun.cz/* | |
// @icon https://www.google.com/s2/favicons?domain=okoun.cz | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
// Proměnná k definování seznamu debilů. | |
let toHide = { | |
soft: [ // tito debili se jen skryjí, ale jdou rozkliknutím zobrazit | |
'debil1', | |
'debil2', | |
], | |
hard: [ // tito debili zmizí zcela | |
'ultradebil1', | |
'ultradebil2', | |
] | |
}; | |
// URL seznamu ignorovaných. Musí obsahovat JSON ve formátu proměnné toHide výše, s klíči soft a hard | |
// Pokud je definovaná, proměnná nahoře se ignoruje | |
// let toHide = ''; | |
let css = ` | |
.hiddenart .user { font-size: 9px; } | |
.hiddenart a, .hiddenart .ico, .hiddenart .content, .hiddenart .actions, .hiddenart .descr, .hiddenart .title, .hiddenart .permalink { display: none; } | |
.hiddenart { padding-bottom: 0 !important; padding-top: 5px !important; border-bottom: 1px solid #CCCCCC !important; } | |
.hiddenart span.user { color: #c0c0c0; cursor: pointer; } | |
`; | |
let style = document.createElement('style'); | |
style.type = 'text/css'; | |
style.appendChild(document.createTextNode(css)); | |
document.querySelectorAll('head').forEach(function (el) { | |
el.append(style); | |
}); | |
function hideUsers(toHide) | |
{ | |
document.querySelectorAll('div.item').forEach(function (el) | |
{ | |
let username = el.querySelector('span.user'); | |
username = username && username.innerHTML; | |
let prev = el.querySelector('a.prev .anon'); | |
prev = prev && prev.innerHTML; | |
let hasUsername = username && toHide.soft.indexOf(username) !== -1; | |
let hasReply = prev && toHide.soft.indexOf(prev) !== -1; | |
if (hasUsername || hasReply) { | |
el.classList.add('hiddenart'); | |
} | |
let hasUsernameHard = username && toHide.hard.indexOf(username) !== -1; | |
let hasReplyHard = prev && toHide.hard.indexOf(prev) !== -1; | |
if (hasUsernameHard || hasReplyHard) { | |
el.style.display = 'none'; | |
} | |
}); | |
document.querySelectorAll('.hiddenart .user').forEach(function (el) { | |
el.addEventListener('mouseup', function() { | |
el.parentNode.parentNode.classList.remove('hiddenart'); | |
}); | |
}); | |
} | |
if ((typeof toHide === 'string' || toHide instanceof String) && toHide.startsWith('http')) { | |
const ts = Math.floor(Date.now() / 1000); | |
let timestamp = localStorage.getItem('tohide.timestamp'); | |
let contents = localStorage.getItem('tohide.content'); | |
if (contents && timestamp > ts - 3600) { | |
hideUsers(JSON.parse(contents)); | |
} else { | |
fetch(toHide).then(function (response) { | |
// @todo Manage invalid responses | |
return response.json(); | |
}).then(function (toHide) { | |
hideUsers(toHide); | |
window.localStorage.setItem('tohide.timestamp', ts); | |
window.localStorage.setItem('tohide.content', JSON.stringify(toHide)); | |
}); | |
} | |
} else { | |
hideUsers(toHide); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment