Bluesky embed

Embed bluesky posts on the blue websight

// ==UserScript==
// @name         Bluesky embed
// @namespace    http://tampermonkey.net/
// @version      2024-11-19
// @description  Embed bluesky posts on the blue websight
// @author       Milan
// @match        https://*.websight.blue/thread/*
// @license      MIT
// @icon         https://lore.capital/static/blueshi.png
// @connect      embed.bsky.app
// @grant        GM_xmlhttpRequest
// ==/UserScript==


const EMBED_URL = 'https://embed.bsky.app';

function scan(node) {
    if (node === void 0) { node = document; }
    const embeds = node.querySelectorAll('[data-bluesky-uri]');
    for (let i = 0; i < embeds.length; i++) {
        const id = String(Math.random()).slice(2);
        const embed = embeds[i];
        const aturi = embed.getAttribute('data-bluesky-uri');
        if (!aturi) {
            continue;
        }
        const ref_url = location.origin + location.pathname;
        const searchParams = new URLSearchParams();
        searchParams.set('id', id);
        if (ref_url.startsWith('http')) {
            searchParams.set('ref_url', encodeURIComponent(ref_url));
        }
        const iframe = document.createElement('iframe');
        iframe.setAttribute('data-bluesky-id', id);
        iframe.src = "".concat(EMBED_URL, "/embed/").concat(aturi.slice('at://'.length), "?").concat(searchParams.toString());
        iframe.width = '100%';
        iframe.style.border = 'none';
        iframe.style.display = 'block';
        iframe.style.flexGrow = '1';
        iframe.frameBorder = '0';
        iframe.scrolling = 'no';
        const container = document.createElement('div');
        container.style.maxWidth = '600px';
        container.style.width = '100%';
        container.style.marginTop = '10px';
        container.style.marginBottom = '10px';
        container.style.display = 'flex';
        container.className = 'bluesky-embed';
        container.appendChild(iframe);
        embed.replaceWith(container);
    }
}

(function() {
    'use strict';

    window.bluesky = window.bluesky || {
        scan: scan,
    };

    window.addEventListener('message', function (event) {
        if (event.origin !== EMBED_URL) {
            return;
        }
        var id = event.data.id;
        if (!id) {
            return;
        }
        var embed = document.querySelector("[data-bluesky-id=\"".concat(id, "\"]"));
        if (!embed) {
            return;
        }
        var height = event.data.height;
        if (height) {
            embed.style.height = "".concat(height, "px");
        }
    });

    const node_list = document.querySelectorAll(".message a[href^='https:\/\/bsky']");
    Array.from(node_list).forEach(link => {
        const oembed_url = "https://embed.bsky.app/oembed?mode=dark&url=";
        GM_xmlhttpRequest({
            method: "GET",
            url: oembed_url + link.href,
            headers: {
                "Content-Type": "application/json"
            },
            onload: function(response) {
                const embed = JSON.parse(response.responseText).html;
                link.parentElement.innerHTML += embed;
                scan();
            }
        });
    });

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址