Rllmuk De-embed Twitter

Replaces embedded Twitter posts with a link

Stan na 13-07-2021. Zobacz najnowsza wersja.

// ==UserScript==
// @name        Rllmuk De-embed Twitter
// @description Replaces embedded Twitter posts with a link
// @namespace   https://github.com/insin/greasemonkey/
// @version     1
// @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\/\d+/)[0]
    $iframe.insertAdjacentHTML('afterend', `<a href="${link}" target="_blank">${link}</a>`)
    $iframe.remove()
  })
}

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,
})