(bez virsraksta)

Apr. 5., 2025 | 11:26 am

austrumeiropā nekad nebija nekāda maršala plāna, bet to jau visi piemirsuši, uzskata austrumeiropiešus par nabadzīgiem lohiem. tik nestilīgi būt austrumeiropietim, ka no biksēm izlīdīsim ārā, lai tikai sevi sauktu par ziemeļeiropiešiem

Link | ir doma | Add to Memories


(bez virsraksta)

Maijs. 3., 2024 | 11:51 am

Link | ir doma | Add to Memories


(bez virsraksta)

Apr. 3., 2024 | 03:12 pm

http://klab.lv/allpics.bml?user=siddharta

Ko nozīmē "geho"? Ko šis lietotājs gribēja ar to teikt?

Link | ir doma | Add to Memories


LCF.user.js

Sep. 12., 2023 | 12:56 pm

// ==UserScript==
// @name LCF
// @namespace https://gist.github.com/mindbound
// @version 0.5.3
// @description Applies user-defined filters to the latest posts page
// @author mindbound
// @license WTFPL; http://www.wtfpl.net/
// @match http://klab.lv/stats/latest.bml
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB7ElEQVQ4jWNgGF7AwEBA4M/zwPj/rwKX/3sesPb9Te/GqlSZ8hQ/oeJEb8HMSFe+SAdjXhsGBgY2DM0lUcI5O6ep/bx3yOb/g2MO/x+edP7/6LTL/wenXP4fWW36/8Q6s/8n15r8Pzhf+/+sMskdGAb05Mjlv9pm8P/tdq3/r7eq/3+1Re3/y00qGPj5OpX/m1plNqDrZ55Zpbvx3xnP/5/2Gv//tMfo/6e9Rv/f7dT9/2qz6v+Xm1T+P12j8v/hYtX/Dxaq/d9dp7yDgYGBCa47P0Kh8NdJz//fD1tjtRUd35un9r8xXCIRpp9l73STF//Pev1/s02LKAMeLVP9v6JA4RYDAwMjAysrg+GHA87//5xyJUrzy00q/x8uUf1/ql31PwMDgzEDJyeD9c/jbv9/HLUn2oC7c9T+X+vX+C/KzxzCwMDAwHdkjvH3j3uMidL8fL3K/+sTNf7vq1f+z8DAYAQJxBCBvmcblIky4M4siO25HiK7kaORrT5JZPvzDbg1vtgA0Xy+S/1/qa/YSQYGBlH0tMAR6cK3an2b1O8n6xCuebEREmgHmpX/14WIv9WS4VjMwMAggi0rcLIwMLgwMzAk8HMzddjqc8z3teZZ6W7Is1RXln0KExNDPgsDgzsDA4M+AwMDO0wTAOkmi+x6U2zHAAAAAElFTkSuQmCC
// @connect https://raw.githubusercontent.com
// @connect https://cdn.jsdelivr.net
// @require https://raw.githubusercontent.com/mindbound/GM_config/master/gm_config.js
// @require https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest/dist/tf.min.js
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// @run-at document-end
// ==/UserScript==

"use strict";

let model;
let isTFBackendInitialized = false;

const MODEL_NAME = "LCF";
const MODEL_URL = "https://raw.githubusercontent.com/mindbound/LCF/master/model/model.json";
const MODEL_VERSION_URL = "https://raw.githubusercontent.com/mindbound/LCF/master/model/model_version.txt"
const MODEL_PROD = true;

const chars = "abcdefghijklmnopqrstuvwxyz0123456789_";
const charToInt = {};

for (let i = 0; i < chars.length; i++) {
charToInt[chars[i]] = i + 1;
}

const cfg = new GM_configStruct({
id: "LCFConfig",
title: `


LCF ${GM_info.script.version}


`,
events: {
open: function () {
makeDraggable(LCFConfig, LCFConfig_header);
LCFConfig_header.style.cursor = "move";
},
save: function () {
applyFilters();
}
},
fields: {
filterList: {
section: ["Filter List", "A list of user accounts to filter"],
type: "textarea",
default: "",
save: true
},
filterNew: {
label: "Filter all new users",
section: ["Options", "Additional filters and settings"],
type: "checkbox",
default: false,
save: true
},
filterImages: {
label: "Filter all images",
type: "checkbox",
default: false,
save: true
},
filterWithML: {
label: "ML-assisted filter",
type: "checkbox",
default: false,
save: true
}
},
frame: document.body.appendChild(document.createElement("div")),
css: `
#LCFConfig {
font-size: 13px;
background-color: #f3f6f4;
position: relative;
width: 350px;
margin: 0 auto;
}
#LCFConfig textarea {
font-family: monospace;
margin-left: auto;
margin-right: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
height: 325px;
resize: none;
font-size: 12px;
}
#LCFConfig_header p.lcftitle {
font-size: 20px;
font-weight: bold;
margin-bottom: 20px;
user-select: none;
padding: 0px;
}
#LCFConfig .config_var {
position: relative;
}
#LCFConfig .field_label {
width: 100%;
padding-right: 30px;
box-sizing: border-box;
user-select: none;
}
#LCFConfig .field_label label {
font-size: 14px;
}
#LCFConfig .section_header {
font-size: 18px;
font-weight: bold;
user-select: none;
}
#LCFConfig .section_desc {
font-size: 14px;
font-style: italic;
user-select: none;
}
#LCFConfig input[type="checkbox"] {
position: absolute;
right: 250px;
top: 50%;
transform: translateY(-70%);
}
#LCFConfig .saveclose_buttons {
font-size: 14px;
padding: 5px 10px;
}
#LCFConfig .reset {
user-select: none;
}
`
});

function makeDraggable(element, handle) {
if (!element) {
return;
}

let mdX = 0, mdY = 0, mdeX = 0, mdeY = 0;

const onMouseMove = (evt) => {
element.style.left = `${mdeX + evt.clientX - mdX}px`;
element.style.top = `${mdeY + evt.clientY - mdY}px`;
};

const onMouseUp = () => {
document.removeEventListener("mousemove", onMouseMove);
document.removeEventListener("mouseup", onMouseUp);
};

(handle ?? element).addEventListener("mousedown", function (evt) {
evt.preventDefault();
this.style.userSelect = "none";
mdX = evt.clientX;
mdY = evt.clientY;
mdeX = element.offsetLeft;
mdeY = element.offsetTop;

document.addEventListener("mousemove", onMouseMove);
document.addEventListener("mouseup", onMouseUp);
});
}

function usernameToSequence(username, maxLength) {
let sequence = [];

for (let char of username) {
if (charToInt[char]) {
sequence.push(charToInt[char]);
}
}

return sequence.concat(Array(maxLength - sequence.length).fill(0));
}

async function fetchRemoteModelVersion() {
try {
const response = await fetch(MODEL_VERSION_URL);

if (!response.ok) {
throw new Error(`Failed to fetch model version: ${response.statusText}`);
}

const version = await response.text();

return version.trim();
} catch (error) {
console.error(`Error fetching remote model version: ${error}`);

return null;
}
}

async function initializeTFBackend() {
if (typeof tf === "undefined") {
console.error("TensorFlow.js is not loaded");

return;
}

if (MODEL_PROD) {
await tf.enableProdMode();
} else {
await tf.enableDebugMode();
}

const isWebGLAvailable = await tf.setBackend("webgl");

if (isWebGLAvailable) {
await tf.ready();

return;
}

console.warn("Failed to set the WebGL backend for TensorFlow.js");

const isWASMAvailable = await tf.setBackend("wasm");

if (isWASMAvailable) {
await tf.ready();

return;
}

console.warn("Failed to set the WASM backend for TensorFlow.js");

const isCPUAvailable = await tf.setBackend("cpu");

if (isCPUAvailable) {
await tf.ready();

return;
}

console.warn("Failed to set the CPU backend for TensorFlow.js");
console.error("No suitable backend available");
}

function applyFilterList(fl) {
if (fl.length === 0) {
return;
}

const regexPatterns = fl.map(s => new RegExp(`\\b${s.replace("*", ".*")}\\b`));
const rows = Array.from(document.querySelectorAll("tr[valign='top']"));
const rowsToRemove = [];

for (let tr of rows) {
const href = tr?.querySelector("td:nth-child(2) span.ljuser a")?.getAttribute("href") ?? "";

for (let pattern of regexPatterns) {
if (pattern.test(href)) {
rowsToRemove.push(tr);
break;
}
}
}

for (let row of rowsToRemove) {
row.parentNode?.removeChild(row);
}
}

function applySpamFilter() {
let filterList = cfg.get("filterList");

if (typeof filterList !== "string") {
console.error("Unexpected filter list format");

return;
}

filterList = filterList.split("\n").map(e => e.trim()).filter(e => e.length > 0);
applyFilterList(filterList);
}

function applyNewUsersFilter() {
fetch("http://klab.lv/stats.bml")
.then((res) => {
if (!res.ok) {
throw new Error(`Bad network response: ${res.statusText}`);
}

return res.text();
})
.then((data) => {
try {
const dom = new DOMParser().parseFromString(data, "text/html");
const filterList = Array.from(
dom.querySelectorAll("ul:nth-of-type(5) a")
).map((a) => {
const match = /([^\/]+)\/$/.exec(a.getAttribute("href"));

if (!match) {
throw new Error("Unexpected URL format");
}

return match[1];
});

applyFilterList(filterList);
} catch (parseError) {
console.error(`Error while parsing or processing the data: ${parseError}`);
}
})
.catch((fetchError) => {
console.error(`Error in fetch operation: ${fetchError}`);
});
}

function applyImagesFilter() {
const images = document.querySelectorAll("img");

if (images.length === 0) {
return;
}

const imagesToHide = [];

images.forEach((img) => {
imagesToHide.push(img);
});

imagesToHide.forEach((img) => {
img.style.display = "none";
});
}

async function applyMLFilter() {
try {
if (!isTFBackendInitialized) {
await initializeTFBackend();
isTFBackendInitialized = true;
}

const localVersion = localStorage.getItem("modelVersion");
const remoteVersion = await fetchRemoteModelVersion();

if (!localStorage[`tensorflowjs_models/${MODEL_NAME}/model_topology`] || (remoteVersion && (!localVersion || remoteVersion > localVersion))) {
model = await tf.loadLayersModel(MODEL_URL);
await model.save(`localstorage://${MODEL_NAME}`);
localStorage.setItem("modelVersion", remoteVersion);
} else if (!model) {
model = await tf.loadLayersModel(`localstorage://${MODEL_NAME}`);
}

const response = await fetch("http://klab.lv/stats/latest.bml");

if (!response.ok) {
throw new Error(`Bad network response: ${response.statusText}`);
}

const data = await response.text();
const maxLength = 16;
const regex = /.*?(.*?)<\/b><\/a><\/span>/g;
const usernames = [];
let match;

while ((match = regex.exec(data)) !== null) {
usernames.push(match[1]);
}

const usernameSequences = usernames.map(username => usernameToSequence(username, maxLength));

tf.tidy(() => {
const inputTensor = tf.tensor(usernameSequences);
const outputTensor = model.predict(inputTensor);
outputTensor.data().then(predictions => {
const filterList = usernames.filter((username, idx) => predictions[idx] > 0.5);
applyFilterList(filterList);
});
});
} catch (error) {
console.error(`Error in ML filter: ${error}`);
}
}

function applyFilters() {
applySpamFilter();
cfg.get("filterNew") && applyNewUsersFilter();
cfg.get("filterImages") && applyImagesFilter();
cfg.get("filterWithML") && applyMLFilter();
}

function openConfig() {
cfg.open();
LCFConfig.style = `
height: 75%;
max-height: 620px;
top: calc(50% - 350px);
width: 400px;
left: calc(50% - 150px);
border: 1px solid #000000;
border-radius: 5px;
margin: 0px;
opacity: 1.0;
overflow: auto;
padding: 10px;
position: fixed;
z-index: 65536;
display: block;
right: auto;
bottom: auto;
`;
}

(function () {
GM_registerMenuCommand("Settings", openConfig);
applyFilters();
})();

Link | ir doma | Add to Memories


(bez virsraksta)

Sep. 12., 2023 | 12:54 pm

eu, kas notiek ar cibu? :(

Link | ir doma | Add to Memories


(bez virsraksta)

Nov. 18., 2022 | 07:24 pm

OK es izlasīju visu par to Mastodon, bet neko nesapratu. kā man viņu lietot

Link | ir doma {1} | Add to Memories


(bez virsraksta)

Aug. 21., 2022 | 01:51 am

eu, bet tas grieztais siers nav nemaz tik slikts!

Link | ir doma | Add to Memories


(bez virsraksta)

Aug. 15., 2022 | 10:55 pm

to jau vairāk nevar izturēt! nu viss, man arī vajag lielo cibas filtru. pastāstiet kāds man, stulbenim, kā to uzlikt. :) es lejuplādēju to failu, mēģināju atvērt ar firefox. tad skatījos latests, bet viss pa vecam. nu kā?

Link | ir doma {4} | Add to Memories


(bez virsraksta)

Dec. 7., 2021 | 01:12 am

// ==UserScript==
// @name LCF
// @namespace https://gist.github.com/mindbound
// @version 0.3.5
// @description Filters out idiots and spammers in the latest posts page
// @author mindbound
// @license WTFPL; http://www.wtfpl.net/
// @match http://klab.lv/stats/latest.bml
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB7ElEQVQ4jWNgGF7AwEBA4M/zwPj/rwKX/3sesPb9Te/GqlSZ8hQ/oeJEb8HMSFe+SAdjXhsGBgY2DM0lUcI5O6ep/bx3yOb/g2MO/x+edP7/6LTL/wenXP4fWW36/8Q6s/8n15r8Pzhf+/+sMskdGAb05Mjlv9pm8P/tdq3/r7eq/3+1Re3/y00qGPj5OpX/m1plNqDrZ55Zpbvx3xnP/5/2Gv//tMfo/6e9Rv/f7dT9/2qz6v+Xm1T+P12j8v/hYtX/Dxaq/d9dp7yDgYGBCa47P0Kh8NdJz//fD1tjtRUd35un9r8xXCIRpp9l73STF//Pev1/s02LKAMeLVP9v6JA4RYDAwMjAysrg+GHA87//5xyJUrzy00q/x8uUf1/ql31PwMDgzEDJyeD9c/jbv9/HLUn2oC7c9T+X+vX+C/KzxzCwMDAwHdkjvH3j3uMidL8fL3K/+sTNf7vq1f+z8DAYAQJxBCBvmcblIky4M4siO25HiK7kaORrT5JZPvzDbg1vtgA0Xy+S/1/qa/YSQYGBlH0tMAR6cK3an2b1O8n6xCuebEREmgHmpX/14WIv9WS4VjMwMAggi0rcLIwMLgwMzAk8HMzddjqc8z3teZZ6W7Is1RXln0KExNDPgsDgzsDA4M+AwMDO0wTAOkmi+x6U2zHAAAAAElFTkSuQmCC
// @require https://raw.githubusercontent.com/sizzlemctwizzle/GM_config/master/gm_config.js
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// @run-at document-end
// ==/UserScript==

"use strict";

const cfg = new GM_configStruct({
id: "LCFConfig",
title: `


LCF


`,
events: {
open: function () {
makeDraggable(LCFConfig, LCFConfig_header);
LCFConfig_header.style.cursor = "move";
},
save: function () {
apply();
}
},
fields: {
filterList: {
section: ["Filter List", "Create a list of user accounts to filter"],
type: "textarea",
default: "",
save: true
}
},
frame: document.body.appendChild(document.createElement("div")),
css: `
#LCFConfig {
background-color: #f3f6f4;
}
#LCFConfig textarea {
margin-left: auto;
margin-right: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
height: 325px;
resize: none;
font-size: 12px;
}
#LCFConfig_header p.lcftitle {
font-size: 20px;
font-weight: bold;
margin-bottom: 20px;
}
`
});

function makeDraggable(element, handle) {
if (!element) {
return;
}

let mdX = 0, mdY = 0, mdeX = 0, mdeY = 0;

(handle ?? element).onmousedown = function (event) {
this.style.userSelect = "none";
mdX = event.clientX;
mdY = event.clientY;
mdeX = element.offsetLeft;
mdeY = element.offsetTop;
onmouseup = () => {
onmousemove = null;
this.style.userSelect = "";
};
onmousemove = (evt) => {
element.style.left = `${mdeX + evt.clientX - mdX}px`;
element.style.top = `${mdeY + evt.clientY - mdY}px`;
};
};
}

function apply() {
const filterList = cfg.get("filterList").split("\n").filter((e) => e.length > 0);

if (filterList.length !== 0) {
for (let tr of document.querySelectorAll("tr[valign='top']")) {
if (filterList.some(
(s) => tr
.querySelectorAll("td")[1]
.querySelector("span.ljuser")
.getElementsByTagName("a")[0]
.getAttribute("href")
.includes(s)
)) {
tr.parentNode.removeChild(tr);
}
}
}
}

function openConfig() {
cfg.open();
LCFConfig.style = `
height: 75%;
max-height: 500px;
top: calc(50% - 200px);
width: 300px;
left: calc(50% - 150px);
border: 1px solid #000000;
border-radius: 5px;
margin: 0px;
opacity: 1.0;
overflow: auto;
padding: 10px;
position: fixed;
z-index: 65536;
display: block;
right: auto;
bottom: auto;
`;
}

(function () {
GM_registerMenuCommand("Settings", openConfig);
apply();
})();

Link | ir doma {6} | Add to Memories


(bez virsraksta)

Dec. 7., 2021 | 01:06 am

Nu labi, tagad tas tomēr būs jādara. Kā man uzlikt to Lielo Cibas Filtru. Es skatijos to mindbond pamācību, nokopēju to kodu, bet kur man viņš jāliek? Cibā lietotāja informācijā?

Link | ir doma {3} | Add to Memories


(bez virsraksta)

Dec. 11., 2020 | 04:44 pm

Pirmo reizi par tādu Kimu Kiduku dzirdu. Ar ko gan viņš tik slavens?

Link | ir doma {1} | Add to Memories


(bez virsraksta)

Jun. 14., 2007 | 02:37 pm

Es aizgāju uz to torrentspy.com. Bet kā tur tās filmas var skatīties?

Link | ir doma {2} | Add to Memories


(bez virsraksta)

Jun. 14., 2007 | 02:36 pm

Eu, a kā ielikt Cibā bildi?

Link | ir doma | Add to Memories


D

Jun. 2., 2007 | 02:55 pm

Es esmu mudaks.

Link | ir doma | Add to Memories