Browse Source

fix whitespace with some output.

Jason Schwarzenberger 4 months ago
parent
commit
38d1514dc3
5 changed files with 10 additions and 605 deletions
  1. 3 10
      README.md
  2. 0 590
      utils/contentScript.js
  3. 4 3
      utils/declutter.js
  4. 2 2
      utils/dom-node.js
  5. 1 0
      utils/sites.js

+ 3 - 10
README.md

@@ -1,21 +1,14 @@
 # Declutter
 
-Removes the clutter from various New Zealand news websites and creates a page for the article on telegra.ph.
+Removes the clutter from various news websites and creates a page for the article on telegra.ph.
 
 https://declutter.1j.nz
 
 ## Supported websites
 
-- Newshub
-- Newsroom
-- Noted
-- NZ Herald
-- Otago Daily Times
-- Radio NZ
-- Stuff
-- The Spinoff
+Supports practically any website using [Readability.js](https://github.com/mozilla/readability).
 
-Others: fallback provided using [Readability.js](https://github.com/mozilla/readability).
+Includes the ability to [bypass paywalls](https://github.com/iamadamdev/bypass-paywalls-chrome).
 
 ## License
 

+ 0 - 590
utils/contentScript.js

@@ -1,590 +0,0 @@
-if (!matchDomain(['seekingalpha.com', 'sfchronicle.com', 'cen.acs.org'])) {
-  window.localStorage.clear();
-}
-
-if (matchDomain('elmercurio.com')) {
-  if (window.location.href.toLowerCase().includes('/inversiones/')) {
-    document.addEventListener('DOMContentLoaded', () => {
-      const paywall = document.querySelector('#modal_limit_articulos');
-      const body = document.querySelector('body');
-      removeDOMElement(paywall);
-      if (body.hasAttribute('class')) { body.removeAttribute('class'); }
-    });
-  }
-} else if (matchDomain('estadao.com.br')) {
-  setTimeout(function () {
-    const paywall = document.querySelector('#paywall-wrapper-iframe-estadao');
-    const body = document.querySelector('html');
-
-    removeDOMElement(paywall);
-    body.removeAttribute('style');
-  }, 300); // Delay (in milliseconds)
-} else if (matchDomain('rep.repubblica.it')) {
-  if (window.location.href.includes('/pwa/')) {
-    setTimeout(function () {
-      window.location.href = window.location.href.replace('/pwa/', '/ws/detail/');
-    }, 400);
-  }
-  if (window.location.href.includes('/ws/detail/')) {
-    const paywall = document.querySelector('.paywall[subscriptions-section="content"]');
-    if (paywall) {
-      paywall.removeAttribute('subscriptions-section');
-      const preview = document.querySelector('div[subscriptions-section="content-not-granted"]');
-      if (preview) {
-        preview.remove();
-      }
-    }
-  }
-} else if (matchDomain('americanbanker.com')) {
-  const paywall = document.getElementsByClassName('embargo-content')[0];
-  if (paywall) { paywall.classList.remove('embargo-content'); }
-} else if (matchDomain('telegraaf.nl')) {
-  if (window.location.href.startsWith('https://www.telegraaf.nl/error?ref=/')) {
-    window.location.href = window.location.href.split('&')[0].replace('error?ref=/', '');
-  }
-  const articleWrapper = document.querySelector('.ArticlePageWrapper__uid');
-  const spotXBanner = document.querySelector('.ArticleBodyBlocks__inlineArticleSpotXBanner');
-  const paywall = document.querySelector('.PopupBackdrop__block');
-  removeDOMElement(spotXBanner, paywall);
-  const premium = document.querySelector('.PremiumLabelWithLine__body');
-  const articleId = articleWrapper ? articleWrapper.innerText : '123';
-  const articleBodyDone = document.querySelector('#articleBody' + articleId);
-  if (premium && !articleBodyDone) {
-    const articleBodyOld = document.querySelector('[id^=articleBody]');
-    removeDOMElement(articleBodyOld);
-    const json = document.querySelector('script[type="application/ld+json"][data-react-helmet="true"]');
-    if (json) {
-      const jsonText = JSON.parse(json.text).articleBody;
-      const articleBody = document.querySelector('section.TextArticlePage__bodyText');
-      if (articleBody) {
-        const divMain = document.createElement('div');
-        divMain.setAttribute('id', 'articleBody' + articleId);
-        const divElem = document.createElement('div');
-        divElem.setAttribute('data-element', 'articleBodyBlocks');
-        const textArray = jsonText.split('\n\n');
-        textArray.forEach(pText => {
-          const pDiv = document.createElement('p');
-          pDiv.setAttribute('class', 'ArticleBodyBlocks__paragraph ArticleBodyBlocks__paragraph--nieuws');
-          pDiv.innerText = pText;
-          divElem.appendChild(pDiv);
-        });
-        divMain.appendChild(divElem);
-        articleBody.appendChild(divMain);
-      }
-    }
-  }
-} else if (matchDomain(['ad.nl', 'ed.nl'])) {
-  const paywall = document.querySelector('.article__component.article__component--paywall-module-notification');
-  removeDOMElement(paywall);
-} else if (matchDomain('washingtonpost.com')) {
-  // Remove all elements with the id contains 'paywall'
-  document.querySelectorAll('div[data-qa="paywall"]').forEach(function (el) {
-    removeDOMElement(el);
-  });
-  const html = document.querySelector('html');
-  html.removeAttribute('style');
-  const body = document.querySelector('body');
-  body.removeAttribute('style');
-  if (window.location.href.includes('/gdpr-consent/')) {
-    const freeButton = document.querySelector('.gdpr-consent-container .continue-btn.button.free');
-    if (freeButton) { freeButton.click(); }
-
-    setTimeout(function () {
-      const gdprcheckbox = document.querySelector('.gdpr-consent-container .consent-page:not(.hide) #agree');
-      if (gdprcheckbox) {
-        gdprcheckbox.checked = true;
-        gdprcheckbox.dispatchEvent(new Event('change'));
-
-        document.querySelector('.gdpr-consent-container .consent-page:not(.hide) .continue-btn.button.accept-consent').click();
-      }
-    }, 300); // Delay (in milliseconds)
-  }
-} else if (matchDomain('wsj.com') && !matchDomain('cn.wsj.com')) {
-  if (window.location.href.includes('/articles/')) {
-    const closeButton = document.querySelector('div.close-btn[role="button"]');
-    if (closeButton) { closeButton.click(); }
-  }
-  document.addEventListener('DOMContentLoaded', () => {
-    const url = window.location.href;
-    const snippet = document.querySelector('.snippet-promotion');
-    const wsjPro = document.querySelector('meta[name="page.site"][content="wsjpro"]');
-    if (snippet || wsjPro) {
-      if (!window.location.hash) {
-        if (url.includes('?')) {
-          window.location.href = url.replace('?', '#refreshed?');
-        } else { window.location.href = url + '#refreshed'; }
-      } else { window.location.href = window.location.href.replace('wsj.com', 'wsj.com/amp').replace('#refreshed', ''); }
-    }
-  });
-} else if (matchDomain('sloanreview.mit.edu')) {
-  const readMore = document.querySelector('.btn-read-more');
-  if (readMore) {
-    readMore.click();
-  }
-} else if (matchDomain('mexiconewsdaily.com')) {
-  document.addEventListener('DOMContentLoaded', () => {
-    const sideNotification = document.querySelector('.pigeon-widget-prompt');
-    const subMessage = document.querySelector('.sub_message_container');
-    const popup = document.querySelector('.popupally-pro-outer-full-width-7-fluid_qemskqa');
-    const bgFocusRemoverId = document.getElementById('popup-box-pro-gfcr-7');
-
-    removeDOMElement(sideNotification, subMessage, popup, bgFocusRemoverId);
-  });
-} else if (matchDomain('the-american-interest.com')) {
-  const counter = document.getElementById('article-counter');
-  removeDOMElement(counter);
-} else if (matchDomain('nzherald.co.nz')) {
-  NZHerald();
-} else if (matchDomain('interest.co.nz')) {
-  const wrapper = document.getElementById('pp-ablock-banner-wrapper');
-  const overlay = document.querySelector('.black-overlay');
-  removeDOMElement(overlay, wrapper);
-} else if (matchDomain('stuff.co.nz')) {
-  const overlay = document.querySelector('.x0');
-  removeDOMElement(overlay);
-} else if (matchDomain('thenational.scot')) {
-  const overlay = document.querySelector('.template-container');
-  removeDOMElement(overlay);
-} else if (matchDomain('thestar.com')) {
-  setTimeout(function () {
-    const paywall = document.querySelector('.basic-paywall-new');
-    removeDOMElement(paywall);
-    const tbc = document.querySelectorAll('.text-block-container');
-    for (const el of tbc) {
-      el.removeAttribute('style');
-    }
-  }, 1000); // Delay (in milliseconds)
-} else if (matchDomain('afr.com')) {
-  document.addEventListener('DOMContentLoaded', () => {
-    const hiddenImage = document.querySelectorAll('img');
-    for (const image of hiddenImage) {
-      const src = image.src;
-      if ('src: ' + src.indexOf('.gif') !== -1) {
-        const dataSrc = image.getAttribute('data-src');
-        if (dataSrc) {
-          image.setAttribute('src', dataSrc);
-        }
-      }
-    }
-    const plista = document.querySelector('div[data-plista-placement="underArticle_Group"]');
-    removeDOMElement(plista);
-  });
-} else if (matchDomain(['parool.nl', 'trouw.nl', 'volkskrant.nl', 'demorgen.be', 'humo.be'])) {
-  document.addEventListener('DOMContentLoaded', () => {
-    const topBanner = document.querySelector('div[data-temptation-position="PAGE_TOP"]');
-    const paywall = document.querySelector('div[data-temptation-position="ARTICLE_BOTTOM"]');
-    const hiddenSection = document.querySelector('div[data-temptation-position="ARTICLE_INLINE"]');
-    const overlay = document.querySelector('div[data-temptation-position="PAGE_BOTTOM"]');
-    removeDOMElement(topBanner, paywall, hiddenSection, overlay);
-  });
-} else if (matchDomain('firstthings.com')) {
-  const paywall = document.getElementsByClassName('paywall')[0];
-  removeDOMElement(paywall);
-} else if (matchDomain('bloomberg.com')) {
-  document.addEventListener('DOMContentLoaded', () => {
-    const fence = document.querySelector('.fence-body');
-    if (fence) {
-      fence.classList.remove('fence-body');
-    }
-    const paywall = document.getElementById('paywall-banner');
-    removeDOMElement(paywall);
-  });
-} else if (matchDomain('bloombergquint.com')) {
-  const articlesLeftModal = document.getElementsByClassName('paywall-meter-module__story-paywall-container__1UgCE')[0];
-  const paywall = document.getElementById('paywallDmp');
-  removeDOMElement(articlesLeftModal, paywall);
-} else if (matchDomain('medium.com')) {
-  const bottomMessageText = 'Get one more story in your member preview when you sign up. It’s free.';
-  const DOMElementsToTextDiv = pageContains('div', bottomMessageText);
-  if (DOMElementsToTextDiv[2]) removeDOMElement(DOMElementsToTextDiv[2]);
-} else if (matchDomain('theglobeandmail.com')) {
-  document.addEventListener('DOMContentLoaded', () => {
-    const realArticle = document.querySelector('.js-c-article-body');
-    let decoyArticle = document.querySelector('.decoy-article');
-    if (realArticle && !decoyArticle) {
-      decoyArticle = document.createElement('div');
-      decoyArticle.classList.add('js-c-article-body');
-      decoyArticle.classList.add('decoy-article');
-      decoyArticle.hidden = true;
-      realArticle.parentElement.insertBefore(decoyArticle, realArticle);
-      for (var child = realArticle.firstChild; child !== null; child = child.nextSibling) {
-        if (child.style) {
-          child.style.display = 'block';
-        }
-      }
-    }
-    const regWall = document.querySelector('#regwall');
-    const lightBox = document.querySelector('.c-lightbox');
-    if (regWall && lightBox) {
-      regWall.hidden = true;
-      lightBox.hidden = true;
-    }
-    const subscribed = document.querySelector('html.story-subscribed');
-    if (subscribed && !window.location.href.includes('?ref=premium')) {
-      window.setTimeout(function () {
-        window.location.href = new URL(window.location.href).pathname + '?ref=premium';
-      }, 100);
-    }
-  });
-  const cCards = document.querySelectorAll('div.c-card');
-  for (const cCard of cCards) {
-    const aLink = cCard.querySelector('a');
-    const key = cCard.querySelector('span.c-indicator-icon--key');
-    if (key && aLink && !aLink.href.includes('?ref=premium')) {
-      aLink.href = aLink.href + '?ref=premium';
-    }
-  }
-} else if (matchDomain(['examiner.com.au', 'thecourier.com.au', 'theadvocate.com.au'])) {
-  const subscribeTruncate = document.querySelector('.subscribe-truncate');
-  if (subscribeTruncate) { subscribeTruncate.classList.remove('subscribe-truncate'); }
-  const subscriberHider = document.querySelectorAll('.subscriber-hider');
-  for (const el of subscriberHider) {
-    el.classList.remove('subscriber-hider');
-  }
-} else if (matchDomain('canberratimes.com.au')) {
-  const paywall = document.querySelector('.subscribe-article.news-article-body.article__body');
-  paywall.classList.remove('subscribe-article');
-  const subscribe = document.getElementsByClassName('subscriber-container')[0];
-  removeDOMElement(subscribe);
-  const content = document.getElementsByClassName('subscriber-hider');
-  for (const el of content) {
-    el.classList.remove('subscriber-hider');
-  }
-} else if (matchDomain('asia.nikkei.com')) {
-  const cookieBanner = document.querySelector('.pw-widget');
-  removeDOMElement(cookieBanner);
-} else if (matchDomain('ledevoir.com')) {
-  const counter = document.querySelector('.full.hidden-print.popup-msg');
-  removeDOMElement(counter);
-} else if (matchDomain('ft.com')) {
-  const cookieBanner = document.querySelector('.cookie-banner');
-  removeDOMElement(cookieBanner);
-} else if (matchDomain('thehindu.com')) {
-  document.addEventListener('DOMContentLoaded', () => {
-    const counter = document.querySelector('#test');
-    const coBanner = document.querySelector('.co-banner');
-    const support = document.querySelector('div.support-jlm');
-    removeDOMElement(counter, coBanner, support);
-  });
-} else if (matchDomain('nytimes.com')) {
-  const previewButton = document.querySelector('.css-3s1ce0');
-  if (previewButton) { previewButton.click(); }
-  // Prevent bottom dock from appearing
-  new window.MutationObserver(function (mutations) {
-    for (const mutation of mutations) {
-      for (const node of mutation.addedNodes) {
-        if (node instanceof window.HTMLElement) {
-          if (node.matches('.css-3fbowa')) {
-            removeDOMElement(node);
-            this.disconnect();
-          }
-        }
-      }
-    }
-  }).observe(document, { subtree: true, childList: true });
-} else if (matchDomain('technologyreview.com')) {
-  // The class of banner is like 'overlayFooter__wrapper--3DhFn', which is hard to select exactly
-  const subscribeBanner = document.querySelector('[class*=overlayFooter__wrapper]');
-  removeDOMElement(subscribeBanner);
-  const body = document.querySelector('body');
-  removeClassesByPrefix(body, 'body__obscureContent');
-} else if (matchDomain('leparisien.fr')) {
-  window.removeEventListener('scroll', this.scrollListener);
-  const paywall = document.querySelector('.relative.piano-paywall.below_nav.sticky');
-  removeDOMElement(paywall);
-  setTimeout(function () {
-    const content = document.getElementsByClassName('content');
-    for (const el of content) {
-      el.removeAttribute('style');
-    }
-  }, 300); // Delay (in milliseconds)
-} else if (matchDomain('caixinglobal.com')) {
-  const payTips = document.querySelectorAll('.cons-pay-tip');
-  for (const payTip of payTips) {
-    payTip.removeAttribute('style');
-  }
-  const appContent = document.getElementById('appContent');
-  if (appContent) {
-    const pHidden = document.querySelectorAll('p:not([style="display:block;"]');
-    for (const el of pHidden) {
-      el.setAttribute('style', 'display:block;');
-    }
-  }
-} else if (matchDomain('bizjournals.com')) {
-  const sheetOverlay = document.querySelector('.sheet-overlay');
-  const chunkPaywall = document.querySelector('.chunk--paywall');
-  removeDOMElement(sheetOverlay, chunkPaywall);
-  const overlaid = document.querySelectorAll('.is-overlaid');
-  for (const el of overlaid) {
-    el.classList.remove('is-overlaid');
-  }
-  const bodyHidden = document.querySelector('.js-pre-chunks__story-body');
-  bodyHidden.removeAttribute('style');
-} else if (matchDomain('the-tls.co.uk')) {
-  const paywall = document.querySelector('.tls-subscriptions-banner__closed-skin');
-  removeDOMElement(paywall);
-} else if (matchDomain('cen.acs.org')) {
-  const paywall = document.querySelector('.meteredBar');
-  removeDOMElement(paywall);
-} else if (matchDomain('elpais.com')) {
-  setTimeout(function () {
-    const paywall = document.querySelector('.fc-ab-root');
-    const body = document.querySelector('.salida_articulo');
-
-    removeDOMElement(paywall);
-    body.removeAttribute('style');
-  }, 500); // Delay (in milliseconds)
-} else if (matchDomain('techinasia.com')) {
-  const paywall = document.querySelector('.paywall-content');
-  if (paywall) {
-    paywall.classList.remove('paywall-content');
-  }
-  const splashSubscribe = document.querySelector('.splash-subscribe');
-  const paywallHard = document.querySelector('.paywall-hard');
-  removeDOMElement(splashSubscribe, paywallHard);
-} else if (matchDomain('thewrap.com')) {
-  const embed = document.querySelector('.embed');
-  if (embed) {
-    // Display feature video
-    const container = document.querySelector('.featured-image-container');
-    removeDOMElement(container);
-    embed.classList.remove('d-none');
-  }
-} else if (matchDomain('hbr.org')) {
-  const banner = document.querySelector('.persistent-banner');
-  removeDOMElement(banner);
-} else if (matchDomain('spectator.co.uk')) {
-  const container = document.querySelector('.HardPayWallContainer-module__overlay');
-  window.setTimeout(function () {
-    if (container && window.location.href.includes('/www.spectator.co.uk/')) {
-      window.location.href = window.location.href + '/amp';
-    }
-  }, 500);
-} else if (matchDomain('barrons.com')) {
-  document.addEventListener('DOMContentLoaded', () => {
-    const bodyContinuous = document.querySelector('body.is-continuous');
-    const snippet = document.querySelector('meta[content="snippet"]');
-    if (bodyContinuous && snippet) {
-      window.location.href = window.location.href.replace('barrons.com', 'barrons.com/amp');
-    }
-  });
-  if (!window.location.href.includes('barrons.com/amp/')) {
-    let href = '';
-    const signinLinks = document.querySelectorAll('a.primary-button--link');
-    for (const signinLink of signinLinks) {
-      href = signinLink.href;
-      if (href.includes('target=')) {
-        href = href.split('target')[1].split('%3F')[0];
-        href = href.replace('=', '').replace('%3A', ':').replace(/%2F/g, '/');
-        signinLink.href = href;
-        signinLink.text = 'Click';
-      }
-    }
-  }
-} else if (matchDomain('nzz.ch')) {
-  const paywall = document.querySelector('.dynamic-regwall');
-  removeDOMElement(paywall);
-} else if (matchDomain('irishtimes.com')) {
-  document.addEventListener('DOMContentLoaded', () => {
-    const stubArticleMsg = document.querySelector('div.stub-article-msg');
-    const url = window.location.href;
-    if (url.includes('mode=sample') || stubArticleMsg) { window.location.href = new URL(url).pathname + '?mode=amp'; }
-  });
-} else if (matchDomain('thesaturdaypaper.com.au')) {
-  const paywall = document.querySelector('div.paywall-hard-always-show');
-  removeDOMElement(paywall);
-} else if (matchDomain('lesechos.fr') && window.location.href.match(/-\d{6,}/)) {
-  window.setTimeout(function () {
-    const url = window.location.href;
-    const html = document.documentElement.outerHTML;
-    const split1 = html.split('window.__PRELOADED_STATE__')[1];
-    const split2 = split1.split('</script>')[0].trim();
-    const state = split2.substr(1, split2.length - 2);
-    try {
-      const data = JSON.parse(state);
-      const article = data.article.data.stripes[0].mainContent[0].data.description;
-      const urlLoaded = data.article.data.path;
-      if (!url.includes(urlLoaded)) { document.location.reload(true); }
-      const paywallNode = document.querySelector('.post-paywall');
-      if (paywallNode) {
-        const contentNode = document.createElement('div');
-        const parser = new DOMParser();
-        const articleHtml = parser.parseFromString('<div id="bypass">' + article + '</div>', 'text/html');
-        const articlePar = articleHtml.querySelector('div#bypass');
-        if (articlePar) {
-          contentNode.appendChild(articlePar);
-          contentNode.className = paywallNode.className;
-          paywallNode.parentNode.insertBefore(contentNode, paywallNode);
-          removeDOMElement(paywallNode);
-          const paywallLastChildNode = document.querySelector('.post-paywall  > :last-child');
-          if (paywallLastChildNode) {
-            paywallLastChildNode.setAttribute('style', 'height: auto !important; overflow: hidden !important; max-height: none !important;');
-          }
-        }
-      }
-    } catch (err) {
-      console.warn(err);
-    }
-    const adBlocks = document.querySelectorAll('.jzxvkd-1');
-    for (const adBlock of adBlocks) {
-      adBlock.setAttribute('style', 'display:none');
-    }
-    const aboBanner = document.querySelector('[class^="pgxf3b"]');
-    removeDOMElement(aboBanner);
-  }, 500); // Delay (in milliseconds)
-} else if (matchDomain('startribune.com')) {
-  // remove active class from all elements
-  document.querySelectorAll('div.ReactModalPortal').forEach(function (el) {
-    removeDOMElement(el);
-  });
-  // Enable Scroll. Reveal Hiddlen Paragraph
-  document.getElementsByTagName('body')[0].removeAttribute('class');
-} else if (matchDomain('seattletimes.com')) {
-  window.setTimeout(function () {
-    // remove modal class from all elements
-    document.querySelectorAll('div.modal').forEach(function (el) {
-      removeDOMElement(el);
-    });
-    // Remove Blurred Style from all matching Divs
-    document.getElementById('container').removeAttribute('style');
-    document.querySelectorAll('div[style~="filter"]').forEach(function (el) {
-      el.removeAttribute('style');
-    });
-    document
-      .querySelectorAll('div[class~="NewsletterSignupSplash"]')
-      .forEach(function (el) {
-        el.removeAttribute('class');
-      });
-  }, 2000); // Delay (in milliseconds)
-} else if (matchDomain('theatlantic.com')) {
-  // Remove all nudge elements
-  document.querySelectorAll('div[class*="c-nudge"]').forEach(function (el) {
-    removeDOMElement(el);
-  });
-  // Remove all FancyBox ads
-  document.querySelectorAll('div[class*="fancybox"]').forEach(function (el) {
-    removeDOMElement(el);
-  });
-} else if (matchDomain('newyorker.com')) {
-  const paywall = document.querySelector('.paywall-bar');
-  removeDOMElement(paywall);
-} else if (matchDomain('vanityfair.com')) {
-  const paywall = document.querySelector('.paywall-bar');
-  removeDOMElement(paywall);
-} else if (matchDomain('delfi.ee')) {
-  // Remove 'adblocker-detected' notification overlay
-  document.body.classList.remove('adb-curtain');
-  const el = document.getElementById('ab--notification-header');
-  removeDOMElement(el);
-} else if (matchDomain(['postimees.ee', 'elu24.ee'])) {
-  setTimeout(function () {
-    // Remove 'adblocker-detected' footer notification
-    const adblockNotif = document.querySelector('.adblock-notif');
-    removeDOMElement(adblockNotif);
-  }, 800); // Delay (in milliseconds)
-}
-
-function matchDomain (domains) {
-  const hostname = window.location.hostname;
-  if (typeof domains === 'string') { domains = [domains]; }
-  return domains.some(domain => hostname === domain || hostname.endsWith('.' + domain));
-}
-
-function removeDOMElement (...elements) {
-  for (const element of elements) {
-    if (element) { element.remove(); }
-  }
-}
-
-function removeClassesByPrefix (el, prefix) {
-  for (const clazz of el.classList) {
-    if (clazz.startsWith(prefix)) {
-      el.classList.remove(clazz);
-    }
-  }
-}
-
-function pageContains (selector, text) {
-  const elements = document.querySelectorAll(selector);
-  return Array.prototype.filter.call(elements, function (element) {
-    return RegExp(text).test(element.textContent);
-  });
-}
-
-function NZHerald () {
-  const video = document.querySelector('.video-js');
-  if (video) {
-    const s = document.getElementsByTagName('script')[0];
-    if (s.src === '') {
-      const vId = video.getAttribute('data-account');
-      const vPlay = video.getAttribute('data-player');
-      const vScript = document.createElement('script');
-      vScript.type = 'text/javascript';
-      vScript.async = true;
-      vScript.src = 'https://players.brightcove.net/' + vId + '/' + vPlay + '_default/index.min.js';
-      s.parentNode.insertBefore(vScript, s);
-      const ticker = document.querySelector('.vcTicker');
-      if (ticker) {
-        ticker.style.display = 'none';
-      }
-      const msg = document.querySelector('.vcMsg');
-      if (msg) {
-        msg.style.display = 'none';
-      }
-      const overlay = document.querySelector('.vcOverlay');
-      if (overlay) {
-        overlay.style.display = 'none';
-      }
-    }
-  }
-
-  window.setTimeout(function () {
-    const articleBody = document.querySelector('.article__body');
-    if (articleBody) {
-      const childItems = articleBody.getElementsByTagName('*');
-      let classHidden = '';
-      for (const el of childItems) {
-        if (el.getAttribute('class') !== null && el.getAttribute('style') !== null && classHidden === '') {
-          classHidden = el.getAttribute('class');
-        }
-      }
-      if (classHidden !== '') {
-        for (const el of childItems) {
-          el.classList.remove(classHidden);
-          el.removeAttribute('style');
-        }
-      }
-    }
-    const overlay = document.querySelector('#premium-toaster');
-    if (overlay) {
-      overlay.style.display = 'none';
-    }
-    const advert = document.querySelector('.section-iframe.both');
-    if (advert) {
-      advert.style.display = 'none';
-    }
-    const els = document.querySelectorAll('.header__navigation-toggle-button');
-    for (let i = 0; i < els.length; i++) {
-      els[i].addEventListener('click', function (ev) {
-        document.querySelector('.container').classList.toggle('container--sidebar-is-active');
-        ev.stopImmediatePropagation();
-      });
-    }
-    const subEls = document.querySelectorAll('.subnavigation');
-    for (let i = 0; i < subEls.length; i++) {
-      subEls[i].addEventListener('mouseover', function () {
-        this.childNodes[1].classList.add('subnavigation__item-wrapper--is-active');
-      });
-      subEls[i].addEventListener('mouseleave', function () {
-        this.childNodes[1].classList.remove('subnavigation__item-wrapper--is-active');
-      });
-    }
-    const accEls = document.querySelectorAll('.accordion__button');
-    for (let i = 0; i < accEls.length; i++) {
-      accEls[i].addEventListener('click', function (ev) {
-        this.parentNode.classList.toggle('accordion--is-expanded');
-        ev.stopImmediatePropagation();
-      });
-    }
-  }, 1000);
-}

+ 4 - 3
utils/declutter.js

@@ -67,7 +67,7 @@ const buildReadableContent = async (tab, url) => {
 module.exports = async (url) => {
   const browser = await firefox.launch({
     args: [],
-    executablePath: process.env.DECLUTTER_CHROME_PATH || undefined,
+    executablePath: process.env.DECLUTTER_BROWSER_PATH || undefined,
     headless: false,
   });
 
@@ -91,16 +91,17 @@ module.exports = async (url) => {
     userAgent: userAgent,
     extraHTTPHeaders: extraHTTPHeaders,
   });
-  await tab.route("*", (route) => {
+  await tab.route(/.*/, (route) => {
     const routeUrl = route.request().url();
     const blockedDomains = Object.keys(blockedRegexes);
     const domain = matchUrlDomain(blockedDomains, routeUrl);
     if (domain && routeUrl.match(blockedRegexes[domain])) {
       return route.abort();
     }
+    return route.continue();
   });
   await tab.addInitScript({
-    path: "utils/contentScript.js",
+    path: "bypass-paywalls-chrome/src/js/contentScript.js",
   });
 
   try {

+ 2 - 2
utils/dom-node.js

@@ -1,6 +1,6 @@
 module.exports = function domToNode(domNode) {
   if (domNode.nodeType == domNode.TEXT_NODE) {
-    return domNode.data;
+    return /^\s+$/.test(domNode.data) ? " " : domNode.data;
   }
   if (domNode.nodeType != domNode.ELEMENT_NODE) {
     return false;
@@ -12,7 +12,7 @@ module.exports = function domToNode(domNode) {
     if (!nodeElement.attrs) {
       nodeElement.attrs = {};
     }
-    if ('href src data-srcset alt srcset'.includes(attr.name)) {
+    if ("href src data-srcset alt srcset".includes(attr.name)) {
       nodeElement.attrs[attr.name] = attr.value;
     }
   }

+ 1 - 0
utils/sites.js

@@ -33,6 +33,7 @@ module.exports.blockedRegexes = {
   "lesechos.fr": /.+\.tinypass\.com\/.+/,
   "washingtonpost.com": /.+\.washingtonpost\.com\/.+\/pwapi-proxy\.min\.js/,
   "thehindu.com": /ajax\.cloudflare\.com\/cdn-cgi\/scripts\/.+\/cloudflare-static\/rocket-loader\.min\.js/,
+  "technologyreview.com": /.+\.blueconic\.net\/.+/,
 };
 
 module.exports.useGoogleBotSites = [