Convert Binary to Text on Facebook Posts

Convert binary text to readable text on Facebook posts.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

You will need to install an extension such as Tampermonkey to install this script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         Convert Binary to Text on Facebook Posts
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  Convert binary text to readable text on Facebook posts.
// @match        https://www.facebook.com/*/posts/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    // Check if the text content is binary
    function isBinaryString(str) {
        return /^[01\s]+$/.test(str);
    }

    // Convert binary string to text
    function binaryToText(binaryStr) {
        let text = '';
        binaryStr = binaryStr.replace(/\s+/g, ''); // Remove any whitespace
        for (let i = 0; i < binaryStr.length; i += 8) {
            let byte = binaryStr.slice(i, i + 8);
            text += String.fromCharCode(parseInt(byte, 2));
        }
        return text;
    }

    // Process and convert binary text nodes
    function processTextNodes(rootNode) {
        const walker = document.createTreeWalker(rootNode, NodeFilter.SHOW_TEXT, null, false);
        let node;
        while (node = walker.nextNode()) {
            let textContent = node.textContent.trim();
            if (textContent.length > 0 && isBinaryString(textContent)) {
                node.textContent = binaryToText(textContent);
            }
        }
    }

    // Function to process the whole page
    function processPage() {
        processTextNodes(document.body);
    }

    // Run the processPage function every second
    const intervalId = setInterval(() => {
        processPage();
    }, 1000);

    // Clear the interval when the page is unloaded
    window.addEventListener('beforeunload', () => {
        clearInterval(intervalId);
    });

    // Initial processing
    processPage();
})();