diff --git a/README.md b/README.md index fca913d..6a94e9f 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ [Baltimore Sun](https://www.baltimoresun.com)\ [Barron's](https://www.barrons.com)\ [Bloomberg](https://www.bloomberg.com)\ +[Bloomberg Quint](https://www.bloombergquint.com)\ [Business Insider](https://www.businessinsider.com)\ [Caixin](https://www.caixinglobal.com)\ [Chemical & Engineering News](https://cen.acs.org)\ @@ -16,6 +17,7 @@ [Crain's Chicago Business](https://www.chicagobusiness.com)\ [Corriere Della Sera](https://www.corriere.it)\ [Daily Press](https://www.dailypress.com)\ +[DeMorgen](https://demorgen.be)\ [Denver Post](https://www.denverpost.com)\ [De Groene Amsterdammer](https://www.groene.nl)\ [De Tijd](https://www.tijd.be)\ @@ -53,6 +55,7 @@ [Parool](https://www.parool.nl)\ [Quartz](https://qz.com)\ [Quora](https://www.quora.com)\ +[Scientific American](https://scientificamerican.com)\ [Statista](https://www.statista.com)\ [SunSentinel](https://www.sun-sentinel.com)\ [Telegraaf](https://telegraaf.nl)\ @@ -66,6 +69,7 @@ [The Diplomat](https://www.thediplomat.com)\ [The Globe and Mail](https://www.theglobeandmail.com)\ [The Herald](https://www.theherald.com.au)\ +[The Hindu](https://www.thehindu.com)\ [The Japan Times](https://www.japantimes.co.jp)\ [TheMarker](https://www.themarker.com)\ [The Mercury News](https://www.mercurynews.com)\ diff --git a/background.js b/background.js index b378e7c..0f005ef 100644 --- a/background.js +++ b/background.js @@ -5,6 +5,7 @@ var defaultSites = { 'Baltimore Sun': 'baltimoresun.com', 'Barron\'s': 'barrons.com', 'Bloomberg': 'bloomberg.com', + 'Bloomberg Quint': 'bloombergquint.com', 'Business Insider': 'businessinsider.com', 'Caixin': 'caixinglobal.com', 'Chemical & Engineering News': 'cen.acs.org', @@ -13,6 +14,7 @@ var defaultSites = { 'Crain\'s Chicago Business': 'chicagobusiness.com', 'Corriere Della Sera': 'corriere.it', 'Daily Press': 'dailypress.com', + 'DeMorgen': 'demorgen.be', 'Denver Post': 'denverpost.com', 'De Tijd': 'tijd.be', 'De Groene Amsterdammer': 'groene.nl', @@ -31,7 +33,7 @@ var defaultSites = { 'Inc.com': 'inc.com', 'Investors Chronicle': 'investorschronicle.co.uk', 'La Repubblica': 'repubblica.it', - 'Le Monde': 'lemonde.fr', + 'Le Monde': 'lemonde.fr', 'Le Temps': 'letemps.ch', 'Los Angeles Times': 'latimes.com', 'Medium': 'medium.com', @@ -50,9 +52,10 @@ var defaultSites = { 'Parool': 'parool.nl', 'Quartz': 'qz.com', 'Quora': 'quora.com', + 'Scientific American': 'scientificamerican.com', 'Statista': 'statista.com', - 'Telegraaf': 'telegraaf.nl', 'SunSentinel': 'sun-sentinel.com', + 'Telegraaf': 'telegraaf.nl', 'The Advocate': 'theadvocate.com.au', 'The Age': 'theage.com.au', 'The Atlantic': 'theatlantic.com', @@ -63,6 +66,7 @@ var defaultSites = { 'The Diplomat': 'thediplomat.com', 'The Globe and Mail': 'theglobeandmail.com', 'The Herald': 'theherald.com.au', + 'The Hindu': 'thehindu.com', 'The Japan Times': 'japantimes.co.jp', 'TheMarker': 'themarker.com', 'The Mercury Tasmania': 'themercury.com.au', @@ -97,6 +101,9 @@ const allow_cookies = [ 'ad.nl', 'asia.nikkei.com', 'bostonglobe.com', +'cen.acs.org', +'chicagobusiness.com', +'demorgen.be', 'denverpost.com', 'economist.com', 'ed.nl', @@ -114,10 +121,14 @@ const allow_cookies = [ 'ocregister.com', 'parool.nl', 'qz.com', +'scientificamerican.com', 'spectator.co.uk', 'telegraaf.nl', 'theadvocate.com.au', +'theage.com.au', +'theatlantic.com', 'theaustralian.com.au', +'thediplomat.com', 'themercury.com.au', 'thestar.com', 'towardsdatascience.com', @@ -133,6 +144,9 @@ const remove_cookies = [ 'ad.nl', 'asia.nikkei.com', 'bostonglobe.com', +'cen.acs.org', +'chicagobusiness.com', +'demorgen.be', 'denverpost.com', 'economist.com', 'ed.nl', @@ -148,32 +162,42 @@ const remove_cookies = [ 'nytimes.com', 'ocregister.com', 'qz.com', +'scientificamerican.com', 'spectator.co.uk', 'telegraaf.nl', 'theadvocate.com.au', +'theage.com.au', +'theatlantic.com', +'thediplomat.com', 'thestar.com', 'towardsdatascience.com', 'vn.nl', 'washingtonpost.com', 'wsj.com', +'bloombergquint.com' ] // select specific cookie(s) to hold from remove_cookies domains const remove_cookies_select_hold = { - '.nrc.nl': ['nmt_closed_cookiebar'], - '.washingtonpost.com': ['wp_gdpr'], - '.wsj.com': ['wsjregion'] + 'nrc.nl': ['nmt_closed_cookiebar'], + 'washingtonpost.com': ['wp_gdpr'], + 'wsj.com': ['wsjregion'] } // select only specific cookie(s) to drop from remove_cookies domains const remove_cookies_select_drop = { - 'www.nrc.nl': ['counter'] + 'ad.nl': ['temptationTrackingId'], + 'demorgen.be': ['TID_ID'], + 'ed.nl': ['temptationTrackingId'], + 'nrc.nl': ['counter'] } // Override User-Agent with Googlebot const use_google_bot = [ 'barrons.com', +'lemonde.fr', 'nytimes.com', +'quora.com', 'telegraph.co.uk', 'theaustralian.com.au', 'themercury.com.au', @@ -389,12 +413,13 @@ browser.webRequest.onCompleted.addListener(function(details) { } var cookie_domain = cookies[i].domain; + var rc_domain = cookie_domain.replace(/^(\.?www\.|\.)/, ''); // hold specific cookie(s) from remove_cookies domains - if ((cookie_domain in remove_cookies_select_hold) && remove_cookies_select_hold[cookie_domain].includes(cookies[i].name)){ + if ((rc_domain in remove_cookies_select_hold) && remove_cookies_select_hold[rc_domain].includes(cookies[i].name)){ continue; // don't remove specific cookie } // drop only specific cookie(s) from remove_cookies domains - if ((cookie_domain in remove_cookies_select_drop) && !(remove_cookies_select_drop[cookie_domain].includes(cookies[i].name))){ + if ((rc_domain in remove_cookies_select_drop) && !(remove_cookies_select_drop[rc_domain].includes(cookies[i].name))){ continue; // only remove specific cookie } diff --git a/contentScript.js b/contentScript.js index bbbc6f8..fdc936a 100644 --- a/contentScript.js +++ b/contentScript.js @@ -1,153 +1,189 @@ -window.localStorage.clear(); -if (window.location.href.indexOf("bizjournals.com") !== -1) { - const hiddenStory = document.getElementsByClassName( - "js-pre-chunks__story-body" - ); - if (hiddenStory && hiddenStory.length > 0) { - hiddenStory[0].style.display = "block"; - } +window.localStorage.clear() +if (window.location.href.indexOf('bizjournals.com') !== -1) { + const hiddenStory = document.getElementsByClassName( + 'js-pre-chunks__story-body' + ) + if (hiddenStory && hiddenStory.length > 0) { + hiddenStory[0].style.display = 'block' + } - const payWallMessage = document.getElementsByClassName( - "chunk chunk--flex@lg chunk--paywall" - ); - if (payWallMessage && payWallMessage.length > 0) { - payWallMessage[0].style.display = "none"; - } -} else if (window.location.href.indexOf("businessinsider.com") !== -1) { - const paywall = document.getElementsByClassName( - "tp-modal" - ); - while (paywall.length > 0) { - paywall[0].parentNode.removeChild(paywall[0]); - } + const payWallMessage = document.getElementsByClassName( + 'chunk chunk--flex@lg chunk--paywall' + ) + if (payWallMessage && payWallMessage.length > 0) { + payWallMessage[0].style.display = 'none' + } +} else if (window.location.href.indexOf('businessinsider.com') !== -1) { + const paywall = document.getElementsByClassName( + 'tp-modal' + ) + while (paywall.length > 0) { + paywall[0].parentNode.removeChild(paywall[0]) + } } else if (location.hostname.endsWith('haaretz.co.il')) { - const html = document.getElementsByTagName('html'); - if (html && html.length > 0) { - html[0].style['overflow-y'] = 'auto'; - } - const msg = document.getElementById('article-wrapper'); - if (msg) { - msg.style['display'] = 'none'; - } -} else if (window.location.href.indexOf("nzherald.co.nz") !== -1) { - const paywall = document.getElementById( - "article-content" - ); - if (paywall) { - paywall.classList.remove('premium-content'); - paywall.classList.add('full-content'); - var paras = paywall.querySelectorAll("p, span, h2, div"); - var delClass = ""; - for (var i = 0; i < paras.length; i++) { - if (paras[i].nodeName == 'P' || paras[i].nodeName == 'SPAN') { - paras[i].classList.remove("ellipsis"); - if (delClass == "" && paras[i].className != "") { - delClass = paras[i].className; - } else { - if (delClass != "") { - paras[i].classList.remove(delClass); - } - } - } - paras[i].removeAttribute('style'); - } - } + const html = document.getElementsByTagName('html') + if (html && html.length > 0) { + html[0].style['overflow-y'] = 'auto' + } + const msg = document.getElementById('article-wrapper') + if (msg) { + msg.style.display = 'none' + } +} else if (window.location.href.indexOf('nzherald.co.nz') !== -1) { + const paywall = document.getElementById( + 'article-content' + ) + if (paywall) { + paywall.classList.remove('premium-content') + paywall.classList.add('full-content') + removeClassesByPrefix(paywall, 'QUnW') + const paras = paywall.querySelectorAll('p, span, h2, div') + for (let i = paras.length - 1; i > -1; i--) { + removeClassesByPrefix(paras[i], 'QUnW') + paras[i].classList.remove('ellipsis') + paras[i].removeAttribute('style') + } + } } else if (location.hostname.endsWith('rep.repubblica.it')) { - if (location.href.includes("/pwa/")) { - location.href = location.href.replace("/pwa/", "/ws/detail/"); - } + if (location.href.includes('/pwa/')) { + location.href = location.href.replace('/pwa/', '/ws/detail/') + } - if (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 (window.location.href.indexOf("wsj.com") !== -1) { - if (location.href.includes('/articles/')) { - document.addEventListener('DOMContentLoaded', () => { - const paywall = document.getElementById('cx-scrim'); - const candybar = document.getElementById('cx-candybar'); - removeDOMElement(paywall, candybar); - }); - /** - setTimeout(function () { - const close_button = document.querySelector('.close-btn'); - if (close_button) - close_button.click(); - }, 2000); - **/ - } -} else if (window.location.href.indexOf("washingtonpost.com") !== -1) { - if (location.href.includes('/gdpr-consent/')) { - document.querySelector('.gdpr-consent-container .continue-btn.button.free').click(); + if (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 (window.location.href.indexOf('wsj.com') !== -1) { + if (location.href.includes('/articles/')) { + document.addEventListener('DOMContentLoaded', () => { + const paywall = document.getElementById('cx-scrim') + const candybar = document.getElementById('cx-candybar') + removeDOMElement(paywall, candybar) + }) + /** + setTimeout(function () { + const close_button = document.querySelector('.close-btn'); + if (close_button) + close_button.click(); + }, 2000); + **/ + } +} else if (window.location.href.indexOf('washingtonpost.com') !== -1) { + if (location.href.includes('/gdpr-consent/')) { + document.querySelector('.gdpr-consent-container .continue-btn.button.free').click() - setTimeout(function () { + setTimeout(function () { + const gdprcheckbox = document.querySelector('.gdpr-consent-container .consent-page:not(.hide) #agree') + if (gdprcheckbox) { + gdprcheckbox.checked = true + gdprcheckbox.dispatchEvent(new Event('change')) - 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) - } + document.querySelector('.gdpr-consent-container .consent-page:not(.hide) .continue-btn.button.accept-consent').click() + } + }, 300) // Delay (in milliseconds) + } } -if (window.location.href.indexOf("bloomberg.com") !== -1) { - const paywall = document.getElementById('paywall-banner'); - removeDOMElement(paywall); +if (window.location.href.indexOf('medium.com') !== -1) { + 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]) +} + +if (window.location.href.indexOf('bloombergquint.com') !== -1) { + const articlesLeftModal = document.getElementsByClassName('paywall-meter-module__story-paywall-container__1UgCE')[0] + const paywall = document.getElementById('paywallDmp') + removeDOMElement(articlesLeftModal, paywall) +} + +if (window.location.href.indexOf('bloomberg.com') !== -1) { + document.addEventListener('DOMContentLoaded', () => { + const fence = document.querySelector('.fence-body') + if (fence) { + fence.classList.remove('fence-body') + } + const paywall = document.getElementById('paywall-banner') + removeDOMElement(paywall) + }) } if (window.location.href.indexOf('telegraaf.nl') !== -1) { - const paywall = document.getElementById('TEMPRORARY_METERING_ID'); - if (paywall) { - window.location.reload(1); - } + setTimeout(function () { + const paywall = document.getElementById('TEMPRORARY_METERING_ID') + if (paywall) { + window.location.reload(true) + } + }, 1000) // Delay (in milliseconds) } -if (window.location.href.indexOf('ed.nl') !== -1) { - const paywall = document.querySelector('.article__component.article__component--paywall-module-notification'); - if (paywall) { - paywall.remove(); - paywall = null; - } +if (window.location.href.indexOf('ad.nl') !== -1 || window.location.href.indexOf('ed.nl') !== -1) { + const paywall = document.querySelector('.article__component.article__component--paywall-module-notification') + removeDOMElement(paywall) } -if (window.location.href.indexOf("parool.nl") !== -1 || window.location.href.indexOf("trouw.nl") !== -1 || window.location.href.indexOf("volkskrant.nl") !== -1) { - document.addEventListener('DOMContentLoaded', () => { - const paywall = document.querySelector('div[data-temptation-position="ARTICLE_BOTTOM"]'); - const hidden_section = document.querySelector('div[data-temptation-position="ARTICLE_INLINE"]'); - removeDOMElement(paywall, hidden_section); - }); +if (window.location.href.indexOf('parool.nl') !== -1 || window.location.href.indexOf('trouw.nl') !== -1 || window.location.href.indexOf('volkskrant.nl') !== -1) { + document.addEventListener('DOMContentLoaded', () => { + const paywall = document.querySelector('div[data-temptation-position="ARTICLE_BOTTOM"]') + const hidden_section = document.querySelector('div[data-temptation-position="ARTICLE_INLINE"]') + removeDOMElement(paywall, hidden_section) + }) } if (window.location.href.indexOf('lemonde.fr') !== -1) { - document.addEventListener('DOMContentLoaded', () => { - const hidden_section = document.getElementsByClassName('article__content--restricted-media')[0]; - if (hidden_section) - hidden_section.classList.remove('article__content--restricted-media'); - const longform_article_restricted = document.getElementsByClassName('article__content--restricted')[0]; - if (longform_article_restricted) - longform_article_restricted.classList.remove('article__content--restricted'); - const longform_paywall = document.getElementsByClassName('paywall--longform')[0]; - if (longform_paywall) - longform_paywall.classList.remove('paywall--longform'); - const paywall = document.getElementById('js-paywall-content'); - const friend_paywall = document.getElementsByClassName('friend--paywall')[0]; - const cookie_banner = document.getElementById('cookie-banner'); - removeDOMElement(paywall, friend_paywall, cookie_banner); - }); + document.addEventListener('DOMContentLoaded', () => { + const hidden_section = document.getElementsByClassName('article__content--restricted-media')[0] + if (hidden_section) { hidden_section.classList.remove('article__content--restricted-media') } + const longform_article_restricted = document.getElementsByClassName('article__content--restricted')[0] + if (longform_article_restricted) { longform_article_restricted.classList.remove('article__content--restricted') } + const longform_paywall = document.getElementsByClassName('paywall--longform')[0] + if (longform_paywall) { longform_paywall.classList.remove('paywall--longform') } + const paywall = document.getElementById('js-paywall-content') + const friend_paywall = document.getElementsByClassName('friend--paywall')[0] + const cookie_banner = document.getElementById('cookie-banner') + removeDOMElement(paywall, friend_paywall, cookie_banner) + }) } -function removeDOMElement(...elements) { - for (let element of elements) { - if (element) element.remove(); - } +if (window.location.href.indexOf('nytimes.com') !== -1) { + const preview_button = document.querySelector('.css-3s1ce0') + if (preview_button) { preview_button.click() } } +if (window.location.href.indexOf('caixinglobal.com') !== -1) { + const appContent = document.getElementById('appContent') + if (appContent) { + const p_hidden = document.querySelectorAll('p:not([style="display:block;"]') + for (var i = 0; i < p_hidden.length; i++) { + p_hidden[i].setAttribute('style', 'display:block;') + } + } +} + +function removeDOMElement (...elements) { + for (const element of elements) { + if (element) element.remove() + } +} + +function removeClassesByPrefix (el, prefix) { + for (let i = el.classList.length - 1; i >= 0; i--) { + if (el.classList[i].startsWith(prefix)) { + el.classList.remove(el.classList[i]) + } + } +} + +function pageContains (selector, text) { + const elements = document.querySelectorAll(selector) + + return Array.prototype.filter.call(elements, function (element) { + return RegExp(text).test(element.textContent) + }) +} diff --git a/manifest.json b/manifest.json index 06703d5..a5c8f29 100644 --- a/manifest.json +++ b/manifest.json @@ -8,9 +8,12 @@ "*://*.bizjournals.com/*", "*://*.bloomberg.com/*", "*://*.businessinsider.com/*", + "*://*.caixinglobal.com/*", + "*://*.ad.nl/*", "*://*.ed.nl/*", "*://*.haaretz.co.il/*", "*://*.lemonde.fr/*", + "*://*.nytimes.com/*", "*://*.nzherald.co.nz/*", "*://*.parool.nl/*", "*://*.repubblica.it/*", @@ -139,7 +142,10 @@ "*://*.telegraaf.nl/*", "*://*.trouw.nl/*", "*://*.vn.nl/*", - "*://*.lemonde.fr/*" + "*://*.lemonde.fr/*", + "*://*.scientificamerican.com/*", + "*://*.thehindu.com/*", + "*://*.demorgen.be/*" ], "version": "1.6.0" } diff --git a/options.js b/options.js index 5fd4362..d5f7386 100644 --- a/options.js +++ b/options.js @@ -3,6 +3,7 @@ var defaultSites = { 'Baltimore Sun': 'baltimoresun.com', 'Barron\'s': 'barrons.com', 'Bloomberg': 'bloomberg.com', + 'Bloomberg Quint': 'bloombergquint.com', 'Business Insider': 'businessinsider.com', 'Caixin': 'caixinglobal.com', 'Chemical & Engineering News': 'cen.acs.org', @@ -11,6 +12,7 @@ var defaultSites = { 'Crain\'s Chicago Business': 'chicagobusiness.com', 'Corriere Della Sera': 'corriere.it', 'Daily Press': 'dailypress.com', + 'DeMorgen': 'demorgen.be', 'Denver Post': 'denverpost.com', 'De Groene Amsterdammer': 'groene.nl', 'De Tijd': 'tijd.be', @@ -48,6 +50,7 @@ var defaultSites = { 'Parool': 'parool.nl', 'Quartz': 'qz.com', 'Quora': 'quora.com', + 'Scientific American': 'scientificamerican.com', 'Statista': 'statista.com', 'SunSentinel': 'sun-sentinel.com', 'Telegraaf': 'telegraaf.nl', @@ -61,6 +64,7 @@ var defaultSites = { 'The Diplomat': 'thediplomat.com', 'The Globe and Mail (javascript disabled)': 'theglobeandmail.com', 'The Herald': 'theherald.com.au', + 'The Hindu': 'thehindu.com', 'The Japan Times': 'japantimes.co.jp', 'TheMarker': 'themarker.com', 'The Mercury News': 'mercurynews.com', @@ -131,7 +135,7 @@ function renderOptions() { inputEl.type = 'checkbox'; inputEl.dataset.key = key; inputEl.dataset.value = value; - inputEl.checked = key in sites; + inputEl.checked = (key in sites) || (key.replace(/\s\(.*\)/, '') in sites); labelEl.appendChild(inputEl); labelEl.appendChild(document.createTextNode(' '+key));