Untitled

 avatar
unknown
javascript
a year ago
2.9 kB
7
Indexable
var socket = null;
const logged_messages = [];

function tryForImage(child) {
    try {
        const img = child.querySelector('div[class*="imageWrapper"]');
        if (img) {
            const a = img.querySelector('a');
            const href = a.href;
            if (a && href && href !== '') {
                if (!logged_messages.includes(href)) {
                    socket.send('download:' + href);
                    socket.send(href);
                    logged_messages.push(href);
                    return true;
                }
            } else {
                return false;
            }
        } else {
            return false;
        }
    } catch {
        return false;
    }
}

function tryForVideo(child) {
    try {
        const video = child.querySelector('video');
        if (video) {
            const src = video.src;
            if (src && src !== '') {
                if (!logged_messages.includes(src)) {
                    socket.send('download:' + src);
                    socket.send(src);
                    logged_messages.push(src);
                    return true;
                }
            } else {
                return false;
            }
        } else {
            return false;
        }
    } catch {
        return false;
    }
}

function main() {
    let message_holder = document.querySelector('ol[aria-label="Messages in "]');
    setInterval(() => {
        if (!socket) {
            return;
        }

        try {
            if (!message_holder.children) {
                message_holder = document.querySelector('ol[aria-label="Messages in "]');
            }
        } catch {
            message_holder = document.querySelector('ol[aria-label="Messages in "]');
        }

        for (let child of message_holder.children) {
            try {
                const text = child.textContent;
                if (child.tagName === "LI" && !logged_messages.includes(text) && text !== '') {
                    socket.send(text);
                    logged_messages.push(text);
                }
            } catch (err) {
                console.error(err);
            }
            if (!tryForImage(child)) {
                tryForVideo(child);
            }
        }
    }, 500)
}

function handleMessages() {
    socket.addEventListener("message", (event) => {
        if (event.data.startsWith("messages:")) {
            for (let msg of event.data.replace("messages:", '').split('\n')) {
                logged_messages.push(msg);
            }
            main()
        }
    })
}

function connect_socket() {
    socket = new WebSocket("ws://localhost:8001");

    socket.addEventListener("open", () => {
        handleMessages();
    })
    socket.addEventListener("close", () => {
        connect_socket();
    })
}
connect_socket();
Editor is loading...
Leave a Comment