X.com to Twitter.com Embedded Tweet in Voz

Replace x.com links with embedded tweets

目前為 2024-07-25 提交的版本,檢視 最新版本

// ==UserScript==
// @name         X.com to Twitter.com Embedded Tweet in Voz
// @namespace    Embedded Tweet in Voz
// @version      1.6
// @description  Replace x.com links with embedded tweets
// @icon         https://www.google.com/s2/favicons?sz=64&domain=voz.vn
// @author       kylyte
// @match        https://voz.vn/t/*
// @match        https://voz.vn/conversations/*
// @match        https://voz.vn/whats-new/profile-posts/*
// @match        https://voz.vn/u/*
// @run-at       document-idle
// @license      GPL-3.0
// ==/UserScript==

(function() {
    'use strict';
    function replaceDivWithIframe() {
        const divs = document.querySelectorAll('div.bbCodeBlock--unfurl');
        divs.forEach(div => {
            const anchor = div.querySelector('a[href^="https://x.com"]');
            if (anchor) {
                const href = anchor.getAttribute('href');
                const postIdMatch = href.match(/status\/(\d+)/);
                if (postIdMatch && postIdMatch[1]) {
                    const postId = postIdMatch[1];
                    const iframe = document.createElement('iframe');
                    iframe.id = "twitter-widget-0";
                    iframe.scrolling = "true";
                    iframe.frameBorder = "0";
                    iframe.allowTransparency = "true";
                    iframe.allowFullscreen = "true";
                    iframe.style.position = "static";
                    iframe.style.visibility = "visible";
                    iframe.style.width = "550px";
                    iframe.style.height = "550px";
                    iframe.style.display = "block";
                    iframe.style.flexGrow = "1";
                    iframe.title = "X Post";
                    iframe.dataset.tweetId = postId;
                    iframe.src = `https://platform.twitter.com/embed/Tweet.html?id=${postId}&width=550px`;
                    div.parentNode.replaceChild(iframe, div);
                }
            }
        });
    }

    window.addEventListener('load', replaceDivWithIframe);
    const observer = new MutationObserver(replaceDivWithIframe);
    observer.observe(document.body, { childList: true, subtree: true });
})();