Greasy Fork is available in English.

Rllmuk De-embed Twitter

Replaces embedded Twitter posts with a link

// ==UserScript==
// @name        Rllmuk De-embed Twitter
// @description Replaces embedded Twitter posts with a link
// @namespace   https://github.com/insin/greasemonkey/
// @version     3
// @grant       none
// @match       https://www.rllmukforum.com/index.php?/topic/*
// @match       https://rllmukforum.com/index.php?/topic/*
// ==/UserScript==

let $style = document.createElement('style')
$style.appendChild(document.createTextNode(`
iframe[data-embed-src*="url=https://twitter.com"], iframe[src*="url=https://twitter.com"] {
  display: none !important;
}
`))
document.querySelector('head').appendChild($style)

function processIframes() {
  document.querySelectorAll(`iframe[data-embed-src*="url=https://twitter.com"], iframe[src*="url=https://twitter.com"]`).forEach($iframe => {
    let link = ($iframe.dataset.embedSrc || $iframe.src).match(/https:\/\/twitter\.com\/[^/]+(\/status(?:es)?\/\d+)?/)?.[0]
    if (link) {
      $iframe.insertAdjacentHTML('afterend', `<a href="${link}" target="_blank">${link}</a>`)
      $iframe.remove()
    } else {
      $iframe.style.setProperty('display', 'revert', 'important')
    }
  })
}

processIframes()

// Watch for posts being replaced when paging
new MutationObserver(mutations =>
  mutations.forEach(mutation => {
    if (mutation.oldValue == 'true') {
      processIframes()
    }
  })
).observe(document.querySelector('div.cTopic'), {
  attributes: true,
  attributeFilter: ['animating'],
  attributeOldValue: true,
})

// Watch for new posts being loaded into the current page
new MutationObserver(mutations => {
  mutations.forEach(mutation =>
    mutation.addedNodes.forEach(processIframes)
  )
}).observe(document.querySelector('#elPostFeed > form'), {
  childList: true,
})