twitter.com to embed

Allows limited browsing of Twitter while not being logged in. Replaces the actual pages with embedded representations of the same page.

Fra og med 01.07.2023. Se den nyeste version.

// ==UserScript==
// @name        twitter.com to embed
// @namespace   Violentmonkey Scripts
// @match       https://*.twitter.com/*
// @grant       none
// @version     1.1.1
// @license     GPLv3
// @author      -
// @run-at      document-start
// @description Allows limited browsing of Twitter while not being logged in. Replaces the actual pages with embedded representations of the same page.
// ==/UserScript==

function rewrite(url) {
    if (url.pathname === `/i/flow/login`) {
        const redirectParam = location.search.substring(1).split(`&`)
            .filter(param => param.startsWith(`redirect_after_login=`))
            .map(param => param.split(`=`)[1])[0];
        console.debug(`Redirect after login param:`, redirectParam);
        url = new URL(url.origin + decodeURIComponent(redirectParam));
    }

    const paths = url.pathname.split(`/`).slice(1);
    if (paths.length === 1) {
        return `https://syndication.twitter.com/srv/timeline-profile/screen-name/` + paths[0];
    } else if (paths.length == 3 && Number(paths[2])) {
        return `https://platform.twitter.com/embed/Tweet.html?id=` + paths[2];
    }
}
if (location.hostname === `twitter.com` && rewrite(location)) {
    location.replace(rewrite(location));
}


window.addEventListener(`load`, () => {
    if (location.href.startsWith(`https://syndication.twitter.com/srv/timeline-profile/screen-name/`)
        || location.href.startsWith(`https://platform.twitter.com/embed/Tweet.html`)) {
        const style = document.createElement(`style`);
        style.innerHTML = `#__next, #app { max-width: 800px; margin:auto; }`;
        document.head.append(style);
    }

    setTimeout(() => {

        for (const link of document.querySelectorAll(`a`)) {
            if (link.hostname.endsWith(`.twitter.com`)) continue;

            const newHref = rewrite(link);
            //console.debug(`rewrite ${link.href} to ${newHref}`)
            if (newHref) link.href = newHref;
        }
    }, 500);

});