2020-10-01 16:11:57 +02:00
//"use strict";
2020-09-08 16:38:18 +02:00
var ext _api = ( typeof browser === 'object' ) ? browser : chrome ;
2023-05-10 18:13:22 +02:00
var mobile = window . navigator . userAgent . toLowerCase ( ) . includes ( 'mobile' ) ;
2020-09-08 16:38:18 +02:00
var domain ;
2024-01-15 18:46:33 +01:00
var func _post ;
2023-07-23 09:14:39 +02:00
var csDone ;
var csDoneOnce ;
2023-05-08 20:05:06 +02:00
var dompurify _loaded = ( typeof DOMPurify === 'function' ) ;
2023-12-06 19:19:00 +01:00
var dompurify _options = { ADD _TAGS : [ 'amp-img' , 'iframe' , 'list' ] , ADD _ATTR : [ 'allow' , 'allowfullscreen' , 'frameborder' , 'itemprop' , 'layout' , 'target' ] } ;
2020-09-08 16:38:18 +02:00
2023-03-29 13:03:10 +02:00
var ar _grupo _clarin _domains = [ 'clarin.com' , 'lavoz.com.ar' , 'losandes.com.ar' ] ;
var be _groupe _ipm _domains = [ 'dhnet.be' , 'lalibre.be' , 'lavenir.net' ] ;
2024-03-26 19:22:30 +01:00
var be _mediahuis _domains = [ 'nieuwsblad.be' , 'standaard.be' ] ;
2023-09-02 09:09:17 +02:00
var be _roularta _domains = [ 'artsenkrant.com' , 'beleggersbelangen.nl' , 'femmesdaujourdhui.be' , 'flair.be' , 'knack.be' , 'kw.be' , 'levif.be' , 'libelle.be' ] ;
2022-07-31 08:31:05 +02:00
var ca _gcm _domains = [ 'lesoleil.com' ] . concat ( [ 'latribune.ca' , 'lavoixdelest.ca' , 'ledroit.com' , 'ledroitfranco.com' , 'lenouvelliste.ca' , 'lequotidien.com' ] ) ;
2023-07-20 22:15:51 +02:00
var ca _torstar _domains = [ 'niagarafallsreview.ca' , 'stcatharinesstandard.ca' , 'thepeterboroughexaminer.com' , 'therecord.com' , 'thespec.com' , 'thestar.com' , 'wellandtribune.ca' ] ;
2024-02-13 12:14:07 +01:00
var ch _media _domains = [ 'aargauerzeitung.ch' , 'luzernerzeitung.ch' , 'tagblatt.ch' ] ;
2024-03-06 22:02:54 +01:00
var de _funke _medien _domains = [ 'abendblatt.de' , 'braunschweiger-zeitung.de' , 'morgenpost.de' , 'nrz.de' , 'otz.de' , 'thueringer-allgemeine.de' , 'tlz.de' , 'waz.de' , 'wp.de' , 'wr.de' ] ;
2024-01-25 18:04:30 +01:00
var de _lv _domains = [ 'profi.de' , 'wochenblatt.com' ] ;
2022-03-31 18:10:47 +02:00
var de _madsack _domains = [ 'haz.de' , 'kn-online.de' , 'ln-online.de' , 'lvz.de' , 'maz-online.de' , 'neuepresse.de' , 'ostsee-zeitung.de' , 'rnd.de' ] ;
2023-11-11 10:30:18 +01:00
var de _mhs _custom _domains = [ 'cannstatter-zeitung.de' , 'esslinger-zeitung.de' , 'frankenpost.de' , 'insuedthueringen.de' , 'krzbb.de' , 'kurier.de' , 'np-coburg.de' ] ;
2024-03-08 17:57:17 +01:00
var de _motor _presse _domains = [ 'aerokurier.de' , 'auto-motor-und-sport.de' , 'flugrevue.de' , 'motorradonline.de' , 'womenshealth.de' ] ;
2023-02-05 14:25:33 +01:00
var de _vrm _domains = [ 'allgemeine-zeitung.de' , 'echo-online.de' , 'wiesbadener-kurier.de' ] ;
2023-07-21 10:41:57 +02:00
var de _vrm _custom _domains = [ 'buerstaedter-zeitung.de' , 'hochheimer-zeitung.de' , 'lampertheimer-zeitung.de' , 'lauterbacher-anzeiger.de' , 'main-spitze.de' , 'mittelhessen.de' , 'oberhessische-zeitung.de' , 'wormser-zeitung.de' ] ;
2024-02-05 13:41:26 +01:00
var es _epiberica _domains = [ 'diariodemallorca.es' , 'eldia.es' , 'elperiodico.com' , 'epe.es' , 'farodevigo.es' , 'informacion.es' , 'laprovincia.es' , 'levante-emv.com' , 'lne.es' , 'mallorcazeitung.es' , 'superdeporte.es' ] ;
var es _epiberica _custom _domains = [ 'diaridegirona.cat' , 'diariocordoba.com' , 'diariodeibiza.es' , 'elcorreogallego.es' , 'elperiodicodearagon.com' , 'elperiodicoextremadura.com' , 'elperiodicomediterraneo.com' , 'emporda.info' , 'laopinioncoruna.es' , 'laopiniondemalaga.es' , 'laopiniondemurcia.es' , 'laopiniondezamora.es' , 'regio7.cat' ] ;
2024-02-23 11:42:22 +01:00
var es _grupo _vocento _domains = [ 'abc.es' , 'canarias7.es' , 'diariosur.es' , 'diariovasco.com' , 'elcomercio.es' , 'elcorreo.com' , 'eldiariomontanes.es' , 'elnortedecastilla.es' , 'hoy.es' , 'ideal.es' , 'larioja.com' , 'lasprovincias.es' , 'laverdad.es' , 'lavozdigital.es' ] ;
2021-07-30 19:20:35 +02:00
var es _unidad _domains = [ 'elmundo.es' , 'expansion.com' , 'marca.com' ] ;
2024-01-05 08:29:59 +01:00
var fr _groupe _la _depeche _domains = [ 'centrepresseaveyron.fr' , 'journaldemillau.fr' , 'ladepeche.fr' , 'lindependant.fr' , 'midilibre.fr' , 'nrpyrenees.fr' , 'petitbleu.fr' , 'rugbyrama.fr' ] ;
2021-12-31 11:50:38 +01:00
var fr _groupe _nice _matin _domains = [ 'monacomatin.mc' , 'nicematin.com' , 'varmatin.com' ] ;
2021-12-12 13:21:28 +01:00
var it _ilmessaggero _domains = [ 'corriereadriatico.it' , 'ilgazzettino.it' , 'ilmattino.it' , 'ilmessaggero.it' , 'quotidianodipuglia.it' ] ;
2023-12-27 08:24:33 +01:00
var it _gedi _domains = [ 'huffingtonpost.it' , 'ilsecoloxix.it' , 'italian.tech' , 'lastampa.it' , 'lescienze.it' , 'moda.it' , 'repubblica.it' ] ;
2021-07-30 08:52:20 +02:00
var it _quotidiano _domains = [ 'ilgiorno.it' , 'ilrestodelcarlino.it' , 'iltelegrafolivorno.it' , 'lanazione.it' , 'quotidiano.net' ] ;
2022-04-28 17:52:26 +02:00
var medium _custom _domains = [ 'betterprogramming.pub' , 'towardsdatascience.com' ] ;
2022-11-09 17:58:21 +01:00
var nl _dpg _adr _domains = [ 'ad.nl' , 'bd.nl' , 'bndestem.nl' , 'destentor.nl' , 'ed.nl' , 'gelderlander.nl' , 'pzc.nl' , 'tubantia.nl' ] ;
2023-03-25 09:07:05 +01:00
var nl _dpg _media _domains = [ 'demorgen.be' , 'flair.nl' , 'humo.be' , 'libelle.nl' , 'margriet.nl' , 'parool.nl' , 'trouw.nl' , 'volkskrant.nl' ] ;
2023-10-01 19:01:16 +02:00
var no _nhst _media _domains = [ 'europower.no' , 'fiskeribladet.no' , 'intrafish.com' , 'intrafish.no' , 'rechargenews.com' , 'tradewindsnews.com' , 'upstreamonline.com' ] ;
2022-02-11 17:51:33 +01:00
var pe _grupo _elcomercio _domains = [ 'diariocorreo.pe' , 'elcomercio.pe' , 'gestion.pe' ] ;
2024-03-26 07:59:11 +01:00
var pl _ringier _domains = [ 'auto-swiat.pl' , 'businessinsider.com.pl' , 'forbes.pl' , 'komputerswiat.pl' , 'newsweek.pl' , 'onet.pl' ] ;
2024-02-26 13:02:53 +01:00
var sg _sph _media _domains = [ 'straitstimes.com' ] ;
2024-01-03 16:41:46 +01:00
var timesofindia _domains = [ 'epaper.indiatimes.com' , 'timesofindia.com' , 'timesofindia.indiatimes.com' ] ;
2023-09-21 20:55:33 +02:00
var uk _incisive _media _domains = [ 'businessgreen.com' , 'internationalinvestment.net' , 'investmentweek.co.uk' , 'professionaladviser.com' , 'professionalpensions.com' ] ;
2023-02-17 18:19:29 +01:00
var uk _nat _world _domains = [ 'scotsman.com' , 'yorkshirepost.co.uk' ] ;
2021-11-16 18:21:56 +01:00
var usa _adv _local _domains = [ 'al.com' , 'cleveland.com' , 'lehighvalleylive.com' , 'masslive.com' , 'mlive.com' , 'nj.com' , 'oregonlive.com' , 'pennlive.com' , 'silive.com' , 'syracuse.com' ] ;
2023-05-03 08:32:15 +02:00
var usa _arizent _custom _domains = [ 'accountingtoday.com' , 'benefitnews.com' , 'bondbuyer.com' , 'dig-in.com' , 'financial-planning.com' , 'nationalmortgagenews.com' ] ;
2024-02-19 08:41:18 +01:00
var usa _conde _nast _domains = [ 'architecturaldigest.com' , 'bonappetit.com' , 'cntraveler.com' , 'epicurious.com' , 'gq.com' , 'newyorker.com' , 'vanityfair.com' , 'vogue.co.uk' , 'vogue.com' , 'wired.com' ] ;
2024-04-03 18:15:08 +02:00
var usa _craincomm _domains = [ '360dx.com' , 'adage.com' , 'autonews.com' , 'chicagobusiness.com' , 'crainscleveland.com' , 'crainsdetroit.com' , 'crainsgrandrapids.com' , 'crainsnewyork.com' , 'european-rubber-journal.com' , 'genomeweb.com' , 'modernhealthcare.com' , 'pionline.com' , 'plasticsnews.com' , 'precisionmedicineonline.com' , 'rubbernews.com' , 'sustainableplastics.com' , 'tirebusiness.com' , 'utech-polyurethane.com' ] ;
2024-02-16 08:46:26 +01:00
var usa _gannett _domains = [ 'azcentral.com' , 'cincinnati.com' , 'commercialappeal.com' , 'courier-journal.com' , 'democratandchronicle.com' , 'desmoinesregister.com' , 'detroitnews.com' , 'dispatch.com' , 'freep.com' , 'indystar.com' , 'jacksonville.com' , 'jsonline.com' , 'knoxnews.com' , 'news-press.com' , 'northjersey.com' , 'oklahoman.com' , 'statesman.com' , 'tennessean.com' ] ;
2023-11-29 08:29:39 +01:00
var usa _hearst _comm _domains = [ 'ctpost.com' , 'expressnews.com' , 'houstonchronicle.com' , 'nhregister.com' , 'sfchronicle.com' , 'timesunion.com' ] ;
2023-08-10 07:28:11 +02:00
var usa _lee _ent _domains = [ 'buffalonews.com' , 'journalnow.com' , 'journalstar.com' , 'madison.com' , 'nwitimes.com' , 'omaha.com' , 'richmond.com' , 'stltoday.com' , 'tucson.com' , 'tulsaworld.com' ] ;
2024-01-26 13:25:09 +01:00
var usa _mcc _domains = [ 'bnd.com' , 'charlotteobserver.com' , 'elnuevoherald.com' , 'fresnobee.com' , 'kansas.com' , 'kansascity.com' , 'kentucky.com' , 'mcclatchydc.com' , 'miamiherald.com' , 'newsobserver.com' , 'sacbee.com' , 'star-telegram.com' , 'thestate.com' , 'tri-cityherald.com' ] ;
2024-01-12 07:46:22 +01:00
var usa _mng _domains = [ 'bostonherald.com' , 'denverpost.com' , 'eastbaytimes.com' , 'mercurynews.com' , 'ocregister.com' , 'pressenterprise.com' , 'twincities.com' ] ;
2023-12-19 16:49:33 +01:00
var usa _nymag _domains = [ 'curbed.com' , 'grubstreet.com' , 'nymag.com' , 'thecut.com' , 'vulture.com' ] ;
2023-09-09 07:35:55 +02:00
var usa _outside _mag _domains = [ "backpacker.com" , "betamtb.com" , "betternutrition.com" , "cleaneatingmag.com" , "climbing.com" , "outsideonline.com" , "oxygenmag.com" , "skimag.com" , "trailrunnermag.com" , "triathlete.com" , "vegetariantimes.com" , "womensrunning.com" , "yogajournal.com" ] ;
2021-06-20 20:32:12 +02:00
var usa _tribune _domains = [ 'baltimoresun.com' , 'chicagotribune.com' , 'courant.com' , 'dailypress.com' , 'mcall.com' , 'nydailynews.com' , 'orlandosentinel.com' , 'pilotonline.com' , 'sun-sentinel.com' ] ;
2020-12-10 20:23:12 +01:00
2024-01-25 18:04:30 +01:00
// clean local storage (when allow cookies)
if ( matchDomain ( [ 'bloomberg.com' , 'csmonitor.com' , 'exame.com' , 'slideshare.net' ] ) ) {
2021-04-10 08:46:50 +02:00
window . localStorage . clear ( ) ;
2019-12-06 16:15:49 +01:00
}
2019-12-10 20:08:01 +01:00
2023-05-08 20:05:06 +02:00
function runOnMessage ( bg2csData , dompurify _loaded ) {
2024-01-25 18:04:30 +01:00
// clear local storage (when remove cookies)
if ( bg2csData . cs _clear _lclstrg && ! matchDomain ( [ 'nationalreview.com' , 'thecritic.co.uk' ] . concat ( usa _mcc _domains ) ) )
window . localStorage . clear ( ) ;
2023-08-12 09:04:57 +02:00
// custom/updated sites: load text from json (script[type="application/ld+json"])
2023-05-08 20:05:06 +02:00
if ( bg2csData . ld _json && dompurify _loaded ) {
2022-02-22 19:23:36 +01:00
if ( bg2csData . ld _json . includes ( '|' ) ) {
2022-08-01 20:49:58 +02:00
window . setTimeout ( function ( ) {
let ld _json _split = bg2csData . ld _json . split ( '|' ) ;
let paywall _sel = ld _json _split [ 0 ] ;
let article _sel = ld _json _split [ 1 ] ;
2022-08-10 19:19:51 +02:00
let paywall = document . querySelectorAll ( paywall _sel ) ;
2023-05-07 13:13:41 +02:00
let article = document . querySelector ( article _sel ) ;
let article _append = ld _json _split [ 2 ] ; // optional
if ( paywall . length && article ) {
2022-08-10 19:19:51 +02:00
removeDOMElement ( ... paywall ) ;
2022-08-01 20:49:58 +02:00
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
2022-11-30 08:56:21 +01:00
try {
2023-01-28 11:10:24 +01:00
let json = JSON . parse ( json _script . text . replace ( /[\r\n]/g , '' ) . replace ( /(\\r)?\\n/g , '<br>' ) ) ;
2023-02-04 17:29:46 +01:00
let json _key , json _text ;
if ( Array . isArray ( json ) ) {
2023-10-05 08:45:59 +02:00
json = json . filter ( x => Object . keys ( x ) . find ( key => key . match ( /^articlebody$/i ) ) ) || json . filter ( x => Object . keys ( x ) . find ( key => key . match ( /^text$/i ) ) ) ;
if ( json [ 0 ] ) {
json _key = Object . keys ( json [ 0 ] ) . find ( key => key . match ( /^(articlebody|text)$/i ) ) ;
if ( json _key )
json _text = parseHtmlEntities ( json [ 0 ] [ json _key ] ) ;
}
2023-02-04 17:29:46 +01:00
} else {
2023-03-09 19:36:16 +01:00
json _key = Object . keys ( json ) . find ( key => key . match ( /^articlebody$/i ) ) || Object . keys ( json ) . find ( key => key . match ( /^text$/i ) ) ;
2023-02-04 17:29:46 +01:00
json _text = parseHtmlEntities ( json [ json _key ] ) ;
}
2023-08-12 09:04:57 +02:00
if ( json _text ) {
2022-11-30 08:56:21 +01:00
let parser = new DOMParser ( ) ;
2023-12-06 19:19:00 +01:00
let doc = parser . parseFromString ( '<div style="margin: 25px 0px">' + DOMPurify . sanitize ( breakText ( json _text ) . replace ( /\n\n/g , '<br><br>' ) , dompurify _options ) + '</div>' , 'text/html' ) ;
2023-05-07 13:13:41 +02:00
let article _new = doc . querySelector ( 'div' ) ;
if ( article _append || ! article . parentNode ) {
article . innerHTML = '' ;
article . appendChild ( article _new ) ;
2023-08-12 09:04:57 +02:00
} else if ( article . parentNode )
2023-05-07 13:13:41 +02:00
article . parentNode . replaceChild ( article _new , article ) ;
2022-11-30 08:56:21 +01:00
}
} catch ( err ) {
console . log ( err ) ;
2022-08-01 20:49:58 +02:00
}
2022-02-22 19:23:36 +01:00
}
}
2022-08-01 20:49:58 +02:00
} , 1000 ) ;
}
}
2023-08-12 09:04:57 +02:00
// custom/updated sites: load text from json (script#__NEXT_DATA__)
2023-05-08 20:05:06 +02:00
if ( bg2csData . ld _json _next && dompurify _loaded ) {
2023-05-07 13:13:41 +02:00
if ( bg2csData . ld _json _next . includes ( '|' ) ) {
window . setTimeout ( function ( ) {
let ld _json _next _split = bg2csData . ld _json _next . split ( '|' ) ;
let paywall _sel = ld _json _next _split [ 0 ] ;
let article _sel = ld _json _next _split [ 1 ] ;
let paywall = document . querySelectorAll ( paywall _sel ) ;
let article = document . querySelector ( article _sel ) ;
2023-08-12 09:04:57 +02:00
let article _append = ld _json _next _split [ 2 ] ; // optional
2023-05-07 13:13:41 +02:00
if ( paywall . length && article ) {
removeDOMElement ( ... paywall ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
2023-08-12 09:04:57 +02:00
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text ) ;
let url _next = findKeyJson ( json , [ 'slug' ] ) ;
if ( url _next && ! window . location . pathname . endsWith ( url _next ) )
refreshCurrentTab ( ) ;
2024-01-05 12:20:12 +01:00
let json _text = parseHtmlEntities ( findKeyJson ( json , [ 'body' , 'content' , 'contentHtml' , 'description' ] , 500 ) ) ;
2023-08-12 09:04:57 +02:00
if ( json _text ) {
let parser = new DOMParser ( ) ;
2023-12-06 19:19:00 +01:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( json _text , dompurify _options ) + '</div>' , 'text/html' ) ;
2023-05-07 13:13:41 +02:00
let article _new = doc . querySelector ( 'div' ) ;
if ( article _append || ! article . parentNode ) {
article . innerHTML = '' ;
article . appendChild ( article _new ) ;
2023-08-12 09:04:57 +02:00
} else if ( article . parentNode )
2023-05-07 13:13:41 +02:00
article . parentNode . replaceChild ( article _new , article ) ;
2023-08-12 09:04:57 +02:00
}
} catch ( err ) {
console . log ( err ) ;
2023-05-07 13:13:41 +02:00
}
}
}
} , 1000 ) ;
}
}
2023-08-12 09:04:57 +02:00
// custom/updated sites: load text from json (link[rel="alternate"][type="application/json"][href])
if ( bg2csData . ld _json _url && dompurify _loaded ) {
if ( bg2csData . ld _json _url . includes ( '|' ) ) {
window . setTimeout ( function ( ) {
let ld _json _url _split = bg2csData . ld _json _url . split ( '|' ) ;
let paywall _sel = ld _json _url _split [ 0 ] ;
let article _sel = ld _json _url _split [ 1 ] ;
2024-03-02 12:07:22 +01:00
// optional
let article _append = ld _json _url _split [ 2 ] ;
let article _hold = ld _json _url _split [ 3 ] ;
let article _id _sel = ld _json _url _split [ 4 ] ;
let article _id ;
if ( article _id _sel ) {
let article _id _sel _dom = document . querySelector ( article _id _sel + '[content]' ) ;
if ( article _id _sel _dom )
article _id = article _id _sel _dom . content ;
else
return ;
}
getJsonUrl ( paywall _sel , '' , article _sel , { art _append : article _append , art _hold : article _hold , art _style : 'margin: 25px 0px;' } , article _id ) ;
2023-08-12 09:04:57 +02:00
} , 1000 ) ;
}
}
2024-01-31 12:38:49 +01:00
// custom/updated sites: load text from archive.is
if ( bg2csData . ld _archive _is && dompurify _loaded ) {
if ( bg2csData . ld _archive _is . includes ( '|' ) ) {
window . setTimeout ( function ( ) {
let url = window . location . href ;
let ld _archive _is _split = bg2csData . ld _archive _is . split ( '|' ) ;
let paywall _sel = ld _archive _is _split [ 0 ] ;
let article _sel = ld _archive _is _split [ 1 ] ;
let article _src _sel = ld _archive _is _split [ 2 ] || article _sel ; // optional
let article _link _sel = ld _archive _is _split [ 3 ] || article _sel ; // optional
getArchive ( url , paywall _sel , '' , article _sel , '' , article _src _sel , article _link _sel ) ;
} , 1000 ) ;
}
}
2022-08-01 20:49:58 +02:00
// custom/updated sites: load text from Google webcache
2023-05-08 20:05:06 +02:00
if ( bg2csData . ld _google _webcache && dompurify _loaded ) {
2022-08-01 20:49:58 +02:00
if ( bg2csData . ld _google _webcache . includes ( '|' ) ) {
window . setTimeout ( function ( ) {
let url = window . location . href ;
let ld _google _webcache _split = bg2csData . ld _google _webcache . split ( '|' ) ;
let paywall _sel = ld _google _webcache _split [ 0 ] ;
let article _sel = ld _google _webcache _split [ 1 ] ;
2024-01-31 12:38:49 +01:00
getGoogleWebcache ( url , paywall _sel , '' , article _sel ) ;
2022-08-01 20:49:58 +02:00
} , 1000 ) ;
2022-02-22 19:23:36 +01:00
}
}
2023-02-19 12:36:09 +01:00
// custom/updated sites: add link to article
if ( bg2csData . add _ext _link ) {
if ( bg2csData . add _ext _link . css && bg2csData . add _ext _link . css . includes ( '|' ) && bg2csData . add _ext _link . type ) {
window . setTimeout ( function ( ) {
2023-05-02 12:17:13 +02:00
let url = window . location . href . split ( /[#\?]/ ) [ 0 ] ;
if ( matchUrlDomain ( 'zeit.de' , url ) ) {
2023-09-30 13:28:40 +02:00
if ( document . querySelector ( 'head > link[rel="next"]' ) )
2023-05-02 12:17:13 +02:00
url += '/komplettansicht' ;
}
2023-02-19 12:36:09 +01:00
let add _ext _link _split = bg2csData . add _ext _link . css . split ( '|' ) ;
let paywall _sel = add _ext _link _split [ 0 ] ;
let article _sel = add _ext _link _split [ 1 ] ;
let paywall = document . querySelectorAll ( paywall _sel ) ;
if ( paywall . length ) {
removeDOMElement ( ... paywall ) ;
let article = document . querySelector ( article _sel ) ;
if ( article ) {
switch ( bg2csData . add _ext _link . type ) {
case 'archive.is' :
article . firstChild . before ( archiveLink ( url ) ) ;
break ;
2023-10-30 07:48:49 +01:00
case '1ft.io' :
article . firstChild . before ( nftLink ( url ) ) ;
2023-02-19 12:36:09 +01:00
break ;
2023-07-31 16:59:24 +02:00
case 'google_webcache' :
article . firstChild . before ( googleWebcacheLink ( url ) ) ;
break ;
2023-08-19 07:42:37 +02:00
case 'google_search_tool' :
article . firstChild . before ( googleSearchToolLink ( url ) ) ;
break ;
2023-02-19 12:36:09 +01:00
}
}
}
} , 1000 ) ;
}
}
2023-05-08 20:05:06 +02:00
// check for opt-in confirmation (from background.js)
if ( bg2csData . optin _setcookie ) {
2023-07-09 18:19:21 +02:00
false ;
2023-05-08 20:05:06 +02:00
}
2022-02-22 19:23:36 +01:00
// custom/updated sites: try to unhide text on amp-page
2022-12-16 12:31:29 +01:00
if ( bg2csData . amp _unhide ) {
2021-10-17 21:15:00 +02:00
window . setTimeout ( function ( ) {
2021-12-02 18:02:07 +01:00
let amp _page _hide = document . querySelector ( 'script[src*="/amp-access-"], script[src*="/amp-subscriptions-"]' ) ;
if ( amp _page _hide ) {
2021-11-30 17:36:15 +01:00
amp _unhide _subscr _section ( ) ;
amp _unhide _access _hide ( ) ;
2024-02-22 16:40:34 +01:00
amp _images _replace ( ) ;
2021-12-01 18:33:33 +01:00
amp _iframes _replace ( ) ;
2021-11-17 17:45:33 +01:00
}
2022-03-08 19:04:50 +01:00
} , 100 ) ;
2021-11-17 17:45:33 +01:00
}
2022-02-22 19:23:36 +01:00
// custom/updated sites: amp-redirect
2022-12-16 12:31:29 +01:00
if ( bg2csData . amp _redirect ) {
2021-11-17 17:45:33 +01:00
window . setTimeout ( function ( ) {
2021-12-02 18:02:07 +01:00
let amp _script = document . querySelector ( 'script[src^="https://cdn.ampproject.org/"]' ) ;
2023-09-30 13:08:32 +02:00
let amphtml = document . querySelector ( 'head > link[rel="amphtml"]' ) ;
2021-12-02 18:02:07 +01:00
let amp _page = amp _script && ! amphtml ;
2021-11-17 17:45:33 +01:00
if ( ! amp _page ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( bg2csData . amp _redirect ) ;
2021-10-17 21:15:00 +02:00
}
2022-03-08 19:04:50 +01:00
} , 500 ) ;
2021-10-17 21:15:00 +02:00
}
2021-11-18 17:55:25 +01:00
function cs _code _elems ( elems ) {
for ( let elem of elems ) {
let elem _dom = document . querySelectorAll ( elem . cond ) ;
for ( let item of elem _dom ) {
if ( elem . rm _elem )
removeDOMElement ( item ) ;
if ( elem . rm _class ) {
let rm _class = elem . rm _class . split ( ',' ) . map ( x => x . trim ( ) ) ;
item . classList . remove ( ... rm _class ) ;
}
2022-12-21 18:04:11 +01:00
if ( elem . rm _attrib ) {
let rm _attribs = elem . rm _attrib . split ( '|' ) ;
for ( let rm _attrib of rm _attribs )
item . removeAttribute ( rm _attrib ) ;
}
2022-05-03 17:42:51 +02:00
if ( elem . set _attrib && elem . set _attrib . includes ( '|' ) ) {
let attrib = elem . set _attrib . split ( '|' ) [ 0 ] ;
let value = elem . set _attrib . split ( '|' ) [ 1 ] ;
item . setAttribute ( attrib , value ) ;
}
2021-11-18 17:55:25 +01:00
if ( elem . elems )
cs _code _elems ( elem . elems ) ;
}
2023-12-09 17:47:04 +01:00
if ( elem . rm _elem _wait )
waitDOMElement ( elem . cond , elem . cond . match ( /^\w+/ ) [ 0 ] , removeDOMElement , true ) ;
2021-11-18 17:55:25 +01:00
}
}
2023-09-03 07:20:22 +02:00
// custom/updated sites: cs_code
2022-12-16 12:31:29 +01:00
if ( bg2csData . cs _code ) {
2021-11-18 17:55:25 +01:00
window . setTimeout ( function ( ) {
cs _code _elems ( bg2csData . cs _code ) ;
2022-03-08 19:04:50 +01:00
} , 1000 ) ;
2021-11-18 17:55:25 +01:00
}
2022-12-16 12:31:29 +01:00
} // runOnMessage
2023-07-23 09:14:39 +02:00
var msg _once ;
2024-03-12 12:05:27 +01:00
var url _old ;
2022-12-16 12:31:29 +01:00
if ( ext _api . runtime ) {
ext _api . runtime . onMessage . addListener (
function ( request , sender ) {
2024-03-12 12:05:27 +01:00
if ( request . msg === 'bg2cs' && ! ( msg _once && ( url _old === window . location . href ) ) ) {
2022-12-16 12:31:29 +01:00
msg _once = true ;
2024-03-12 12:05:27 +01:00
url _old = window . location . href ;
2023-05-08 20:05:06 +02:00
runOnMessage ( request . data , dompurify _loaded ) ;
2022-12-16 12:31:29 +01:00
}
} )
}
2023-07-07 08:41:44 +02:00
window . addEventListener ( 'message' , function ( event ) {
if ( event . data ) {
if ( event . data . type === 'from_page' ) {
2023-10-14 10:21:20 +02:00
if ( domain = matchDomain ( [ 'businesspost.ie' , 'lepoint.fr' ] ) ) {
let article _options = {
'businesspost.ie' : 'div.article-body-section' ,
'lepoint.fr' : 'div#contenu'
} ;
let article _sel = article _options [ domain ] ;
2023-07-07 08:41:44 +02:00
let data = event . data . data ;
2023-10-14 10:21:20 +02:00
let article = document . querySelector ( article _sel ) ;
2023-07-07 08:41:44 +02:00
if ( data && article && dompurify _loaded && ! msg _once ) {
msg _once = true ;
let parser = new DOMParser ( ) ;
2023-12-06 19:19:00 +01:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( data , dompurify _options ) + '</div>' , 'text/html' ) ;
2023-07-07 08:41:44 +02:00
let article _new = doc . querySelector ( 'div' ) ;
if ( article _new ) {
article . innerHTML = '' ;
article . appendChild ( article _new ) ;
}
}
}
}
}
} , false ) ;
2024-01-25 18:04:30 +01:00
var overlay = document . querySelector ( 'body.didomi-popup-open' ) ;
if ( overlay )
overlay . classList . remove ( 'didomi-popup-open' ) ;
2024-04-02 17:45:00 +02:00
var ads = 'div.OUTBRAIN, div[id^="taboola-"], div.ad, div.ad-container, div[class*="-ad-container"], div[class*="_ad-container"]' ;
hideDOMStyle ( ads , 10 ) ;
2024-01-25 18:04:30 +01:00
2023-07-23 09:14:39 +02:00
if ( ! ( csDone || csDoneOnce ) ) {
2022-12-16 12:31:29 +01:00
2023-07-23 09:14:39 +02:00
var msg _once _ses ;
2022-12-16 12:31:29 +01:00
if ( ext _api . runtime ) {
ext _api . runtime . onMessage . addListener (
function ( request , sender ) {
2024-03-12 12:05:27 +01:00
if ( request . msg === 'showExtSrc' && ! ( msg _once _ses && url _old === window . location . href ) ) {
2023-07-23 09:14:39 +02:00
msg _once _ses = true ;
2024-03-12 12:05:27 +01:00
url _old = window . location . href ;
2023-12-09 17:47:04 +01:00
replaceDomElementExtSrc ( request . data . url , request . data . url _src , request . data . html , true , false , request . data . selector , request . data . text _fail , request . data . selector _source , request . data . selector _archive ) ;
2022-12-16 12:31:29 +01:00
}
} )
}
2020-01-28 23:06:25 +01:00
// Content workarounds/domain
2020-03-27 21:13:28 +01:00
2024-03-16 12:35:07 +01:00
if ( matchDomain ( 'medium.com' ) || matchDomain ( medium _custom _domains ) || ( ! matchDomain ( 'webcache.googleusercontent.com' ) && document . querySelector ( 'head > link[href*=".medium.com/"]' ) ) ) {
2023-09-23 10:58:31 +02:00
let url = window . location . href ;
2023-07-24 18:33:33 +02:00
let paywall = document . querySelector ( 'article.meteredContent' ) ;
2023-07-18 08:15:54 +02:00
if ( paywall ) {
2023-07-24 18:33:33 +02:00
paywall . removeAttribute ( 'class' ) ;
2023-10-22 15:37:11 +02:00
paywall . firstChild . before ( freediumLink ( url ) ) ;
2024-01-04 17:05:38 +01:00
paywall . firstChild . before ( googleWebcacheLink ( url ) ) ;
2023-07-18 08:15:54 +02:00
}
2021-04-10 08:46:50 +02:00
window . setTimeout ( function ( ) {
2023-08-06 08:21:45 +02:00
let banner = pageContains ( 'div > div > p' , /author made this story available to/ ) ;
2023-07-18 08:15:54 +02:00
if ( banner . length )
removeDOMElement ( banner [ 0 ] . parentNode . parentNode ) ;
2023-07-14 11:10:22 +02:00
} , 1000 ) ;
2020-08-12 08:37:21 +02:00
}
2024-04-08 09:55:31 +02:00
else if ( window . location . hostname . match ( /\.(com|net)\.au$/ ) || matchDomain ( 'inc-aus.com' ) ) { //australia
2020-09-10 22:01:35 +02:00
2024-04-08 09:55:31 +02:00
if ( matchDomain ( [ 'crikey.com.au' , 'inc-aus.com' , 'smartcompany.com.au' , 'themandarin.com.au' ] ) ) {
if ( matchDomain ( 'themandarin.com.au' ) ) {
if ( dompurify _loaded )
getJsonUrl ( 'div[data-enterprise-agreement-paywall="true"]' , '' , 'div.paywall-mandy' ) ;
} else {
let ads = '.advert' ;
hideDOMStyle ( ads ) ;
}
2023-08-02 12:12:02 +02:00
}
2024-02-20 11:53:14 +01:00
else if ( matchDomain ( 'forbes.com.au' ) ) {
if ( dompurify _loaded )
getJsonUrl ( 'div[class*="_gate"]' , '' , 'div.article-page__content-body' ) ;
let fade = document . querySelector ( 'div[style*="background-image: linear-gradient"]' ) ;
removeDOMElement ( fade ) ;
}
2023-08-02 12:12:02 +02:00
else if ( matchDomain ( 'macrobusiness.com.au' ) ) {
2023-07-02 11:07:32 +02:00
let paywall = pageContains ( 'div > p' , 'The full text of this article is available' ) ;
if ( paywall [ 0 ] && dompurify _loaded ) {
let fade = document . querySelector ( 'div.bg-gradient-to-t' ) ;
removeDOMElement ( paywall [ 0 ] . parentNode , fade ) ;
let json _script = document . querySelector ( 'script#__NUXT_DATA__' ) ;
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text ) ;
let json _text = json . filter ( x => typeof x === 'string' && x . match ( /(<|\\u003C)p>/ ) ) [ 0 ] ;
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( json _text ) + '</div>' , 'text/html' ) ;
2023-09-24 07:21:35 +02:00
let content _new = doc . querySelector ( 'div' ) ;
let article = document . querySelector ( 'div.content' ) ;
2023-07-02 11:07:32 +02:00
if ( article ) {
article . innerHTML = '' ;
article . appendChild ( content _new ) ;
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
else if ( matchDomain ( 'thesaturdaypaper.com.au' ) ) {
2022-12-28 18:19:57 +01:00
let hide _end = document . querySelector ( 'div.hide-end' ) ;
if ( hide _end ) {
2023-08-31 06:51:24 +02:00
refreshCurrentTab _bg ( ) ;
2022-12-28 18:19:57 +01:00
csDoneOnce = true ;
}
2021-04-10 08:46:50 +02:00
let paywall = document . querySelector ( 'div.paywall-hard-always-show' ) ;
removeDOMElement ( paywall ) ;
2021-02-20 10:18:12 +01:00
}
2022-05-27 15:11:37 +02:00
else if ( matchDomain ( [ 'brisbanetimes.com.au' , 'smh.com.au' , 'theage.com.au' , 'watoday.com.au' ] ) ) {
if ( ! window . location . hostname . startsWith ( 'amp.' ) ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'head > meta[content^="FOR SUBSCRIBERS"], #paywall_prompt' ) ;
2022-05-27 15:11:37 +02:00
} else {
2021-11-30 17:36:15 +01:00
amp _unhide _subscr _section ( ) ;
2021-04-10 08:46:50 +02:00
}
}
else {
// Australian Community Media newspapers
2022-05-06 18:46:36 +02:00
let au _comm _media _domains = [ 'bendigoadvertiser.com.au' , 'bordermail.com.au' , 'canberratimes.com.au' , 'centralwesterndaily.com.au' , 'dailyadvertiser.com.au' , 'dailyliberal.com.au' , 'examiner.com.au' , 'illawarramercury.com.au' , 'newcastleherald.com.au' , 'northerndailyleader.com.au' , 'standard.net.au' , 'theadvocate.com.au' , 'thecourier.com.au' , 'westernadvocate.com.au' ] ;
2023-07-21 17:04:27 +02:00
let au _comm _media _link = document . querySelector ( 'a[href^="https://austcommunitymedia.my.site.com/"]' ) ;
2022-03-19 19:32:07 +01:00
if ( matchDomain ( au _comm _media _domains ) || au _comm _media _link ) {
2023-07-18 19:19:40 +02:00
let mask = document . querySelector ( 'div[class^="gradient-mask-"]' ) ;
2022-03-22 20:42:01 +01:00
if ( mask ) {
2023-07-18 19:19:40 +02:00
mask . removeAttribute ( 'class' ) ;
2023-07-21 17:04:27 +02:00
let div _hidden = document . querySelectorAll ( 'div.flex-col div.hidden' ) ;
2022-05-06 18:46:36 +02:00
for ( let elem of div _hidden )
elem . classList . remove ( 'hidden' ) ;
2022-03-22 20:42:01 +01:00
} else {
let subscribe _truncate = document . querySelector ( '.subscribe-truncate' ) ;
if ( subscribe _truncate )
subscribe _truncate . classList . remove ( 'subscribe-truncate' ) ;
let subscriber _hiders = document . querySelectorAll ( '.subscriber-hider' ) ;
for ( let subscriber _hider of subscriber _hiders )
subscriber _hider . classList . remove ( 'subscriber-hider' ) ;
}
2022-08-31 08:40:16 +02:00
let noscroll = document . querySelectorAll ( 'html[style], body[style]' ) ;
for ( let elem of noscroll )
elem . removeAttribute ( 'style' ) ;
2024-04-07 10:39:17 +02:00
let story _generic _iframe = '.story-generic__iframe' ;
let blocker = 'div.blocker' ;
let overlays = 'div.transition-all, div[id^="headlessui-dialog"]' ;
let ads = '.ad-placeholder, .sticky, [id*="-container"], #hindsight-ads-iframe' ;
hideDOMStyle ( story _generic _iframe + ', ' + blocker + ', ' + overlays + ', ' + ads ) ;
2021-04-10 08:46:50 +02:00
} else if ( window . location . hostname . endsWith ( '.com.au' ) ) {
// Australia News Corp
2024-03-24 08:37:46 +01:00
let au _news _corp _domains = [ 'adelaidenow.com.au' , 'cairnspost.com.au' , 'codesports.com.au' , 'couriermail.com.au' , 'dailytelegraph.com.au' , 'geelongadvertiser.com.au' , 'goldcoastbulletin.com.au' , 'heraldsun.com.au' , 'ntnews.com.au' , 'theaustralian.com.au' , 'thechronicle.com.au' , 'themercury.com.au' , 'townsvillebulletin.com.au' , 'weeklytimesnow.com.au' ] ;
2022-05-27 15:11:37 +02:00
if ( matchDomain ( au _news _corp _domains ) ) {
2023-12-11 12:15:33 +01:00
if ( window . location . search . match ( /[&\?]amp/ ) ) {
2024-03-12 12:05:27 +01:00
amp _unhide _subscr _section ( 'amp-ad, amp-embed, [id^="ad-mrec-"]' , false ) ;
2022-09-29 09:24:42 +02:00
let figure _stretch = document . querySelectorAll ( 'figure.stretch' ) ;
for ( let elem of figure _stretch )
elem . classList . remove ( 'stretch' ) ;
2023-12-11 12:15:33 +01:00
let comments = document . querySelector ( '#comments-load, .comments-module' ) ;
2022-09-29 09:24:42 +02:00
removeDOMElement ( comments ) ;
} else {
2024-03-20 18:24:26 +01:00
if ( window . location . pathname . includes ( '/video/' ) && document . querySelector ( 'div.vms-premium-video' ) )
header _nofix ( document . querySelector ( 'div.video-hub' ) ) ;
2024-04-07 10:39:17 +02:00
let ads = '.header_ads-container, .ad-block' ;
hideDOMStyle ( ads ) ;
2021-12-01 19:06:40 +01:00
}
2021-04-10 08:46:50 +02:00
} else {
// Australian Seven West Media
2024-03-16 12:35:07 +01:00
if ( matchDomain ( 'thewest.com.au' ) || document . querySelector ( 'head > link[href="https://images.thewest.com.au"]' ) ) {
2023-12-02 17:23:58 +01:00
function thewest _main ( node ) {
let scripts = document . querySelectorAll ( 'script:not([src]):not([type])' ) ;
let json _script ;
for ( let script of scripts ) {
if ( script . text . includes ( 'window.PAGE_DATA =' ) ) {
json _script = script ;
break ;
2021-04-10 08:46:50 +02:00
}
2023-12-02 17:23:58 +01:00
}
if ( json _script ) {
let json _text = json _script . text . split ( 'window.PAGE_DATA =' ) [ 1 ] . split ( '</script' ) [ 0 ] ;
json _text = json _text . replace ( /:undefined([,}])/g , ':"undefined"$1' ) ;
try {
2021-04-10 08:46:50 +02:00
let json _article = JSON . parse ( json _text ) ;
let json _pub ;
2023-02-08 16:58:13 +01:00
for ( let key in json _article ) {
let json _resolution = json _article [ key ] . data . result . resolution ;
if ( json _resolution && json _resolution . publication ) {
json _pub = json _resolution . publication ;
2021-04-10 08:46:50 +02:00
break ;
}
2023-02-08 16:58:13 +01:00
}
2021-04-10 08:46:50 +02:00
let json _content = [ ] ;
let url _loaded ;
if ( json _pub ) {
json _content = json _pub . content . blocks ;
url _loaded = json _pub . _self ;
} else
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2021-04-10 08:46:50 +02:00
//let json_video = json_pub.mainVideo;
let url = window . location . href ;
if ( ! url _loaded || ! url . includes ( url _loaded . slice ( - 10 ) ) )
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2021-06-29 19:59:15 +02:00
let par _elem , par _sub1 , par _sub2 ;
let par _dom = document . createElement ( 'div' ) ;
let tweet _id = 1 ;
2021-04-10 08:46:50 +02:00
for ( let par of json _content ) {
2021-06-29 19:59:15 +02:00
par _elem = '' ;
2021-04-10 08:46:50 +02:00
if ( par . kind === 'text' ) {
2021-06-29 19:59:15 +02:00
par _elem = document . createElement ( 'p' ) ;
par _elem . innerText = par . text ;
2021-04-10 08:46:50 +02:00
} else if ( par . kind === 'subhead' ) {
2021-06-29 19:59:15 +02:00
par _elem = document . createElement ( 'h2' ) ;
par _elem . innerText = par . text ;
2021-04-10 08:46:50 +02:00
} else if ( par . kind === 'pull-quote' ) {
2021-06-29 19:59:15 +02:00
par _elem = document . createElement ( 'i' ) ;
par _elem . innerText = ( par . attribution ? par . attribution + ': ' : '' ) + par . text ;
2021-04-10 08:46:50 +02:00
} else if ( par . kind === 'embed' ) {
if ( par . reference . includes ( 'https://omny.fm/' ) || par . reference . includes ( 'https://docdro.id/' ) ) {
2021-06-29 19:59:15 +02:00
par _elem = document . createElement ( 'embed' ) ;
par _elem . src = par . reference ;
par _elem . style = 'height:500px; width:100%' ;
par _elem . frameborder = '0' ;
2021-04-10 08:46:50 +02:00
} else {
2021-06-29 19:59:15 +02:00
par _elem = document . createElement ( 'a' ) ;
par _elem . href = par . reference ;
par _elem . innerText = par . reference . split ( '?' ) [ 0 ] ;
2021-04-10 08:46:50 +02:00
console . log ( 'embed: ' + par . reference ) ;
}
} else if ( par . kind === 'unordered-list' ) {
if ( par . items ) {
2021-06-29 19:59:15 +02:00
par _elem = document . createElement ( 'ul' ) ;
2021-04-10 08:46:50 +02:00
for ( let item of par . items )
2021-07-10 19:02:46 +02:00
if ( item . text ) {
2021-06-29 19:59:15 +02:00
par _sub1 = document . createElement ( 'li' ) ;
2021-07-10 19:02:46 +02:00
if ( item . intentions [ 0 ] && item . intentions [ 0 ] . href ) {
par _sub2 = document . createElement ( 'a' ) ;
par _sub2 . href = item . intentions [ 0 ] . href ;
} else {
par _sub2 = document . createElement ( 'span' ) ;
}
2021-06-29 19:59:15 +02:00
par _sub2 . innerText = item . text ;
par _sub1 . appendChild ( par _sub2 ) ;
par _elem . appendChild ( par _sub1 ) ;
2021-04-10 08:46:50 +02:00
}
}
} else if ( par . kind === 'inline' ) {
if ( par . asset . kind === 'image' ) {
2021-06-29 19:59:15 +02:00
par _elem = document . createElement ( 'figure' ) ;
par _sub1 = document . createElement ( 'img' ) ;
par _sub1 . src = par . asset . original . reference ;
par _sub1 . style = 'width:100%' ;
par _elem . appendChild ( par _sub1 ) ;
if ( par . asset . captionText ) {
par _sub2 = document . createElement ( 'figcaption' ) ;
2023-03-07 09:22:31 +01:00
par _sub2 . innerText = par . asset . captionText + ' ' + ( par . asset . copyrightByline ? par . asset . copyrightByline : '' ) +
2021-06-29 19:59:15 +02:00
( ( par . asset . copyrightCredit && par . asset . captionText !== par . asset . copyrightByline ) ? '/' + par . asset . copyrightCredit : '' ) ;
par _elem . appendChild ( par _sub2 ) ;
}
2021-04-10 08:46:50 +02:00
}
2023-02-08 21:58:02 +01:00
} else if ( par . kind === 'inline-related' ) {
par _elem = document . createElement ( 'p' ) ;
if ( par . publications ) {
for ( let elem of par . publications ) {
let par _link = document . createElement ( 'a' ) ;
par _link . href = elem . _self ;
par _link . innerText = elem . heading ;
par _elem . appendChild ( par _link ) ;
par _elem . appendChild ( document . createElement ( 'br' ) ) ;
}
}
2021-04-10 08:46:50 +02:00
} else {
2021-06-29 19:59:15 +02:00
par _elem = document . createElement ( 'p' ) ;
par _elem . innerText = par . text ;
2021-04-10 08:46:50 +02:00
console . log ( par . kind ) ;
}
2021-06-29 19:59:15 +02:00
if ( par _elem )
par _dom . appendChild ( par _elem ) ;
2021-04-10 08:46:50 +02:00
}
let content = document . querySelector ( 'div[class*="StyledArticleContent"]' ) ;
if ( content ) {
2023-03-07 09:22:31 +01:00
content . innerHTML = '' ;
2021-04-10 08:46:50 +02:00
content . appendChild ( par _dom ) ;
} else {
par _dom . setAttribute ( 'style' , 'margin: 20px;' ) ;
2023-12-02 17:23:58 +01:00
node . before ( par _dom ) ;
2023-02-08 16:58:13 +01:00
}
2023-12-02 17:23:58 +01:00
} catch ( err ) {
console . log ( err ) ;
2021-04-10 08:46:50 +02:00
}
}
2023-12-02 17:23:58 +01:00
removeDOMElement ( node ) ;
}
let paywall _sel = 'div.paywall div[data-testid*="BreachScreen"], div[class*="StyledBreachWallContent"]' ;
let paywall = document . querySelector ( paywall _sel ) ;
if ( paywall )
thewest _main ( paywall ) ;
else {
csDoneOnce = true ;
2023-12-24 09:06:19 +01:00
waitDOMElement ( paywall _sel , 'DIV' , thewest _main , true ) ;
2023-12-02 17:23:58 +01:00
}
2024-04-07 10:39:17 +02:00
let ads = 'div.headerAdvertisement' ;
hideDOMStyle ( ads ) ;
2024-02-03 09:55:17 +01:00
} else if ( document . querySelector ( 'head > link[rel="dns-prefetch"][href="//static.ew.mmg.navigacloud.com"]' ) ) { // McPherson Media Group
let paywall = document . querySelector ( 'div#content-Load-message' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let lockable = document . querySelectorAll ( 'div[id^="lockable-"]' ) ;
for ( let elem of lockable ) {
elem . removeAttribute ( 'style' ) ;
elem . removeAttribute ( 'id' ) ;
}
let gradient = document . querySelector ( 'div.gradienttext' ) ;
if ( gradient )
gradient . removeAttribute ( 'class' ) ;
}
2023-12-02 17:23:58 +01:00
} else
csDone = true ;
2019-11-22 05:17:21 +01:00
}
2023-12-02 17:23:58 +01:00
} else
2024-02-03 09:55:17 +01:00
csDone = true ;
2020-01-28 23:06:25 +01:00
}
2024-01-25 18:04:30 +01:00
} else if ( window . location . hostname . match ( /\.(de|at|ch)$/ ) || matchDomain ( [ 'diepresse.com' , 'faz.net' , 'tt.com' , 'wochenblatt.com' ] ) ) { //germany/austria/switzerland - ch
2021-04-10 08:46:50 +02:00
2023-07-01 08:49:27 +02:00
if ( matchDomain ( 'aerztezeitung.de' ) ) {
2023-01-21 17:47:44 +01:00
let paywall = document . querySelector ( 'div.AZLoginModule' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = json . articleBody ;
let content = document . querySelector ( 'p.intro' ) ;
if ( json _text && content ) {
let article _new = document . createElement ( 'p' ) ;
article _new . innerText = json _text ;
content . after ( article _new ) ;
}
}
}
}
}
2023-06-27 12:26:17 +02:00
else if ( matchDomain ( [ 'arcinfo.ch' , 'lacote.ch' , 'lenouvelliste.ch' ] ) ) { // Groupe ESH Médias
2022-09-30 17:40:10 +02:00
let paywall = document . querySelector ( 'section#paywall-articles' ) ;
2023-05-08 20:05:06 +02:00
if ( paywall && dompurify _loaded ) {
2022-09-30 17:40:10 +02:00
removeDOMElement ( paywall ) ;
2023-01-08 09:35:56 +01:00
let url _id = window . location . pathname . match ( /\d+$/ ) . pop ( ) ;
2022-09-30 17:40:10 +02:00
let html = document . documentElement . outerHTML ;
2023-09-30 13:08:32 +02:00
let og _url = document . querySelector ( 'head > meta[name="og:url"][content]' ) ;
2023-01-08 09:35:56 +01:00
if ( og _url && ! og _url . content . endsWith ( url _id ) )
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2022-09-30 17:40:10 +02:00
let json ;
if ( html . includes ( 'window.__NUXT__=' ) )
2022-10-10 19:34:52 +02:00
json = html . split ( 'window.__NUXT__=' ) [ 1 ] . split ( '</script>' ) [ 0 ] . trim ( ) . replace ( /blocs:\[\{.*?\}\],/g , '' ) ;
2022-09-30 17:40:10 +02:00
let article = document . querySelector ( 'div.html-content' ) ;
2022-10-10 19:34:52 +02:00
let no _intro = false ;
if ( ! article ) {
article = document . querySelector ( 'div.container-mobile-full' ) ;
no _intro = true ;
}
2022-09-30 17:40:10 +02:00
if ( article && json ) {
let content = '' ;
2022-10-09 20:20:19 +02:00
if ( json . includes ( 'text_1="' ) )
content = json . split ( 'text_1="' ) . pop ( ) . split ( '";' ) [ 0 ] ;
2022-09-30 17:40:10 +02:00
else {
let parts = json . split ( 'html:"' ) ;
2022-10-13 08:01:45 +02:00
parts . splice ( 0 , 1 ) ;
for ( let part of parts )
content += part . split ( '",has_pre_content' ) [ 0 ] ;
2022-09-30 17:40:10 +02:00
}
if ( content ) {
content = content . replace ( /\\u003C/g , '<' ) . replace ( /\\u003E/g , '>' ) . replace ( /\\u002F/g , '/' ) . replace ( /\\"/g , '"' ) . replace ( /\\r\\n/g , '' ) ;
let parser = new DOMParser ( ) ;
2024-02-13 17:22:19 +01:00
let content _new = parser . parseFromString ( '<div class="html-content">' + DOMPurify . sanitize ( content , dompurify _options ) + '</div>' , 'text/html' ) ;
let iframely = content _new . querySelectorAll ( 'div > div.fr-iframely' ) ;
for ( let elem of iframely ) {
let url _dom = elem . querySelector ( '[data-iframely-url]' ) ;
if ( url _dom ) {
let iframe = document . createElement ( 'iframe' ) ;
iframe . src = url _dom . getAttribute ( 'data-iframely-url' ) ;
iframe . style = 'width: 100%; height: 400px;' ;
elem . parentNode . replaceChild ( iframe , elem ) ;
}
}
2022-10-10 19:34:52 +02:00
let article _top ;
if ( ! no _intro ) {
article _top = article . parentNode . parentNode ;
removeDOMElement ( article . parentNode ) ;
} else
article _top = article ;
2022-09-30 17:40:10 +02:00
article _top . appendChild ( content _new . querySelector ( 'div' ) ) ;
} else {
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2022-09-30 17:40:10 +02:00
}
}
}
2024-04-07 10:31:08 +02:00
let ads = 'div[class*="ads_type_"]' ;
hideDOMStyle ( ads ) ;
2022-09-30 17:40:10 +02:00
}
2021-09-25 09:35:48 +02:00
else if ( matchDomain ( 'augsburger-allgemeine.de' ) ) {
2021-04-10 08:46:50 +02:00
let url = window . location . href ;
2021-06-28 08:51:33 +02:00
if ( ! url . includes ( '-amp.html' ) ) {
let paywall = document . querySelector ( 'div.aa-visible-logged-out' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
window . location . href = url . replace ( '.html' , '-amp.html' ) ;
}
} else {
2021-11-30 17:36:15 +01:00
amp _unhide _subscr _section ( ) ;
2021-04-10 08:46:50 +02:00
}
2024-04-07 10:31:08 +02:00
let ads = 'div.piano-article, div.p-ad' ;
hideDOMStyle ( ads ) ;
2021-02-19 19:28:36 +01:00
}
2023-12-15 09:33:09 +01:00
else if ( matchDomain ( 'automobilwoche.de' ) ) {
let body _hidden = document . querySelector ( 'body[class]' ) ;
if ( body _hidden )
body _hidden . removeAttribute ( 'class' ) ;
let lazy _images = document . querySelectorAll ( 'img.lazy[data-src]' ) ;
for ( let elem of lazy _images ) {
elem . src = elem . getAttribute ( 'data-src' ) ;
elem . removeAttribute ( 'class' ) ;
}
let lazy _sources = document . querySelectorAll ( 'source[srcset^="data:image"]' ) ;
removeDOMElement ( ... lazy _sources ) ;
}
2023-06-26 18:53:12 +02:00
else if ( matchDomain ( [ 'beobachter.ch' , 'handelszeitung.ch' ] ) ) {
let paywall = document . querySelector ( 'div#piano-inlined' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let json _script = document . querySelector ( 'script#hydrationdata' ) ;
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
2023-12-04 20:59:59 +01:00
let url _id = json _script . text . includes ( '"gcid":"' ) ? json _script . text . split ( '"gcid":"' ) [ 1 ] . split ( '"' ) [ 0 ] : '' ;
2023-06-26 18:53:12 +02:00
if ( url _id && ! window . location . pathname . endsWith ( url _id ) )
refreshCurrentTab ( ) ;
let pars = json . state ;
let paragraphs = document . querySelectorAll ( 'div.paragraph' ) ;
let article = paragraphs [ 0 ] ;
if ( article ) {
article . setAttribute ( 'class' , 'paragraph text-paragraph' ) ;
for ( let paragraph of paragraphs )
paragraph . innerHTML = '' ;
let parser = new DOMParser ( ) ;
for ( let par in pars ) {
2023-12-04 20:59:59 +01:00
let par _elem = pars [ par ] ;
let elem = document . createElement ( 'div' ) ;
elem . style = 'font-size: 1.7rem; margin: 25px;' ;
let sub _elem = '' ;
if ( par _elem . _ _typename === 'TextParagraph' && par _elem . text ) {
let content _new = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( par _elem . text ) + '</div>' , 'text/html' ) ;
sub _elem = content _new . querySelector ( 'div' ) ;
} else if ( par _elem . _ _typename === 'EmbedParagraph' && par _elem . embedCode ) {
2023-12-06 19:19:00 +01:00
let content _new = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( par _elem . embedCode , dompurify _options ) + '</div>' , 'text/html' ) ;
2023-12-04 20:59:59 +01:00
sub _elem = content _new . querySelector ( 'div' ) ;
let iframe = sub _elem . querySelector ( 'iframe[width]' ) ;
if ( iframe ) {
2023-12-21 17:28:46 +01:00
let ratio = iframe . width / ( mobile ? 320 : 640 ) ;
2023-12-04 20:59:59 +01:00
iframe . width = iframe . width / ratio ;
iframe . height = iframe . height / ratio ;
}
} else if ( par _elem . _ _typename === 'ImageFile' ) {
if ( par _elem . origin ) {
sub _elem = document . createElement ( 'img' ) ;
sub _elem . src = par _elem . origin ;
sub _elem . alt = par _elem . alt ;
if ( par _elem . width ) {
2023-12-21 17:28:46 +01:00
let ratio = par _elem . width / ( mobile ? 320 : 640 ) ;
2023-12-04 20:59:59 +01:00
sub _elem . width = par _elem . width / ratio ;
sub _elem . height = par _elem . height / ratio ;
}
}
} else if ( par _elem . _ _typename === 'Image' ) {
if ( par _elem . credit ) {
sub _elem = document . createElement ( 'p' ) ;
sub _elem . appendChild ( document . createTextNode ( par _elem . credit ) ) ;
}
} else if ( par _elem . _ _typename === 'ImageParagraph' ) {
if ( par _elem . caption ) {
let content _new = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( par _elem . caption ) + '</div>' , 'text/html' ) ;
sub _elem = content _new . querySelector ( 'div' ) ;
}
} else if ( ! [ 'Article' , 'Author' , 'Channel' , 'LandingPage' , 'Query' ] . includes ( par _elem . _ _typename ) ) {
console . log ( par _elem ) ;
}
if ( sub _elem ) {
elem . appendChild ( sub _elem ) ;
article . appendChild ( elem ) ;
2023-06-26 18:53:12 +02:00
}
}
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
2024-04-07 10:31:08 +02:00
let ads = 'div.ad-wrapper, div[id^="apn-ad-slot-"]' ;
hideDOMStyle ( ads ) ;
2023-06-26 18:53:12 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'berliner-zeitung.de' ) ) {
2024-04-02 17:45:00 +02:00
let ads = 'div[class^="traffective_"], div[class^="article_billboard-"], div[class*="_ad_"], div[class^="outbrain_"]' ;
hideDOMStyle ( ads ) ;
}
else if ( matchDomain ( 'bild.de' ) ) {
let url = window . location . href ;
getArchive ( url , 'div.offer-module' , '' , 'article' ) ;
2021-02-19 19:28:36 +01:00
}
2023-05-30 19:27:56 +02:00
else if ( matchDomain ( 'boersen-zeitung.de' ) ) {
2024-03-04 13:55:32 +01:00
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'storefront-section#paywall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let url = window . location . href ;
replaceDomElementExt ( url , false , false , 'article' ) ;
}
} , 1000 ) ;
2023-05-30 19:27:56 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'cicero.de' ) ) {
let url = window . location . href ;
2022-04-19 21:37:22 +02:00
if ( ! window . location . search . match ( /(\?|&)amp/ ) ) {
2021-04-10 08:46:50 +02:00
let paywall = document . querySelector ( '.plenigo-paywall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
2022-01-28 16:05:29 +01:00
let url _amp = url . split ( '?' ) [ 0 ] + '?amp' ;
2021-04-10 08:46:50 +02:00
replaceDomElementExt ( url _amp , false , false , '.field-name-field-cc-body' ) ;
}
} else {
let teasered _content = document . querySelector ( '.teasered-content' ) ;
if ( teasered _content )
teasered _content . classList . remove ( 'teasered-content' ) ;
let teasered _content _fader = document . querySelector ( '.teasered-content-fader' ) ;
let btn _read _more = document . querySelector ( '.btn--read-more' ) ;
2023-09-03 07:20:22 +02:00
removeDOMElement ( teasered _content _fader , btn _read _more ) ;
2024-04-07 10:31:08 +02:00
let ads = 'amp-ad' ;
hideDOMStyle ( ads ) ;
2021-04-10 08:46:50 +02:00
}
let urban _ad _sign = document . querySelectorAll ( '.urban-ad-sign' ) ;
removeDOMElement ( ... urban _ad _sign ) ;
2020-01-28 23:06:25 +01:00
}
2024-02-11 17:46:30 +01:00
else if ( matchDomain ( 'deraktionaer.de' ) ) {
let url = window . location . href ;
getArchive ( url , 'div#paywall-container' , '' , 'div#article-body' ) ;
}
2023-12-12 19:05:17 +01:00
else if ( matchDomain ( 'diepresse.com' ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let article = document . querySelector ( 'div.premium-content' ) ;
if ( article ) {
article . removeAttribute ( 'class' ) ;
let scripts = document . querySelectorAll ( 'script:not([src]):not([type])' ) ;
let json _script ;
for ( let script of scripts ) {
if ( script . text . match ( /window\.contentInformation\s?=\s?/ ) ) {
json _script = script ;
break ;
}
}
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text . split ( /window\.contentInformation\s?=\s?/ ) [ 1 ] . split ( '};' ) [ 0 ] + '}' ) ;
if ( json . flexmodule _list ) {
let pars = json . flexmodule _list ;
let par _first = false ;
let split = false ;
let parser = new DOMParser ( ) ;
for ( let par of pars ) {
if ( split ) {
if ( par ) {
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( par ) + '</div>' , 'text/html' ) ;
let content _new = doc . querySelector ( 'div' ) ;
article . appendChild ( content _new ) ;
}
} else {
if ( par )
par _first = true ;
else if ( ! par && par _first )
split = true ;
}
let lazy _images = article . querySelectorAll ( 'img.lazyload[data-src]:not([src])' ) ;
for ( let elem of lazy _images ) {
elem . removeAttribute ( 'class' ) ;
elem . src = elem . getAttribute ( 'data-src' )
}
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'faz.net' ) ) {
2023-12-15 09:33:09 +01:00
if ( matchDomain ( 'zeitung.faz.net' ) ) { // legacy
let paywall _z = document . querySelector ( 'div.c-red-carpet' ) ;
if ( paywall _z ) {
removeDOMElement ( paywall _z ) ;
let og _url = document . querySelector ( 'head > meta[property="og:url"][content]' ) ;
if ( og _url )
window . location . href = og _url . content ;
else
header _nofix ( document . querySelector ( 'div.article__text' ) ) ;
}
let sticky _advt = document . querySelector ( 'div.sticky-advt' ) ;
removeDOMElement ( sticky _advt ) ;
} else {
2023-10-18 12:54:08 +02:00
let paywall = document . querySelector ( '#paywall-form-container-outer, section.atc-ContainerPaywall' ) ;
2021-04-10 08:46:50 +02:00
if ( paywall ) {
removeDOMElement ( paywall ) ;
2023-12-03 11:44:13 +01:00
let url _mobile = 'https://m.faz.net' + window . location . pathname ;
2022-01-27 19:21:26 +01:00
try {
2023-12-03 11:44:13 +01:00
fetch ( url _mobile )
2022-01-27 19:21:26 +01:00
. then ( response => {
if ( response . ok ) {
response . text ( ) . then ( html => {
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( html , 'text/html' ) ;
2023-10-26 20:46:10 +02:00
let json _script = doc . querySelector ( 'script[id="schemaOrgJson"]' ) ;
if ( json _script ) {
let json _text ;
2022-01-27 19:21:26 +01:00
try {
2023-10-26 20:46:10 +02:00
let json = JSON . parse ( json _script . text . replace ( /(\r|\n)/g , '' ) ) ;
json _text = json . articleBody ;
2022-01-27 19:21:26 +01:00
} catch ( err ) {
console . log ( err ) ;
return ;
}
2023-10-26 20:46:10 +02:00
let article _text = document . querySelector ( 'div.art_txt.paywall, div.atc-Text.js-atc-Text' ) ;
if ( json _text && article _text ) {
let pars = article _text . querySelectorAll ( 'p.atc-TextParagraph' ) ;
removeDOMElement ( ... pars ) ;
2023-12-03 11:44:13 +01:00
json _text = breakText _headers ( json _text ) . split ( "\n\n" ) ;
2023-11-12 08:46:17 +01:00
for ( let p _text of json _text ) {
2023-12-11 12:15:33 +01:00
let elem = document . createElement ( "p" ) ;
elem . setAttribute ( 'class' , 'atc-TextParagraph' ) ;
if ( p _text . length < 80 )
elem . style = 'font-weight: bold;' ;
2023-10-26 20:46:10 +02:00
elem . innerText = p _text ;
article _text . appendChild ( elem ) ;
2023-11-12 08:46:17 +01:00
} ;
2023-10-18 12:54:08 +02:00
} else {
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = json . articleBody ;
let article _text = document . querySelectorAll ( 'div.copy' ) ;
if ( json _text && article _text . length ) {
for ( let elem of article _text )
elem . innerText = '' ;
article _text [ 0 ] . innerText = json _text ;
let copy _intro = document . querySelector ( 'p.copy--intro' ) ;
removeDOMElement ( copy _intro ) ;
}
}
}
}
2021-04-10 08:46:50 +02:00
}
2022-01-27 19:21:26 +01:00
} )
}
} ) ;
} catch ( err ) {
console . log ( err ) ;
}
2021-04-10 08:46:50 +02:00
}
2024-04-07 10:31:08 +02:00
let ads = 'div.lay-PaySocial, div.iqadtile_wrapper' ;
hideDOMStyle ( ads ) ;
2021-04-10 08:46:50 +02:00
}
2020-01-28 23:06:25 +01:00
}
2019-10-08 17:41:09 +02:00
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'freiepresse.de' ) ) {
2023-11-13 18:47:44 +01:00
if ( window . location . pathname . includes ( '-artikel' ) ) {
let url = window . location . href ;
2024-01-15 18:46:33 +01:00
func _post = function ( ) {
2023-11-13 18:47:44 +01:00
let lazy _images = document . querySelectorAll ( 'picture.lazy' ) ;
for ( let elem of lazy _images ) {
elem . removeAttribute ( 'class' ) ;
let source = elem . querySelector ( 'source[data-srcset]' ) ;
if ( source ) {
let img _new = document . createElement ( 'img' ) ;
img _new . src = source . getAttribute ( 'data-srcset' ) . split ( ' ' ) [ 0 ] ;
source . parentNode . replaceChild ( img _new , source ) ;
}
}
2023-12-06 19:19:00 +01:00
}
2024-01-15 18:46:33 +01:00
getGoogleWebcache ( url , 'div.article-teaser' , '' , 'article' ) ;
2021-04-10 08:46:50 +02:00
}
2024-04-07 10:31:08 +02:00
let ads = 'div.rgt-content' ;
hideDOMStyle ( ads ) ;
2020-01-28 23:06:25 +01:00
}
2023-11-26 14:04:06 +01:00
else if ( matchDomain ( 'freitag.de' ) ) {
let paywall = document . querySelector ( 'div.qa-paywall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let related = document . querySelector ( 'div.c-teaser-plus-related--paywall' ) ;
if ( related )
related . classList . remove ( 'c-teaser-plus-related--paywall' ) ;
let article = document . querySelector ( 'div#x-article-text' ) ;
if ( article ) {
2023-11-27 18:26:40 +01:00
let intro = article . querySelectorAll ( 'p' ) ;
2023-11-26 14:04:06 +01:00
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
2023-12-03 11:44:13 +01:00
let json _text = breakText _headers ( json . articleBody ) ;
2023-11-26 14:04:06 +01:00
let pars = json _text . split ( /\n\n/g ) ;
if ( json _text ) {
removeDOMElement ( ... intro ) ;
let article _new = document . createElement ( 'div' ) ;
for ( let par of pars ) {
2023-12-03 11:44:13 +01:00
if ( ! par . startsWith ( 'Placeholder ' ) ) {
let par _new = document . createElement ( 'p' ) ;
par _new . innerText = par ;
article _new . appendChild ( par _new ) ;
}
2023-11-26 14:04:06 +01:00
}
article . appendChild ( article _new ) ;
}
}
} else {
let hidden _article = document . querySelector ( 'div.o-paywall' ) ;
if ( hidden _article ) {
2023-11-27 18:26:40 +01:00
let par _first = true ;
2023-12-03 11:44:13 +01:00
let pars = breakText _headers ( hidden _article . innerText ) . split ( /\n\n/g ) ;
2023-11-26 14:04:06 +01:00
for ( let par of pars ) {
let par _new = document . createElement ( 'p' ) ;
2023-11-27 18:26:40 +01:00
let overlap = '' ;
if ( par _first ) {
let intro _last = intro [ intro . length - 1 ] ;
par = par . trim ( ) ;
overlap = findOverlap ( intro _last . innerText , par ) ;
if ( overlap )
intro _last . innerText = intro _last . innerText . replace ( new RegExp ( overlap + '$' ) , '' ) + par ;
par _first = false ;
}
if ( ! overlap ) {
par _new . innerText = par ;
article . appendChild ( par _new ) ;
}
2023-11-26 14:04:06 +01:00
}
}
}
}
}
}
2023-04-11 22:06:32 +02:00
else if ( matchDomain ( 'jacobin.de' ) ) {
let paywall = pageContains ( 'h3.m-auto' , 'Dieser Artikel ist nur mit Abo zugänglich.' ) ;
if ( paywall . length ) {
let slash = document . querySelector ( 'div.slash' ) ;
removeDOMElement ( paywall [ 0 ] . parentNode , slash ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text ) ;
if ( json && json . props . pageProps . sections && json . props . pageProps . sections [ 1 ] . content ) {
let url _next = json . query . slug ;
if ( url _next && ! window . location . pathname . includes ( url _next ) )
refreshCurrentTab ( ) ;
let pars = json . props . pageProps . sections [ 1 ] . content ;
let first _par = document . querySelector ( 'body > div#__next p.bodyText' ) ;
if ( first _par ) {
let par _class = first _par . getAttribute ( 'class' ) ;
let article = first _par . parentNode ;
if ( article ) {
let add _par = false ;
for ( let par of pars ) {
if ( ! add _par ) {
if ( par . type === 'paywall' )
add _par = true ;
} else {
if ( par . text ) {
let elem _type = 'p' ;
let elem _class = par _class ;
let elem _style ;
if ( [ 'paragraph' , 'quote' ] . includes ( par . type ) ) {
if ( par . type === 'quote' )
elem _style = 'font-size: 36px; font-weight: bold;' ;
} else if ( par . type === 'header' ) {
elem _type = 'h2' ;
elem _class = 'content-element font-headline h2 my-1em' ;
}
let content = par . text . replace ( / /g , '' ) ;
let parser = new DOMParser ( ) ;
2023-05-08 20:05:06 +02:00
let content _new = parser . parseFromString ( '<' + elem _type + ' class="' + elem _class + ( elem _style ? '" style="' + elem _style : '' ) + '">' + DOMPurify . sanitize ( content ) + '</' + elem _type + 'p>' , 'text/html' ) ;
2023-04-11 22:06:32 +02:00
article . appendChild ( content _new . querySelector ( elem _type ) ) ;
} else
console . log ( par ) ;
}
}
}
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'krautreporter.de' ) ) {
2022-07-21 07:40:48 +02:00
let paywall = document . querySelector ( '.js-article-paywall' ) ;
2021-04-10 08:46:50 +02:00
if ( paywall ) {
2022-01-29 17:56:29 +01:00
removeDOMElement ( paywall ) ;
window . setTimeout ( function ( ) {
let paywall _divider = document . querySelector ( '.js-paywall-divider' ) ;
let steady _checkout = document . querySelector ( '#steady-checkout' ) ;
removeDOMElement ( paywall _divider , steady _checkout ) ;
let blurred = document . querySelectorAll ( '.blurred' ) ;
for ( let elem of blurred )
elem . classList . remove ( 'blurred' , 'json-ld-paywall-marker' , 'hidden@print' ) ;
2022-03-08 19:04:50 +01:00
} , 500 ) ;
2021-04-10 08:46:50 +02:00
}
2020-01-28 23:06:25 +01:00
}
2021-12-07 19:25:48 +01:00
else if ( matchDomain ( [ 'ksta.de' , 'rundschau-online.de' ] ) ) {
2023-08-17 19:23:57 +02:00
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div.dm-paywall-wrapper' ) ;
if ( paywall ) {
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
removeDOMElement ( paywall ) ;
try {
let json = JSON . parse ( json _script . text ) ;
if ( json && json [ '@graph' ] ) {
let json _data = json [ '@graph' ] . filter ( x => x . articleBody ) [ 0 ] ;
let url _json = json _data [ '@id' ] ;
if ( url _json && ! url _json . includes ( window . location . pathname ) )
refreshCurrentTab ( ) ;
let json _text = json _data . articleBody ;
let article = document . querySelector ( 'article' ) ;
if ( json _text && article ) {
let article _new = document . createElement ( 'p' ) ;
article _new . setAttribute ( 'class' , 'dm-paragraph my-8 dm-article-content-width' ) ;
article _new . innerText = json _text ;
article . appendChild ( article _new ) ;
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
2023-12-28 21:58:27 +01:00
} , 2000 ) ;
2024-04-07 10:31:08 +02:00
let banners = 'div.dm-slot' ;
hideDOMStyle ( banners ) ;
2021-12-07 19:25:48 +01:00
}
2023-02-04 09:00:36 +01:00
else if ( matchDomain ( 'kurier.at' ) ) {
2024-02-12 20:55:26 +01:00
let paywall = document . querySelector ( 'div#cfs-paywall-container' ) ;
2023-02-04 09:00:36 +01:00
if ( paywall ) {
2024-02-12 20:55:26 +01:00
removeDOMElement ( paywall ) ;
let div _hidden = document . querySelector ( 'div.paywall' ) ;
if ( div _hidden ) {
div _hidden . classList . remove ( 'paywall' ) ;
div _hidden . removeAttribute ( 'style' ) ;
}
2023-02-04 09:00:36 +01:00
}
2024-04-07 10:31:08 +02:00
let ads = 'div[data-outbrain]' ;
hideDOMStyle ( ads ) ;
2023-02-04 09:00:36 +01:00
}
2024-01-05 12:20:12 +01:00
else if ( matchDomain ( 'motorradonline.de' ) ) {
if ( window . location . pathname . endsWith ( '/amp/' ) )
ampToHtml ( ) ;
}
2023-10-12 08:50:37 +02:00
else if ( matchDomain ( [ 'mz.de' , 'volksstimme.de' ] ) ) {
let url = window . location . href ;
2023-12-06 19:19:00 +01:00
getGoogleWebcache ( url , 'div.fp-paywall' , '' , 'div[data-t-name="Article"]' ) ;
2023-10-12 08:50:37 +02:00
}
2022-12-02 13:36:27 +01:00
else if ( matchDomain ( [ 'noz.de' , 'shz.de' , 'svz.de' ] ) ) {
if ( window . location . pathname . endsWith ( '/amp' ) ) {
2022-04-19 21:37:22 +02:00
amp _unhide _access _hide ( '="NOT data.reduced"' , '="data.reduced"' , 'amp-ad, amp-embed, .ads-wrapper, #flying-carpet-wrapper' ) ;
2021-04-10 08:46:50 +02:00
} else {
2024-04-06 07:24:22 +02:00
let ads = 'div.nozmhn_ad' ;
hideDOMStyle ( ads ) ;
2021-04-10 08:46:50 +02:00
}
2019-10-05 14:08:57 +02:00
}
2022-08-17 19:10:58 +02:00
else if ( matchDomain ( 'nw.de' ) ) {
if ( ! window . location . pathname . endsWith ( '.amp.html' ) ) {
2024-02-12 19:58:01 +01:00
amp _redirect ( 'a[data-event-value="paywall-overlay-click"]' , '' , window . location . href . replace ( '.html' , '.amp.html' ) ) ;
2022-08-17 19:10:58 +02:00
} else {
2024-01-29 12:41:35 +01:00
amp _unhide _access _hide ( '="loggedIn AND hasAbo"' , '' , 'amp-ad, amp-embed, .banner' ) ;
2022-08-17 19:10:58 +02:00
}
}
2024-04-06 07:24:22 +02:00
else if ( matchDomain ( 'nwzonline.de' ) ) {
let ads = 'div.adslot' ;
hideDOMStyle ( ads ) ;
}
2024-04-01 09:35:20 +02:00
else if ( matchDomain ( [ 'nzz.ch' , 'themarket.ch' ] ) ) {
let fade = document . querySelectorAll ( '.nzzinteraction' ) ;
for ( let elem of fade )
elem . classList . remove ( 'nzzinteraction' ) ;
2024-04-06 07:24:22 +02:00
let ads = 'div.resor' ;
hideDOMStyle ( ads ) ;
2022-11-23 16:56:53 +01:00
}
2023-01-02 12:04:51 +01:00
else if ( matchDomain ( 'philomag.de' ) ) {
let paywall = document . querySelector ( 'div[id^="block-paywall"]' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
2023-01-28 11:10:24 +01:00
let json _text = json . articlebody . replace ( /%paywall%/g , '' ) . replace ( /(\\r)?\\n/g , '<br><br>' ) ;
2023-01-02 12:04:51 +01:00
let content = document . querySelector ( 'div.content-center > div.description' ) ;
if ( json _text && content ) {
content . innerHTML = '' ;
let article _new = document . createElement ( 'p' ) ;
article _new . innerText = json _text ;
content . appendChild ( article _new ) ;
}
}
}
}
}
2023-11-19 08:51:35 +01:00
else if ( matchDomain ( 'profil.at' ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall ) {
paywall . removeAttribute ( 'class' ) ;
paywall . removeAttribute ( 'style' ) ;
2024-04-07 10:31:08 +02:00
let fade = 'div#cfs-paywall-container' ;
hideDOMStyle ( fade ) ;
2023-11-19 08:51:35 +01:00
}
2024-04-07 10:31:08 +02:00
let overlay = 'div.consentOverlay' ;
hideDOMStyle ( overlay , 2 ) ;
2023-11-19 08:51:35 +01:00
}
2024-03-16 12:35:07 +01:00
else if ( matchDomain ( 'rhein-zeitung.de' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div[class$="board"]' ;
hideDOMStyle ( ads ) ;
2024-03-16 12:35:07 +01:00
}
2023-04-01 14:00:23 +02:00
else if ( matchDomain ( 'schwaebische.de' ) ) {
let url = window . location . href ;
2023-12-06 19:19:00 +01:00
let paywall _sel = 'div > div.sve-paywall-wrapper_overlay' ;
let paywall = document . querySelector ( paywall _sel ) ;
getGoogleWebcache ( url , paywall _sel , '' , 'div.article_body' ) ;
2023-04-01 14:00:23 +02:00
if ( paywall ) {
2023-11-02 18:33:03 +01:00
removeDOMElement ( paywall . parentNode ) ;
2023-12-06 19:19:00 +01:00
let body = document . querySelector ( 'body[style]' ) ;
2023-04-01 14:00:23 +02:00
if ( body )
body . removeAttribute ( 'style' ) ;
waitDOMAttribute ( 'body' , 'body' , 'style' , node => node . removeAttribute ( 'style' ) , true ) ;
}
2024-04-07 10:31:08 +02:00
let ads = 'div.fp-ad-placeholder' ;
hideDOMStyle ( ads ) ;
2023-04-01 14:00:23 +02:00
}
2023-11-03 08:11:08 +01:00
else if ( matchDomain ( 'schweizermonat.ch' ) ) {
if ( dompurify _loaded )
getJsonUrl ( 'div.entry-paywall-login' , '' , 'div.entry-main > div.entry__post-content' ) ;
}
2023-09-28 20:38:51 +02:00
else if ( matchDomain ( 'sn.at' ) ) {
let url = window . location . href ;
2023-12-06 19:19:00 +01:00
getGoogleWebcache ( url , 'div.article-sections__paywall' , '' , 'div.article-body-text' ) ;
2023-09-28 20:38:51 +02:00
}
2024-04-04 19:17:14 +02:00
else if ( matchDomain ( 'spektrum.de' ) ) {
let paywall = document . querySelector ( 'article.pw-premium' ) ;
if ( paywall )
paywall . classList . remove ( 'pw-premium' ) ;
}
2023-02-19 13:45:20 +01:00
else if ( matchDomain ( 'spiegel.de' ) ) {
let url = window . location . href ;
2024-01-14 11:37:30 +01:00
getArchive ( url , 'div[data-area="paywall"]' , '' , 'div[data-area="body"]' ) ;
2023-02-19 13:45:20 +01:00
}
2023-09-10 18:07:50 +02:00
else if ( matchDomain ( 'springermedizin.de' ) ) {
let paywall = document . querySelector ( 'div#pay-wall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = json . articleBody ;
let article = document . querySelector ( 'div > p.intro--paragraph' ) ;
if ( json _text && article ) {
let article _new = document . createElement ( 'p' ) ;
article _new . innerText = json _text ;
article . parentNode . replaceChild ( article _new , article ) ;
}
}
}
}
}
2024-01-10 16:28:49 +01:00
else if ( matchDomain ( [ 'stuttgarter-nachrichten.de' , 'stuttgarter-zeitung.de' , 'schwarzwaelder-bote.de' ] ) || matchDomain ( de _mhs _custom _domains ) ) {
2024-04-07 10:31:08 +02:00
let banners = 'div.mod-paywall, div.Billboard' ;
hideDOMStyle ( banners ) ;
2023-07-03 16:36:31 +02:00
}
2023-11-01 18:37:39 +01:00
else if ( matchDomain ( 'sueddeutsche.de' ) ) {
let url = window . location . href ;
2023-12-29 17:59:00 +01:00
if ( window . location . pathname . startsWith ( '/projekte/artikel/' ) ) {
2024-01-14 11:37:30 +01:00
getArchive ( url , 'div.offer-page' , '' , 'main' ) ;
2023-12-29 17:59:00 +01:00
} else {
2024-01-14 11:37:30 +01:00
getArchive ( url , 'p.sz-article-body__paragraph--reduced' , { rm _attrib : 'class' } , 'div[itemprop="articleBody"]' ) ;
2023-11-01 18:37:39 +01:00
}
2024-04-02 18:01:01 +02:00
let ads = 'er-ad-slot' ;
hideDOMStyle ( ads ) ;
2023-11-01 18:37:39 +01:00
}
2024-03-10 21:16:46 +01:00
else if ( matchDomain ( 'suedkurier.de' ) ) {
let url = window . location . href ;
getArchive ( url , 'aside.article-paywall' , '' , 'main > article' ) ;
}
2023-11-22 08:39:34 +01:00
else if ( matchDomain ( 'tagesspiegel.de' ) ) {
let url = window . location . href ;
2024-01-14 11:37:30 +01:00
if ( matchDomain ( 'www.tagesspiegel.de' ) ) {
getArchive ( url , 'div#paywal' , '' , 'div#story-elements' ) ;
} else if ( matchDomain ( 'interaktiv.tagesspiegel.de' ) ) {
let paywall = document . querySelector ( 'div#pw' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
2023-12-09 17:47:04 +01:00
let article = document . querySelector ( 'div.tslr-article > p' ) ;
if ( article )
article . firstChild . before ( archiveLink ( url ) ) ;
}
2023-11-22 08:39:34 +01:00
}
}
2023-11-23 12:20:31 +01:00
else if ( matchDomain ( 'tt.com' ) ) {
2024-04-07 10:31:08 +02:00
let paywall = document . querySelector ( 'div#piano-logwall' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let article = document . querySelector ( 'div[data-io-article-url]' ) ;
if ( article ) {
let json _script = document . querySelector ( 'script#tt-com-www-state' ) ;
if ( json _script ) {
try {
let json _articles = JSON . parse ( json _script . text ) . TT _COM _WWW _GLOBAL _STATE . articles ;
let json _article _id = json _articles . ids [ 0 ] ;
2024-04-09 17:07:48 +02:00
if ( ! json _article _id || ( json _article _id && ! window . location . pathname . includes ( json _article _id ) ) )
2024-04-07 10:31:08 +02:00
refreshCurrentTab ( ) ;
let parser = new DOMParser ( ) ;
let pars = json _articles . entities [ json _article _id ] . articleData . article . elements ;
for ( let par of pars ) {
let elem ;
if ( [ 'body' , 'subheadline1' ] . includes ( par . type ) ) {
if ( par . content ) {
let doc = parser . parseFromString ( '<p>' + DOMPurify . sanitize ( par . content , dompurify _options ) + '</p>' , 'text/html' ) ;
elem = doc . querySelector ( 'p' ) ;
if ( par . type === 'subheadline1' )
elem . style = 'font-weight: bold;' ;
}
2024-04-09 17:07:48 +02:00
} else if ( par . type = 'x-im/content-part' ) {
if ( par . elements ) {
elem = document . createElement ( 'p' ) ;
for ( let item of par . elements ) {
if ( item . content ) {
let sub _elem = document . createElement ( 'p' ) ;
sub _elem . innerText = parseHtmlEntities ( item . content ) ;
elem . appendChild ( sub _elem ) ;
}
}
}
2024-04-07 10:31:08 +02:00
} else if ( par . type . match ( /^x-im\// ) ) {
if ( par . url ) {
2024-04-07 10:39:17 +02:00
if ( par . url . startsWith ( 'https://twitter.com/' ) ) {
elem = document . createElement ( 'p' ) ;
let sub _elem = document . createElement ( 'a' ) ;
sub _elem . href = elem . innerText = par . url ;
sub _elem . target = '_blank' ;
elem . appendChild ( sub _elem ) ;
} else {
elem = document . createElement ( 'iframe' ) ;
elem . src = par . url ;
elem . style = 'height: ' + article . offsetWidth + 'px; width: ' + article . offsetWidth + 'px;' ;
}
2024-04-07 10:31:08 +02:00
}
}
if ( elem )
article . appendChild ( elem ) ;
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
let ads = 'div[class*="ads-container"], div.adblock-warning' ;
hideDOMStyle ( ads ) ;
2023-11-23 12:20:31 +01:00
}
2023-10-06 17:17:41 +02:00
else if ( matchDomain ( 'vn.at' ) ) {
if ( window . location . href . match ( /\.vn\.at\/.+\/\d{4}\// ) ) {
let paywall = document . querySelector ( 'div.paywalled-content' ) ;
if ( paywall ) {
csDoneOnce = true ;
let par = paywall . querySelector ( 'p' ) ;
if ( ! par ) {
refreshCurrentTab _bg ( ) ;
} else {
let lazy _images = document . querySelectorAll ( 'img[src^="data:image/"][lazy-src]' ) ;
for ( let elem of lazy _images ) {
elem . src = elem . getAttribute ( 'lazy-src' ) ;
}
}
} else
refreshCurrentTab _bg ( ) ;
}
}
2023-09-24 07:21:35 +02:00
else if ( matchDomain ( 'vol.at' ) ) {
if ( ! window . location . pathname . match ( /\/amp\/?$/ ) ) {
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div.vodl-region-article__premium-content' ) ;
if ( paywall && dompurify _loaded ) {
paywall . removeAttribute ( 'class' ) ;
if ( ! paywall . hasChildNodes ( ) ) {
let json _script = document . querySelector ( 'script#externalPostDataNode' ) ;
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text ) ;
let json _text = json . content . data . post . content ;
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div class="entry-content">' + DOMPurify . sanitize ( json _text ) + '</div>' , 'text/html' ) ;
let article _new = doc . querySelector ( 'div' ) ;
let hidden _images = article _new . querySelectorAll ( 'img[src^="/"][srcset]' ) ;
let json _domain = json . content . data . post . thumbnail . src . match ( /https:\/\/(www\.)?\w+\.at/ ) [ 0 ] ;
for ( let elem of hidden _images ) {
elem . src = elem . src . replace ( 'https://www.vol.at' , json _domain ) ;
elem . removeAttribute ( 'srcset' ) ;
}
let hidden _comments = document . querySelector ( 'div.vodl-region-article__content[hidden]' ) ;
if ( hidden _comments ) {
hidden _comments . removeAttribute ( 'hidden' ) ;
let blurred = hidden _comments . querySelector ( 'div.blur' ) ;
if ( blurred )
blurred . classList . remove ( 'blur' ) ;
}
let article = document . querySelector ( 'div.article-body' ) ;
if ( article ) {
article . innerHTML = '' ;
article . appendChild ( article _new ) ;
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
} , 500 ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div[id^="rm-adslot-"], div[id^="piano_rec"]' ;
hideDOMStyle ( ads ) ;
2023-09-24 07:21:35 +02:00
} else
ampToHtml ( ) ;
}
2023-11-15 11:52:34 +01:00
else if ( matchDomain ( 'welt.de' ) ) {
let url = window . location . href ;
2024-01-14 11:37:30 +01:00
getArchive ( url , 'div.contains_walled_content' , '' , 'article' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div[data-component="Outbrain"], div[class*="c-ad"]' ;
hideDOMStyle ( ads ) ;
2023-11-15 11:52:34 +01:00
}
2023-12-12 19:05:17 +01:00
else if ( matchDomain ( 'weser-kurier.de' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div.ad-wrapper, div.anyad' ;
hideDOMStyle ( ads ) ;
2023-12-12 19:05:17 +01:00
}
2024-01-16 17:08:16 +01:00
else if ( matchDomain ( 'wiwo.de' ) ) {
let url = window . location . href ;
getArchive ( url , 'div.o-paywall' , '' , 'article' ) ;
2024-04-07 10:31:08 +02:00
let banner = 'div.c-overscroller' ;
hideDOMStyle ( banner ) ;
2024-01-16 17:08:16 +01:00
}
2023-06-28 17:25:38 +02:00
else if ( matchDomain ( 'zeit.de' ) ) {
2023-09-30 13:28:40 +02:00
let url = window . location . href . split ( /[#\?]/ ) [ 0 ] ;
2024-01-15 18:46:33 +01:00
if ( document . querySelector ( 'head > link[rel="next"]' ) )
url += '/komplettansicht' ;
getArchive ( url , 'aside#paywall' , '' , 'article' ) ;
2023-06-28 17:25:38 +02:00
}
2024-03-06 22:02:54 +01:00
else if ( matchDomain ( de _funke _medien _domains ) ) {
let url = window . location . href ;
getArchive ( url , 'div#paywall-container' , '' , 'article' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'aside.ad-slot-wrapper' ;
hideDOMStyle ( ads ) ;
2024-03-06 22:02:54 +01:00
}
2023-02-25 14:20:33 +01:00
else if ( matchDomain ( de _lv _domains ) ) {
2024-01-25 18:04:30 +01:00
let paywall = document . querySelector ( 'div[id^="paymentprocess-"]' ) ;
if ( paywall ) {
let intro = document . querySelector ( 'div.m-paywall__textFadeOut' ) ;
removeDOMElement ( paywall , intro ) ;
2023-02-25 14:20:33 +01:00
let div _hidden = document . querySelector ( 'div.paywall-full-content[style]' ) ;
if ( div _hidden ) {
div _hidden . removeAttribute ( 'class' ) ;
div _hidden . removeAttribute ( 'style' ) ;
}
}
2024-04-07 10:31:08 +02:00
let ads = 'div.adZone' ;
hideDOMStyle ( ads ) ;
2023-02-25 14:20:33 +01:00
}
2023-09-30 13:28:40 +02:00
else if ( matchDomain ( de _madsack _domains ) || document . querySelector ( 'head > link[href*=".rndtech.de/"]' ) ) {
2023-01-31 22:36:41 +01:00
// plus code in contentScript_once_var.js (timing)
2023-01-14 17:35:16 +01:00
if ( ! window . location . search . startsWith ( '?outputType=valid_amp' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div[class^="Adstyled__AdWrapper"]' ;
hideDOMStyle ( ads ) ;
2022-08-25 22:12:16 +02:00
} else {
2022-08-26 19:50:25 +02:00
ampToHtml ( ) ;
2021-04-24 09:37:20 +02:00
}
}
2024-03-08 17:57:17 +01:00
else if ( matchDomain ( de _motor _presse _domains ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div#ads-container, div.va-sponsored, div.mps_markAd' ;
hideDOMStyle ( ads ) ;
2024-03-08 17:57:17 +01:00
}
2024-04-09 17:07:48 +02:00
else if ( matchDomain ( 'ovb-online.de' ) || matchDomain ( [ 'bgland24.de' , 'chiemgau24.de' , 'innsalzach24.de' , 'mangfall24.de' , 'rosenheim24.de' , 'wasserburg24.de' ] ) ) {
let ads = 'div.id-TBeepSlot, div[data-id-advertdfpconf]' ;
hideDOMStyle ( ads ) ;
}
2023-08-24 12:39:56 +02:00
else if ( matchDomain ( 'ruhrnachrichten.de' ) || document . querySelector ( 'a.mgw-logo[href^="https://mgw.de"]' ) ) {
2023-12-20 09:06:44 +01:00
let pathname = window . location . pathname ;
let article _id ;
if ( pathname . includes ( '-p-' ) )
article _id = pathname . split ( '-p-' ) [ 1 ] . split ( '/' ) [ 0 ] ;
2023-12-19 08:50:29 +01:00
if ( dompurify _loaded )
2023-12-20 18:16:00 +01:00
getJsonUrl ( 'body.is_plus_article' , { rm _class : 'is_plus_article' } , 'article' , { art _append : 1 , art _hold : 1 , art _class : 'article__content' } , article _id ) ;
2023-07-24 18:33:33 +02:00
if ( ! matchDomain ( 'ruhrnachrichten.de' ) ) {
window . setTimeout ( function ( ) {
let push = document . querySelector ( 'div.cleverpush-bell' ) ;
removeDOMElement ( push ) ;
} , 1000 ) ;
}
}
2023-07-21 10:41:57 +02:00
else if ( matchDomain ( de _vrm _domains ) || matchDomain ( de _vrm _custom _domains ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div.adSlot, div.loadingBanner' ;
hideDOMStyle ( ads ) ;
2023-02-25 14:20:33 +01:00
}
2024-02-13 12:14:07 +01:00
else if ( matchDomain ( ch _media _domains ) || document . querySelector ( 'head > link[href*="/assets.static-chmedia.ch/"]' ) ) {
2022-11-23 16:56:53 +01:00
let infobox _body = document . querySelector ( 'div.infobox__body' ) ;
if ( infobox _body )
infobox _body . removeAttribute ( 'class' ) ;
2023-08-04 19:14:55 +02:00
let paywall = document . querySelector ( 'div.dynamic-regwall' ) ;
removeDOMElement ( paywall ) ;
2022-11-23 16:56:53 +01:00
}
2021-12-22 19:03:54 +01:00
else
csDone = true ;
2022-11-20 16:09:38 +01:00
} else if ( window . location . hostname . match ( /\.(dk|fi|se)$/ ) ) { //denmark/finland/sweden
2021-12-22 19:03:54 +01:00
2024-02-27 21:06:28 +01:00
if ( matchDomain ( 'etc.se' ) ) {
2022-11-19 10:18:16 +01:00
let paywall = document . querySelector ( 'div.paywalled' ) ;
if ( paywall ) {
paywall . removeAttribute ( 'class' ) ;
let gradient = document . querySelector ( 'div.bg-gradient-white' ) ;
if ( gradient )
gradient . removeAttribute ( 'class' ) ;
2024-03-20 18:24:26 +01:00
let footer = document . querySelector ( 'section > footer' ) ;
2022-11-19 10:18:16 +01:00
removeDOMElement ( footer . parentNode ) ;
}
2024-04-07 10:31:08 +02:00
let ads = 'div[class$="-ad"]' ;
hideDOMStyle ( ads ) ;
2022-11-19 10:18:16 +01:00
let video _iframes = document . querySelectorAll ( 'div.embed-block > iframe[width][height]' ) ;
for ( let elem of video _iframes ) {
if ( elem . width > 1000 ) {
2023-12-21 17:28:46 +01:00
let ratio = elem . width / ( mobile ? 320 : 640 ) ;
2022-11-19 10:18:16 +01:00
elem . width = elem . width / ratio ;
elem . height = elem . height / ratio ;
}
}
}
2022-08-01 21:25:50 +02:00
else if ( matchDomain ( 'suomensotilas.fi' ) ) {
let obscured = document . querySelector ( 'div.epfl-pw-obscured' ) ;
if ( obscured )
obscured . classList . remove ( 'epfl-pw-obscured' ) ;
}
2021-04-10 08:46:50 +02:00
else
2021-04-25 13:45:36 +02:00
csDone = true ;
2021-04-10 08:46:50 +02:00
2022-12-31 11:47:13 +01:00
} else if ( window . location . hostname . match ( /\.(es|pt|cat)$/ ) || matchDomain ( [ 'diariocordoba.com' , 'diariovasco.com' , 'elconfidencial.com' , 'elcorreo.com' , 'elespanol.com' , 'elpais.com' , 'elperiodico.com' , 'elperiodicodearagon.com' , 'elperiodicoextremadura.com' , 'elperiodicomediterraneo.com' , 'emporda.info' , 'expansion.com' , 'larioja.com' , 'lavanguardia.com' , 'levante-emv.com' , 'marca.com' , 'mundodeportivo.com' , 'politicaexterior.com' ] ) ) { //spain/portugal
2021-04-10 08:46:50 +02:00
2022-08-15 18:05:49 +02:00
if ( matchDomain ( [ 'ara.cat' , 'arabalears.cat' ] ) ) {
2022-05-22 19:59:59 +02:00
if ( ! window . location . pathname . endsWith ( '.amp.html' ) ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div.paywall' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div.advertising' ;
hideDOMStyle ( ads ) ;
2022-05-22 19:59:59 +02:00
}
}
2023-07-11 08:31:13 +02:00
else if ( matchDomain ( [ 'cmjornal.pt' , 'record.pt' , 'sabado.pt' ] ) ) {
2023-09-30 13:08:32 +02:00
if ( ! window . location . pathname . includes ( '/amp/' ) ) {
amp _redirect ( '.bloqueio_exclusivos, .container_assinatura, .bloco_bloqueio' ) ;
2021-04-10 08:46:50 +02:00
} else {
2023-07-11 08:31:13 +02:00
amp _unhide _access _hide ( '="subscriber"' , '="NOT subscriber"' , 'amp-ad, amp-embed, amp-consent, .detalheAds, .exclusivos_bar' ) ;
2021-04-10 08:46:50 +02:00
let amp _links = document . querySelectorAll ( 'a[href^="https://www-cmjornal-pt.cdn.ampproject.org/c/s/"]' ) ;
for ( let amp _link of amp _links )
amp _link . href = amp _link . href . replace ( 'www-cmjornal-pt.cdn.ampproject.org/c/s/' , '' ) ;
}
2020-01-28 23:06:25 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'elconfidencial.com' ) ) {
let premium = document . querySelector ( 'div.newsType__content--closed' ) ;
if ( premium )
premium . classList . remove ( 'newsType__content--closed' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div[id^="mega_"], div[id^="roba_"]' ;
hideDOMStyle ( ads ) ;
2020-07-09 19:52:37 +02:00
}
2021-12-12 18:32:28 +01:00
else if ( matchDomain ( 'eldiario.es' ) ) {
if ( window . location . pathname . endsWith ( '.amp.html' ) ) {
2023-12-25 12:20:30 +01:00
amp _unhide _access _hide ( '^="access"' , '="NOT access"' ) ;
2022-01-18 20:16:52 +01:00
} else {
2023-12-25 12:20:30 +01:00
amp _redirect ( 'aside.paywall' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div.edi-advertising, div.header-ad' ;
hideDOMStyle ( ads ) ;
2021-12-12 18:32:28 +01:00
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'elespanol.com' ) ) {
2021-12-12 18:32:28 +01:00
if ( window . location . pathname . endsWith ( '.amp.html' ) ) {
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
} else {
2022-08-13 07:51:42 +02:00
let paywall = document . querySelector ( 'div.full-suscriptor-container' ) ;
2023-09-03 07:20:22 +02:00
removeDOMElement ( paywall ) ;
2024-04-07 10:31:08 +02:00
let ads = '[id*="superior"], [class*="adv"]' ;
hideDOMStyle ( ads ) ;
2021-12-12 18:32:28 +01:00
}
2020-01-28 23:06:25 +01:00
}
2021-12-27 17:22:54 +01:00
else if ( matchDomain ( es _unidad _domains ) ) {
2022-08-04 07:57:25 +02:00
if ( ! window . location . hostname . match ( /^amp(-[a-z]{2})?\./ ) ) {
2024-02-27 18:10:17 +01:00
let url = window . location . href ;
2024-03-07 12:18:20 +01:00
if ( ! window . location . pathname . startsWith ( '/mejores-colegios' ) ) {
amp _redirect ( 'div.ue-c-article__premium' , '' , url . replace ( '/www.' , '/amp.' ) ) ;
} else if ( matchDomain ( 'elmundo.es' ) ) {
let paywall = document . querySelector ( 'div.ue-c-article__premium' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
header _nofix ( document . querySelector ( 'main p' ) ) ;
} else {
paywall = document . querySelector ( 'div.ue-c-paywall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let article = document . querySelector ( 'table' ) ;
if ( article )
article . before ( googleWebcacheLink ( url ) ) ;
}
}
}
2021-04-10 08:46:50 +02:00
} else {
2021-11-30 17:36:15 +01:00
amp _unhide _access _hide ( '="authorized=true"' , '="authorized!=true"' ) ;
2024-02-27 18:10:17 +01:00
amp _unhide _subscr _section ( 'amp-ad, amp-embed, div.advertising, div.ue-c-ad' ) ;
2021-04-10 08:46:50 +02:00
}
}
else if ( matchDomain ( 'elpais.com' ) ) {
2022-04-21 19:52:47 +02:00
if ( window . location . pathname . endsWith ( '.amp.html' ) || window . location . search . match ( /(\?|&)outputType=amp/ ) ) {
amp _unhide _access _hide ( '="vip"], [amp-access="success"' , '="NOT vip"], [amp-access="NOT success"' ) ;
2021-04-10 08:46:50 +02:00
} else {
2023-11-01 18:37:39 +01:00
let paywall = document . querySelector ( 'div#ctn_freemium_article, div#ctn_premium_article' ) ;
removeDOMElement ( paywall ) ;
2021-04-10 08:46:50 +02:00
}
2019-12-05 21:32:20 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( es _grupo _vocento _domains ) ) {
2024-02-15 17:33:36 +01:00
let paywall _sel = 'div.voc-paywall, div.container-wall-exclusive__content-login' ;
2023-09-30 13:08:32 +02:00
let paywall = document . querySelector ( paywall _sel ) ;
2022-04-29 17:58:48 +02:00
if ( ! window . location . pathname . endsWith ( '_amp.html' ) ) {
2023-09-30 13:08:32 +02:00
if ( ! matchDomain ( [ 'eldiariomontanes.es' ] ) ) {
amp _redirect ( paywall _sel , '' , window . location . pathname . replace ( '.html' , '_amp.html' ) ) ;
2024-02-15 17:33:36 +01:00
} else {
if ( paywall ) {
let url = window . location . href ;
paywall . before ( archiveLink ( url ) ) ;
removeDOMElement ( paywall ) ;
}
2022-08-15 18:05:49 +02:00
}
2024-04-04 19:02:20 +02:00
let banners = 'div.voc-advertising, div.voc-ob-wrapper, div.voc-discounts, div.ev-em-modal, span.mega-superior, div.v-adv' ;
hideDOMStyle ( banners ) ;
2022-04-29 17:58:48 +02:00
} else {
2024-02-15 17:33:36 +01:00
amp _unhide _access _hide ( '="result=\'ALLOW_ACCESS\'"' , '="result!=\'ALLOW_ACCESS\'"' , 'amp-ad, amp-embed, div.v-adv' ) ;
2022-08-15 18:05:49 +02:00
let body _top = document . querySelector ( 'body#top' ) ;
if ( body _top )
body _top . removeAttribute ( 'id' ) ;
2021-04-10 08:46:50 +02:00
}
2020-01-28 23:06:25 +01:00
}
2022-08-21 08:59:42 +02:00
else if ( matchDomain ( es _epiberica _domains ) || matchDomain ( es _epiberica _custom _domains ) ) {
2021-04-28 21:45:57 +02:00
if ( window . location . href . includes ( '.amp.html' ) ) {
2022-03-28 18:45:51 +02:00
let truncated = document . querySelector ( 'div.article-body--truncated' ) ;
if ( truncated )
truncated . classList . remove ( 'article-body--truncated' ) ;
2024-02-05 13:41:26 +01:00
amp _unhide _access _hide ( '="NOT access"], [amp-access="FALSE"' , '="access"' , 'amp-ad, amp-embed, span.ad-signature' ) ;
2023-11-24 12:00:33 +01:00
} else if ( [ 'amp.elperiodico.com' , 'amp.epe.es' ] . includes ( window . location . hostname ) ) {
2022-04-01 16:04:06 +02:00
amp _unhide _access _hide ( '="loggedIn"' , '="NOT loggedIn"' , 'amp-ad, amp-embed, amp-next-page' ) ;
2023-11-24 12:00:33 +01:00
let amp _images = document . querySelectorAll ( 'div > amp-img[src]' ) ;
for ( let amp _image of amp _images ) {
let elem = document . createElement ( 'img' ) ;
elem . src = amp _image . getAttribute ( 'src' ) ;
2024-02-22 16:40:34 +01:00
elem . style = 'width: 75%; margin: 0px 50px;' ;
2023-11-24 12:00:33 +01:00
amp _image . parentNode . replaceChild ( elem , amp _image ) ;
}
2022-03-01 18:50:33 +01:00
} else {
2024-02-05 13:41:26 +01:00
let paywall = document . querySelector ( 'div.ft-helper-closenews' ) ;
if ( paywall )
paywall . removeAttribute ( 'class' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div.commercial-up-full__wrapper, aside.ft-ad, div[class^="_mo_recs"]' ;
hideDOMStyle ( ads ) ;
2021-04-28 21:45:57 +02:00
}
2020-01-28 23:06:25 +01:00
}
2024-02-04 19:00:25 +01:00
else if ( matchDomain ( 'expresso.pt' ) ) {
if ( ! window . location . hostname . startsWith ( 'amp.' ) ) {
let article _sel = 'div.article-content' ;
let paywall = document . querySelector ( article _sel + ' > div.g-premium-blocker' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let article = document . querySelector ( article _sel ) ;
if ( article ) {
let url = window . location . href . split ( /[#\?]/ ) [ 0 ] ;
fetch ( url )
. then ( response => {
if ( response . ok ) {
response . text ( ) . then ( html => {
if ( html . match ( /window\.__INITIAL_DATA__\s?=\s?/ ) ) {
try {
article . innerHTML = '' ;
let json = JSON . parse ( html . split ( /window\.__INITIAL_DATA__\s?=\s?/ ) [ 1 ] . split ( ';window.' ) [ 0 ] . replace ( /":undefined([,}])/g , "\":\"undefined\"$1" ) ) . nodes ;
2024-03-18 13:35:34 +01:00
let pars = [ ] ;
2024-02-04 19:00:25 +01:00
for ( let elem in json ) {
let item = json [ elem ] ;
2024-03-18 13:35:34 +01:00
if ( item . type === 'Layout' ) {
for ( let elem of item . nodes ) {
if ( elem . type === 'MainBody' )
pars = elem . nodes [ 0 ] . data . content . contents ;
}
2024-02-04 19:00:25 +01:00
break ;
}
}
let parser = new DOMParser ( ) ;
for ( let par of pars ) {
let par _new ;
if ( par . html ) {
2024-02-05 13:41:26 +01:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( par . html , dompurify _options ) + '</div>' , 'text/html' ) ;
2024-02-04 19:00:25 +01:00
par _new = doc . querySelector ( 'div' ) ;
} else if ( par . type === 'PICTURE' ) {
if ( par . urlOriginal ) {
par _new = document . createElement ( 'figure' ) ;
let img = document . createElement ( 'img' ) ;
img . src = par . urlOriginal ;
img . style = 'width:100%' ;
par _new . appendChild ( img ) ;
if ( par . caption ) {
let caption = document . createElement ( 'p' ) ;
caption . innerText = par . caption ;
par _new . appendChild ( caption ) ;
}
}
} else if ( par . link && par . title ) {
if ( par . contents ) {
par _new = document . createElement ( 'div' ) ;
for ( let elem of par . contents ) {
let elem _new ;
if ( elem . html ) {
2024-02-05 13:41:26 +01:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( elem . html , dompurify _options ) + '</div>' , 'text/html' ) ;
2024-02-04 19:00:25 +01:00
elem _new = doc . querySelector ( 'div' ) ;
} else if ( elem . urlOriginal ) {
elem _new = document . createElement ( 'figure' ) ;
let img = document . createElement ( 'img' ) ;
img . src = elem . urlOriginal ;
img . style = 'width:100%' ;
elem _new . appendChild ( img ) ;
if ( elem . caption ) {
let caption = document . createElement ( 'p' ) ;
caption . innerText = elem . caption ;
elem _new . appendChild ( caption ) ;
}
}
if ( elem _new )
par _new . appendChild ( elem _new ) ;
}
} else {
par _new = document . createElement ( 'p' ) ;
let art _link = document . createElement ( 'a' ) ;
art _link . innerText = par . title ;
art _link . href = par . link ;
par _new . appendChild ( art _link ) ;
}
}
if ( par _new )
article . appendChild ( par _new ) ;
else
console . log ( par ) ;
}
} catch ( err ) {
console . log ( err ) ;
}
}
} ) ;
}
} ) . catch ( function ( err ) {
false ;
} ) ;
}
}
} else
ampToHtml ( ) ;
}
2022-12-31 11:47:13 +01:00
else if ( matchDomain ( [ 'lavanguardia.com' , 'mundodeportivo.com' ] ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'span.content-ad, span.hidden-ad, span.ad-unit, div.ad-div' ;
hideDOMStyle ( ads ) ;
2022-11-22 17:25:01 +01:00
}
2024-03-12 12:05:27 +01:00
else if ( matchDomain ( 'observador.pt' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div.obs-ad-placeholder' ;
hideDOMStyle ( ads ) ;
2024-03-12 12:05:27 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'politicaexterior.com' ) ) {
let paywall = document . querySelector ( 'div[class^="paywall-"]' ) ;
if ( paywall ) {
let article = document . querySelector ( 'div.entry-content-text' ) ;
2023-04-01 14:00:23 +02:00
let json = document . querySelector ( 'script[type="application/ld+json"]:not([class])' ) ;
2021-04-10 08:46:50 +02:00
if ( json ) {
2021-08-17 18:37:06 +02:00
let json _text = JSON . parse ( json . text ) . description . replace ( /&nbsp;/g , '' ) ;
2021-04-10 08:46:50 +02:00
let article _new = document . createElement ( 'div' ) ;
article _new . setAttribute ( 'class' , 'entry-content-text' ) ;
article _new . innerText = '\r\n' + json _text ;
article . parentNode . replaceChild ( article _new , article ) ;
}
removeDOMElement ( paywall ) ;
}
2020-01-05 16:31:22 +01:00
}
2021-04-10 08:46:50 +02:00
else
2021-04-25 13:45:36 +02:00
csDone = true ;
2020-01-05 17:08:07 +01:00
2024-03-15 08:40:35 +01:00
} else if ( ( window . location . hostname . endsWith ( '.fr' ) && ! matchDomain ( [ 'lemagit.fr' ] ) ) || matchDomain ( [ 'connaissancedesarts.com' , 'journaldunet.com' , 'la-croix.com' , 'legrandcontinent.eu' , 'lesinrocks.com' , 'loeildelaphotographie.com' , 'marianne.net' , 'nouvelobs.com' , 'parismatch.com' , 'pourleco.com' , 'science-et-vie.com' ] . concat ( fr _groupe _nice _matin _domains ) ) ) { //france
2021-04-10 08:46:50 +02:00
if ( matchDomain ( 'alternatives-economiques.fr' ) ) {
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( '#temp-paywall' ) ;
removeDOMElement ( paywall ) ;
let data _ae _poool = document . querySelector ( 'div[data-ae-poool]' ) ;
if ( data _ae _poool )
data _ae _poool . removeAttribute ( 'style' ) ;
2022-03-08 19:04:50 +01:00
} , 500 ) ;
2020-01-05 17:16:32 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'atlantico.fr' ) ) {
2021-06-16 21:39:14 +02:00
let paywall = document . querySelector ( 'div.markup[class*="Paywall"]' ) ;
2021-04-10 08:46:50 +02:00
if ( paywall )
2021-06-09 20:30:06 +02:00
paywall . setAttribute ( 'class' , 'markup' ) ;
2020-01-05 17:23:28 +01:00
}
2022-09-02 08:27:19 +02:00
else if ( matchDomain ( 'autoplus.fr' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div.placeholder-pub_dfp' ;
hideDOMStyle ( ads ) ;
2022-09-02 08:27:19 +02:00
}
2024-04-02 18:01:01 +02:00
else if ( matchDomain ( 'capital.fr' ) ) {
2024-04-06 07:24:22 +02:00
let videos = document . querySelectorAll ( 'div > div#prisma-player-leader[data-ads-core*="Dailymotion"]' ) ;
for ( let video of videos ) {
try {
let json = JSON . parse ( video . getAttribute ( 'data-ads-core' ) ) ;
if ( json && json . playerVideoId ) {
let iframe = document . createElement ( 'iframe' ) ;
iframe . src = 'https://www.dailymotion.com/embed/video/' + json . playerVideoId ;
iframe . style = 'height: ' + video . offsetHeight + 'px; width: ' + video . offsetWidth + 'px;' ;
video . parentNode . replaceChild ( iframe , video ) ;
}
} catch ( err ) {
console . log ( err ) ;
}
}
2024-04-02 18:01:01 +02:00
let ads = 'div.containerAds, div.ads-introText, div.outbrain-ads' ;
hideDOMStyle ( ads ) ;
}
2023-03-14 17:00:17 +01:00
else if ( matchDomain ( [ 'challenges.fr' , 'sciencesetavenir.fr' ] ) ) {
2021-12-12 11:25:09 +01:00
if ( window . location . pathname . endsWith ( '.amp' ) ) {
amp _unhide _access _hide ( '="paywall.access OR cha.access"' , '="NOT (paywall.access OR cha.access)"' ) ;
} else {
let content = document . querySelectorAll ( '.user-paying-content' ) ;
2022-01-18 20:16:52 +01:00
for ( let elem of content ) {
2021-12-12 11:25:09 +01:00
elem . classList . remove ( 'user-paying-content' ) ;
2022-01-18 20:16:52 +01:00
elem . removeAttribute ( 'hidden' ) ;
}
2021-12-12 11:25:09 +01:00
let paywall = document . querySelector ( '.temp-paywall' ) ;
removeDOMElement ( paywall ) ;
2024-04-07 10:31:08 +02:00
let amorce = 'div.amorce.manual' ;
let ads = 'div[class^="pub-container"], div[id^="moneytag-"]' ;
hideDOMStyle ( amorce + ', ' + ads ) ;
2021-12-12 11:25:09 +01:00
}
2021-04-30 17:25:41 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'charliehebdo.fr' ) ) {
window . setTimeout ( function ( ) {
let paywalled _content = document . querySelector ( 'div.ch-paywalled-content' ) ;
if ( paywalled _content )
paywalled _content . removeAttribute ( 'style' ) ;
let poool _widget = document . querySelector ( 'div#poool-widget' ) ;
removeDOMElement ( poool _widget ) ;
2022-03-08 19:04:50 +01:00
} , 500 ) ;
2021-04-12 18:03:12 +02:00
}
2023-08-20 07:27:56 +02:00
else if ( matchDomain ( 'cieletespace.fr' ) ) {
let url = window . location . href ;
2023-12-06 19:19:00 +01:00
getGoogleWebcache ( url , 'div.article-content__subscribe' , '' , 'div.article-content' ) ;
2023-08-20 07:27:56 +02:00
}
2021-10-24 19:01:46 +02:00
else if ( matchDomain ( 'elle.fr' ) ) {
2021-12-12 11:25:09 +01:00
if ( window . location . hostname . startsWith ( 'amp.' ) ) {
amp _unhide _access _hide ( '="poool.access OR cmi_premium.access"' ) ;
} else {
let hidden _images = document . querySelectorAll ( 'img[src^="data:image/"][data-src]' ) ;
for ( let hidden _image of hidden _images )
hidden _image . setAttribute ( 'src' , hidden _image . getAttribute ( 'data-src' ) ) ;
let subscription _bar = document . querySelector ( '.tc-subscription-bar' ) ;
removeDOMElement ( subscription _bar ) ;
}
2024-04-07 10:31:08 +02:00
let ads = 'div[class*="--placeholder"]' ;
hideDOMStyle ( ads ) ;
2021-10-24 19:01:46 +02:00
}
2022-05-27 15:11:37 +02:00
else if ( matchDomain ( fr _groupe _la _depeche _domains ) ) {
if ( window . location . pathname . startsWith ( '/amp/' ) ) {
2021-11-30 17:36:15 +01:00
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
2021-04-30 17:25:41 +02:00
} else {
let paywall = document . querySelector ( 'div.paywall' ) ;
2023-09-30 13:08:32 +02:00
let amphtml = document . querySelector ( 'head > link[rel="amphtml"]' ) ;
2023-01-23 08:17:27 +01:00
if ( paywall ) {
2021-04-30 17:25:41 +02:00
removeDOMElement ( paywall ) ;
2023-01-23 08:17:27 +01:00
if ( amphtml )
2023-09-30 13:08:32 +02:00
amp _redirect _not _loop ( amphtml ) ;
2023-01-23 08:17:27 +01:00
else {
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
2023-09-30 13:08:32 +02:00
try {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
2023-09-30 13:28:40 +02:00
if ( json [ 0 ] )
json = json [ 0 ] ;
2023-09-30 13:08:32 +02:00
let json _text = parseHtmlEntities ( json . articleBody ) ;
let content = document . querySelector ( 'div.article-full__body-content' ) ;
if ( json _text && content ) {
content . innerHTML = '' ;
let article _new = document . createElement ( 'p' ) ;
article _new . innerText = json _text ;
content . appendChild ( article _new ) ;
content . removeAttribute ( 'style' ) ;
content . removeAttribute ( 'data-state' ) ;
}
2023-01-23 08:17:27 +01:00
}
2023-09-30 13:08:32 +02:00
} catch ( err ) {
console . log ( err ) ;
2023-01-23 08:17:27 +01:00
}
}
}
2021-04-30 17:25:41 +02:00
}
}
}
2022-05-27 15:11:37 +02:00
else if ( matchDomain ( fr _groupe _nice _matin _domains ) ) {
if ( window . location . pathname . startsWith ( '/amp/' ) ) {
2021-12-31 11:50:38 +01:00
amp _unhide _access _hide ( '="access"' , '="NOT access"' , 'amp-ad, amp-embed' ) ;
} else {
let paywall = document . querySelector ( 'div#article-teaser' ) ;
if ( paywall )
paywall . removeAttribute ( 'id' ) ;
}
2024-04-07 10:31:08 +02:00
let ads = 'div[class^="ad-slot-"], div#poool-widget-content, div[class*="Rhoo"]' ;
hideDOMStyle ( ads ) ;
2021-12-31 11:50:38 +01:00
}
2022-10-22 11:24:37 +02:00
else if ( matchDomain ( 'humanite.fr' ) ) {
2024-02-20 17:45:53 +01:00
let paywall = document . querySelector ( 'div.single__categories svg' ) ;
if ( paywall && dompurify _loaded ) {
2024-03-29 12:38:44 +01:00
csDoneOnce = true ;
let url = window . location . href ;
let url _cache = 'https://webcache.googleusercontent.com/search?q=cache:' + url . split ( /[#\?]/ ) [ 0 ] ;
replaceDomElementExt ( url _cache , true , false , 'div.rich-text > div.gs-row' ) ;
2022-10-22 11:24:37 +02:00
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'journaldunet.com' ) ) {
2023-12-02 17:23:58 +01:00
let reg _wall = document . querySelector ( 'div.reg_wall' ) ;
2021-04-10 08:46:50 +02:00
removeDOMElement ( reg _wall ) ;
2023-12-02 17:23:58 +01:00
let entry _reg _wall = document . querySelector ( 'div.entry_reg_wall[style]' ) ;
if ( entry _reg _wall )
2021-04-10 08:46:50 +02:00
entry _reg _wall . removeAttribute ( 'style' ) ;
2020-01-05 18:04:40 +01:00
}
2021-04-12 18:03:12 +02:00
else if ( matchDomain ( 'la-croix.com' ) ) {
2021-04-10 08:46:50 +02:00
let url = window . location . href ;
if ( ! url . includes ( 'la-croix.com/amp/' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div[class^="ads-wrapper-"], div#poool-widget' ;
hideDOMStyle ( ads ) ;
2021-04-10 08:46:50 +02:00
} else {
2024-04-07 10:31:08 +02:00
let paywall _block = '#paywall_block' ;
let ads = 'amp-ad, amp-embed' ;
hideDOMStyle ( paywall _block + ', ' + ads ) ;
2021-04-10 08:46:50 +02:00
}
2020-01-05 18:04:40 +01:00
}
2021-04-30 17:25:41 +02:00
else if ( matchDomain ( 'lanouvellerepublique.fr' ) ) {
let alert _didacticiel = document . querySelector ( 'div.alert-didacticiel' ) ;
let loading = document . querySelectorAll ( 'span.loading' ) ;
removeDOMElement ( alert _didacticiel , ... loading ) ;
}
2023-01-04 18:58:20 +01:00
else if ( matchDomain ( 'lecourrierdesstrateges.fr' ) ) {
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div.jpw-truncate-btn' ) ;
2023-05-08 20:05:06 +02:00
if ( paywall && dompurify _loaded ) {
2023-01-04 18:58:20 +01:00
removeDOMElement ( paywall ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = json . articleBody ;
let content = document . querySelector ( 'div.content-inner' ) ;
if ( json _text && content ) {
let parser = new DOMParser ( ) ;
2023-05-08 20:05:06 +02:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( json _text ) + '</div>' , 'text/html' ) ;
2023-01-04 18:58:20 +01:00
let content _new = doc . querySelector ( 'div' ) ;
content . parentNode . replaceChild ( content _new , content ) ;
let hidden _images = document . querySelectorAll ( 'img[src][srcset]' ) ;
for ( let elem of hidden _images )
elem . removeAttribute ( 'srcset' ) ;
let entry _content = document . querySelector ( 'div.entry-content[style]' ) ;
if ( entry _content )
entry _content . removeAttribute ( 'style' ) ;
}
}
}
}
} , 500 ) ;
}
2023-04-02 20:25:38 +02:00
else if ( matchDomain ( 'legrandcontinent.eu' ) ) {
let paywall = document . querySelector ( 'body.paywall, body.pw, body.softwall' ) ;
if ( paywall )
paywall . classList . remove ( 'paywall' , 'pw' , 'softwall' ) ;
2023-04-03 17:52:09 +02:00
let banners = document . querySelectorAll ( 'div#fix-pw, div.disposableBanner' ) ;
2023-04-02 20:25:38 +02:00
removeDOMElement ( ... banners ) ;
}
2022-11-10 08:44:10 +01:00
else if ( matchDomain ( [ 'lejdd.fr' , 'parismatch.com' , 'public.fr' ] ) ) {
2024-04-07 10:31:08 +02:00
let banners = '#poool-container, #poool-widget-content, #poool-widget, .forbidden' ;
let ads = 'div[class^="lmn-"], div.premium-hidden, div.p-aside--placeholder' ;
hideDOMStyle ( banners + ', ' + ads ) ;
2021-04-30 17:25:41 +02:00
let bottom _hide = document . querySelector ( '.cnt[data-poool-mode="hide"]' ) ;
if ( bottom _hide ) {
bottom _hide . removeAttribute ( 'data-poool-mode' ) ;
bottom _hide . removeAttribute ( 'style' ) ;
2021-04-10 08:46:50 +02:00
}
2020-01-13 22:23:03 +01:00
}
2024-03-23 12:26:54 +01:00
else if ( matchDomain ( 'lemonde.fr' ) ) {
2024-03-27 08:58:00 +01:00
let paywall _sel = 'section.paywall' ;
let paywall = document . querySelector ( paywall _sel ) ;
2024-03-23 12:26:54 +01:00
if ( paywall ) {
2024-03-27 08:58:00 +01:00
let article _sel = 'article' ;
let figure = document . querySelector ( 'figure.article__media' ) ;
2024-04-04 19:02:20 +02:00
func _post = function ( ) {
if ( figure ) {
2024-04-09 17:07:48 +02:00
let figure _new = document . querySelector ( 'article figure' ) ;
2024-03-27 08:58:00 +01:00
let article = document . querySelector ( article _sel ) ;
if ( ! figure _new && article )
article . firstChild . before ( figure ) ;
}
2024-04-04 19:02:20 +02:00
let view _more = document . querySelector ( 'section > label[for^="view-more-"]' ) ;
if ( view _more ) {
let view _more _div = view _more . parentNode . querySelector ( 'div[style*="max-height"]' ) ;
if ( view _more _div )
view _more _div . removeAttribute ( 'style' ) ;
removeDOMElement ( view _more ) ;
}
2024-03-27 08:58:00 +01:00
}
let url = window . location . href ;
getArchive ( url , paywall _sel , '' , article _sel ) ;
2024-03-23 12:26:54 +01:00
let hide = document . querySelector ( 'section.article__wrapper--premium' ) ;
if ( hide )
removeClassesByPrefix ( hide , 'article__content--restricted' ) ;
}
}
2024-03-15 18:17:32 +01:00
else if ( matchDomain ( 'lemoniteur.fr' ) ) {
let url = window . location . href ;
getGoogleWebcache ( url , 'div.blocPasEncoreAbonne' , '' , 'div.articleContent' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div[data-ad-id], div.ad2hsBox' ;
hideDOMStyle ( ads ) ;
2024-03-15 18:17:32 +01:00
}
2022-08-26 19:50:25 +02:00
else if ( matchDomain ( 'leparisien.fr' ) ) {
2024-01-10 16:54:07 +01:00
if ( window . location . pathname . startsWith ( '/amp/' ) )
ampToHtml ( ) ;
2022-08-26 19:50:25 +02:00
}
2023-10-14 10:21:20 +02:00
else if ( matchDomain ( 'lepoint.fr' ) ) {
function lepoint _main ( ) {
function decryptVariable ( a ) {
var t = [ "point" , "les" , "payants" , "top" ] ,
n = [ "le" , "avec" , "articles" , "c" ] ,
o = ( function ( ) {
var o = [ ] ;
for ( var e = 0 ; e < 4 ; e ++ )
o . push ( n [ e ] ) , o . push ( t [ e ] ) ;
return o
} ) ( ) ,
e = {
stringify : function ( o ) {
var e = {
ct : o . ciphertext . toString ( CryptoJS . enc . Base64 )
} ;
return o . iv && ( e . iv = o . iv . toString ( ) ) ,
o . salt && ( e . s = o . salt . toString ( ) ) ,
JSON . stringify ( e )
} ,
parse : function ( o ) {
var e = JSON . parse ( o ) ,
t = CryptoJS . lib . CipherParams . create ( {
ciphertext : CryptoJS . enc . Base64 . parse ( e . ct )
} ) ;
return e . iv && ( t . iv = CryptoJS . enc . Hex . parse ( e . iv ) ) ,
e . s && ( t . salt = CryptoJS . enc . Hex . parse ( e . s ) ) ,
t
}
} ;
return JSON . parse ( CryptoJS . AES . decrypt ( JSON . stringify ( a ) , o . join ( " " ) , {
format : e
} ) . toString ( CryptoJS . enc . Utf8 ) )
}
let article = document . querySelector ( 'div#contenu' ) ;
if ( article && window . variable _article _poool )
window . postMessage ( { type : 'from_page' , data : decryptVariable ( window . variable _article _poool ) } ) ;
}
if ( ! matchDomain ( [ 'journal.lepoint.fr' ] ) ) {
let paywall = document . querySelectorAll ( 'aside.paywall' ) ;
if ( paywall . length ) {
removeDOMElement ( ... paywall ) ;
insert _script ( lepoint _main ) ;
}
2024-04-07 10:31:08 +02:00
let ads = 'div[id*="WRAP_"], div#StickyPaywall, div#paywall-sticky, div.slotpub, div.sticky-block' ;
hideDOMStyle ( ads ) ;
2023-10-14 10:21:20 +02:00
} else {
let url = window . location . href ;
2024-01-14 11:37:30 +01:00
getArchive ( url , 'div.accnt-cmp' , '' , 'article' ) ;
2023-10-14 10:21:20 +02:00
}
}
2022-05-30 17:18:28 +02:00
else if ( matchDomain ( 'lesechos.fr' ) ) {
2023-01-09 17:05:06 +01:00
if ( window . location . pathname . startsWith ( '/amp/' ) ) {
2023-01-10 18:16:24 +01:00
ampToHtml ( ) ;
2022-03-07 22:56:06 +01:00
} else {
window . setTimeout ( function ( ) {
2024-04-07 10:39:17 +02:00
let paywall = document . querySelector ( 'div#paywall, div#registerWall' ) ;
2024-01-22 17:51:00 +01:00
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let scripts = document . querySelectorAll ( 'script:not([src]):not([type])' ) ;
let json _script ;
for ( let script of scripts ) {
if ( script . text . match ( /window\.__REACT_QUERY_STATE__\s?=\s?/ ) ) {
json _script = script ;
break ;
}
}
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text . split ( /window\.__REACT_QUERY_STATE__\s?=\s?/ ) [ 1 ] . split ( '};' ) [ 0 ] + '}' ) ;
let data _article = json . queries [ 1 ] . state ;
let url = window . location . href ;
let url _loaded = data _article . data . path ;
if ( url _loaded && ( ! url _loaded . slice ( - 7 ) . match ( /\d+/ ) || ! url . includes ( url _loaded . slice ( - 7 ) ) ) )
refreshCurrentTab ( ) ;
else {
let json _text = data _article . data . stripes [ 0 ] . mainContent [ 0 ] . data . description . replace ( /allowfullscreen='(true)?'/g , '' ) ;
let article = document . querySelector ( 'div.post-paywall' ) ;
if ( article ) {
let contentNode = document . createElement ( 'div' ) ;
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div class="' + article . className + '">' + DOMPurify . sanitize ( json _text , dompurify _options ) + '</div>' , 'text/html' ) ;
let article _new = doc . querySelector ( 'div' ) ;
if ( article . parentNode && article _new ) {
article . parentNode . replaceChild ( article _new , article ) ;
let article _lastnode = document . querySelector ( '.post-paywall > :last-child' ) ;
if ( article _lastnode ) {
article _lastnode . setAttribute ( 'style' , 'height: auto !important; overflow: hidden !important; max-height: none !important;' ) ;
}
2023-04-06 19:39:32 +02:00
}
2022-03-07 22:56:06 +01:00
}
2024-01-22 17:51:00 +01:00
let styleElem = document . head . appendChild ( document . createElement ( 'style' ) ) ;
styleElem . innerText = ".post-paywall::after {height: auto !important;}" ;
2020-05-01 17:50:15 +02:00
}
2024-01-22 17:51:00 +01:00
} catch ( err ) {
console . log ( err ) ;
2021-04-10 08:46:50 +02:00
}
2020-05-02 15:46:52 +02:00
}
2021-04-10 08:46:50 +02:00
}
2024-04-07 10:31:08 +02:00
let ads = '[class*="jzxvkd"]' ;
hideDOMStyle ( ads ) ;
2022-03-08 19:04:50 +01:00
} , 500 ) ;
2022-03-07 22:56:06 +01:00
}
2020-01-28 23:06:25 +01:00
}
2021-12-22 19:03:54 +01:00
else if ( matchDomain ( 'lesinrocks.com' ) ) {
2022-04-19 21:37:22 +02:00
if ( window . location . search . match ( /(\?|&)amp/ ) ) {
2021-12-22 19:03:54 +01:00
let size _defined = document . querySelector ( 'amp-script.i-amphtml-layout-size-defined' ) ;
if ( size _defined )
size _defined . style = 'overflow:visible !important;' ;
let overlays = document . querySelectorAll ( 'section.learn_more, div.sidebar, div.menu-footer, div.tooltip_bib, footer.content-info' ) ;
removeDOMElement ( ... overlays ) ;
}
}
2023-06-24 08:21:13 +02:00
else if ( matchDomain ( 'letelegramme.fr' ) ) {
let paywall = document . querySelectorAll ( 'div.tlg-paywalled' ) ;
for ( let elem of paywall )
elem . classList . remove ( 'tlg-paywalled' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div[id^="pub_"]' ;
hideDOMStyle ( ads ) ;
2023-06-24 08:21:13 +02:00
}
2022-01-09 17:28:17 +01:00
else if ( matchDomain ( 'lexpress.fr' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div[class^="block_pub"], div.bottom-bar-full, div.tead, div.ban-bottom, div.placeholder--ban-atf' ;
hideDOMStyle ( ads ) ;
2022-01-09 17:28:17 +01:00
}
2021-04-30 17:25:41 +02:00
else if ( matchDomain ( 'loeildelaphotographie.com' ) ) {
let paywall = document . querySelector ( '.paywall' ) ;
if ( paywall ) {
paywall . removeAttribute ( 'class' ) ;
}
let premium _pic _boxes = document . querySelectorAll ( '.premium-pic-box' ) ;
let banners = document . querySelectorAll ( '.membership-promo-container, .login_form_litle' ) ;
removeDOMElement ( ... premium _pic _boxes , ... banners ) ;
let blurred _images = document . querySelectorAll ( 'img[style*="blur"]' ) ;
for ( let blurred _image of blurred _images )
blurred _image . removeAttribute ( 'style' ) ;
}
2021-10-20 21:46:42 +02:00
else if ( matchDomain ( 'marianne.net' ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
2023-05-08 20:05:06 +02:00
if ( paywall && dompurify _loaded ) {
2024-01-06 17:07:42 +01:00
removeDOMElement ( paywall ) ;
2021-10-20 21:46:42 +02:00
let article _source = document . querySelector ( 'div.article-body[data-content-src]' ) ;
if ( article _source ) {
let article _text = decode _utf8 ( atob ( article _source . getAttribute ( 'data-content-src' ) ) ) ;
let parser = new DOMParser ( ) ;
2023-05-08 20:05:06 +02:00
let html = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( article _text ) + '</div>' , 'text/html' ) ;
2021-10-20 21:46:42 +02:00
let article = html . querySelector ( 'div' ) ;
2024-01-06 17:07:42 +01:00
let lazy _images = article . querySelectorAll ( 'img.lazyload[data-src]:not([src])' ) ;
for ( let elem of lazy _images ) {
elem . src = elem . getAttribute ( 'data-src' ) ;
elem . classList . remove ( 'lazyload' ) ;
}
2021-10-20 21:46:42 +02:00
article _source . innerHTML = '' ;
article _source . appendChild ( article ) ;
article _source . removeAttribute ( 'data-content-src' ) ;
}
}
2024-04-07 10:31:08 +02:00
let ads = 'div[class*="--placeholder"]' ;
hideDOMStyle ( ads ) ;
2021-10-20 21:46:42 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'nouvelobs.com' ) ) {
let paywall = document . querySelector ( '.paywall' ) ;
removeDOMElement ( paywall ) ;
2023-04-19 18:18:59 +02:00
let fade = document . querySelector ( 'div.paywall--gradient-top' ) ;
if ( fade )
fade . classList . remove ( 'paywall--gradient-top' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'section.slice--ad' ;
hideDOMStyle ( ads ) ;
2020-03-08 23:16:17 +01:00
}
2024-03-15 08:40:35 +01:00
else if ( matchDomain ( 'pourleco.com' ) ) {
let paywall = document . querySelector ( 'div[data-pleco-poool^="paywall"]' ) ;
if ( paywall ) {
let intro = document . querySelector ( 'div[data-pleco-transition="fade"]' ) ;
removeDOMElement ( paywall , intro ) ;
let article = document . querySelector ( 'div[class*="article-"][style]' ) ;
if ( article )
article . removeAttribute ( 'style' ) ;
}
}
2021-12-12 11:25:09 +01:00
else if ( matchDomain ( 'science-et-vie.com' ) ) {
if ( window . location . hostname . startsWith ( 'amp.' ) ) {
let pars = document . querySelectorAll ( '.qiota_reserve > p, .qiota_reserve > h2' ) ;
let pars _text = [ ] ;
for ( let par of pars ) {
if ( pars _text . includes ( par . innerText ) )
removeDOMElement ( par ) ;
else
pars _text . push ( par . innerText ) ;
}
let sizer = document . querySelector ( 'div.article-content > amp-script > i-amphtml-sizer' ) ;
removeDOMElement ( sizer ) ;
let replaced _content = document . querySelector ( 'div.i-amphtml-replaced-content' ) ;
if ( replaced _content )
replaced _content . removeAttribute ( 'class' ) ;
}
}
2022-02-08 08:01:28 +01:00
else if ( matchDomain ( [ 'sudouest.fr' , 'charentelibre.fr' , 'larepubliquedespyrenees.fr' ] ) ) {
2022-08-26 19:50:25 +02:00
let paywall = document . querySelectorAll ( '.visible-not-premium' ) ;
if ( paywall . length ) {
removeDOMElement ( ... paywall ) ;
2022-06-28 16:39:02 +02:00
let visible _premium = document . querySelectorAll ( 'div.visible-premium' ) ;
for ( let elem of visible _premium )
elem . classList . remove ( 'visible-premium' ) ;
2021-04-10 08:46:50 +02:00
}
2024-04-07 10:31:08 +02:00
let footer _premium = '.footer-premium' ;
let ads = 'div.pub, div.ph-easy-subscription' ;
hideDOMStyle ( footer _premium + ', ' + ads ) ;
2020-03-21 15:48:04 +01:00
}
2023-12-18 17:07:34 +01:00
else if ( matchDomain ( 'lamontagne.fr' ) || document . querySelector ( 'head > meta[name="google-play-app"][content^="app-id=com.centrefrance"]' ) ) { // Groupe Centre France
2022-11-30 16:29:53 +01:00
let paywall = document . querySelector ( 'div#poool-widget' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = json . articleBody ;
let content = document . querySelector ( 'div.entry-content' ) ;
if ( json _text && content ) {
content . innerHTML = '' ;
let article _new = document . createElement ( 'p' ) ;
article _new . innerText = json _text ;
content . appendChild ( article _new ) ;
}
}
}
}
}
2021-04-10 08:46:50 +02:00
else
2021-04-25 13:45:36 +02:00
csDone = true ;
2020-03-30 19:59:29 +02:00
2024-03-01 18:18:28 +01:00
} else if ( window . location . hostname . endsWith ( '.it' ) || matchDomain ( [ 'eastwest.eu' , 'ilsole24ore.com' , 'italian.tech' , 'limesonline.com' , 'quotidiano.net' , 'tuttosport.com' ] ) ) { //italy
2020-03-30 20:50:55 +02:00
2021-04-10 08:46:50 +02:00
if ( matchDomain ( 'corriere.it' ) ) {
2021-12-12 13:21:28 +01:00
if ( window . location . pathname . endsWith ( '_amp.html' ) ) {
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
} else {
2023-04-29 09:51:38 +02:00
if ( window . location . pathname . includes ( '_preview.shtml' ) && ! window . location . pathname . startsWith ( '/podcast/' ) ) {
2021-12-12 13:21:28 +01:00
window . setTimeout ( function ( ) {
2023-04-29 09:51:38 +02:00
window . location . href = window . location . pathname . replace ( '_preview.shtml' , '.shtml' ) ;
2022-03-08 19:04:50 +01:00
} , 500 ) ;
2021-12-12 13:21:28 +01:00
}
2021-04-10 08:46:50 +02:00
}
2020-04-04 19:42:04 +02:00
}
2022-05-29 08:38:45 +02:00
else if ( matchDomain ( 'corrieredellosport.it' ) ) {
if ( ! window . location . pathname . startsWith ( '/amp/' ) ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div[class^="MainTextTruncated_paragraph__"]' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div[class^="AdUnit_placeholder"]' ;
hideDOMStyle ( ads ) ;
2022-05-29 08:38:45 +02:00
} else {
2024-04-07 10:31:08 +02:00
let ads = 'amp-ad, amp-embed' ;
hideDOMStyle ( ads ) ;
2022-05-29 08:38:45 +02:00
}
}
2022-02-13 18:55:16 +01:00
else if ( matchDomain ( 'eastwest.eu' ) ) {
let paywall = document . querySelector ( '.paywall' ) ;
if ( paywall ) {
paywall . removeAttribute ( 'style' ) ;
paywall . classList . remove ( 'paywall' ) ;
let intro = document . querySelectorAll ( 'div#testo_articolo > p, div#testo_articolo > h3' ) ;
let offerta = document . querySelectorAll ( 'div.offerta_abbonamenti' ) ;
removeDOMElement ( ... intro , ... offerta ) ;
}
}
2022-08-12 07:36:22 +02:00
2023-11-16 17:27:17 +01:00
else if ( matchDomain ( 'editorialedomani.it' ) ) {
if ( window . location . search . startsWith ( '?amp=1' ) )
ampToHtml ( ) ;
}
2022-08-12 07:36:22 +02:00
else if ( matchDomain ( 'gazzetta.it' ) ) {
if ( window . location . pathname . endsWith ( '_preview.shtml' ) ) {
2023-06-02 20:24:23 +02:00
let paywall = document . querySelector ( 'section.bck-freemium__wall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
2023-06-25 09:13:05 +02:00
if ( ! window . location . search . startsWith ( '?reason=unauthenticated' ) ) {
window . location . href = window . location . pathname . replace ( '_preview' , '' ) + '?gaa_at=g' ;
} else {
let json _script = getArticleJsonScript ( ) ;
let header = document . querySelector ( 'div.content > h2' ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = json . articleBody . replace ( /(\s{3}| )/g , '\r\n\r\n' ) ;
let content = document . querySelector ( 'div.content > p.has-first-letter' ) ;
if ( json _text && content ) {
let content _new = document . createElement ( 'p' ) ;
content _new . innerText = json _text ;
content . parentNode . replaceChild ( content _new , content ) ;
let article _body = document . querySelector ( 'section.body-article' ) ;
if ( article _body )
article _body . style = 'height: auto;' ;
} else
header _nofix ( header ) ;
}
} else
header _nofix ( header ) ;
}
2023-06-02 20:24:23 +02:00
}
2022-08-26 19:50:25 +02:00
} else if ( window . location . pathname . endsWith ( '_amp.shtml' ) )
ampToHtml ( ) ;
2022-08-12 07:36:22 +02:00
}
2022-02-13 18:55:16 +01:00
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'ilfattoquotidiano.it' ) ) {
2021-09-03 12:35:25 +02:00
let url = window . location . href ;
if ( url . includes ( '/amp/' ) ) {
2023-02-23 12:46:03 +01:00
amp _unhide _subscr _section ( 'amp-ad, amp-embed, div#_4sVideoContainer' ) ;
2021-09-03 12:35:25 +02:00
let comments = document . querySelector ( 'div.content.comments' ) ;
2021-11-30 17:36:15 +01:00
removeDOMElement ( comments ) ;
2023-04-29 09:51:38 +02:00
} else if ( window . location . pathname . match ( /\/\d{4}\/\d{2}\/\d{2}\// ) ) {
2021-10-31 20:19:15 +01:00
let paywall = document . querySelector ( 'div.read-more' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
2023-04-29 09:51:38 +02:00
window . location . href = window . location . pathname + 'amp' ;
2021-01-11 18:49:09 +01:00
}
2021-09-03 12:35:25 +02:00
}
2020-04-25 17:18:12 +02:00
}
2021-12-29 16:54:49 +01:00
else if ( matchDomain ( 'ilfoglio.it' ) ) {
if ( window . location . pathname . endsWith ( '/amp/' ) ) {
amp _unhide _subscr _section ( 'amp-ad, [class^="adv-"], div#gmpVideoContainer' ) ;
} else {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div.paywall' ) ;
2024-04-07 10:31:08 +02:00
let ads = '.advertisement' ;
hideDOMStyle ( ads ) ;
2021-12-29 16:54:49 +01:00
}
}
2022-06-06 09:42:53 +02:00
else if ( matchDomain ( 'ilmanifesto.it' ) ) {
2023-03-15 19:01:46 +01:00
window . setTimeout ( function ( ) {
if ( window . location . pathname . match ( /((\w)+(\-)+){3,}/ ) ) {
let paywall = document . querySelector ( 'div[class^="PostPaywall_PostPaywall__"]' ) ;
2023-05-08 20:05:06 +02:00
if ( paywall && dompurify _loaded ) {
2023-03-15 19:01:46 +01:00
removeDOMElement ( paywall ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . innerText ) ;
if ( json && json . props . pageProps . content && json . props . pageProps . content . content ) {
let article _new = json . props . pageProps . content . content ;
let article = document . querySelector ( 'div.ArticleBody' ) ;
if ( article ) {
article . innerHTML = '' ;
let parser = new DOMParser ( ) ;
2023-05-08 20:05:06 +02:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( article _new ) + '</div>' , 'text/html' ) ;
2023-03-15 19:01:46 +01:00
let content _new = doc . querySelector ( 'div' ) ;
article . appendChild ( content _new ) ;
}
} else
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2023-03-15 19:01:46 +01:00
}
2022-06-06 09:42:53 +02:00
}
}
2023-03-15 19:01:46 +01:00
let service _page = document . querySelector ( 'div.service-page' ) ;
if ( service _page ) {
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2023-03-15 19:01:46 +01:00
}
} , 1000 ) ;
2022-06-06 09:42:53 +02:00
}
2024-03-01 18:18:28 +01:00
else if ( matchDomain ( 'ilsole24ore.com' ) ) {
2024-03-05 17:17:06 +01:00
let paywall = document . querySelector ( 'div.lock' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
header _nofix ( document . querySelector ( 'div.paywalltext' ) ) ;
}
2024-04-07 10:39:17 +02:00
let ads = 'div.background-adv, div.abox, div.ob-smartfeed-wrapper' ;
hideDOMStyle ( ads ) ;
2024-03-01 18:18:28 +01:00
}
2023-05-18 08:22:47 +02:00
else if ( matchDomain ( [ 'iltirreno.it' , 'lanuovasardegna.it' ] ) || matchDomain ( [ 'gazzettadimodena.it' , 'gazzettadireggio.it' , 'lanuovaferrara.it' ] ) ) {
2022-07-13 16:29:59 +02:00
if ( window . location . pathname . includes ( '/news/' ) ) {
2023-08-22 19:46:22 +02:00
let paywall = document . querySelector ( 'span > img[alt*="Paywall"]' ) ;
if ( paywall ) {
let header = paywall . parentNode . parentNode ;
header _nofix ( header ) ;
removeDOMElement ( paywall . parentNode ) ;
}
2022-07-17 09:25:31 +02:00
window . setTimeout ( function ( ) {
let banners = document . querySelectorAll ( 'div.MuiSnackbar-root, div.css-16cchgy' ) ;
removeDOMElement ( ... banners ) ;
} , 1000 ) ;
2022-07-13 16:29:59 +02:00
}
2022-07-02 09:46:39 +02:00
}
2021-12-12 13:21:28 +01:00
else if ( matchDomain ( it _ilmessaggero _domains ) ) {
if ( window . location . pathname . toLowerCase ( ) . includes ( '/amp/' ) ) {
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
2023-08-11 07:56:16 +02:00
} else {
let noscroll = document . querySelector ( 'html[style]' ) ;
if ( noscroll )
noscroll . removeAttribute ( 'style' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div.adv_banner, div.inread_adv, div#outbrain' ;
hideDOMStyle ( ads ) ;
2021-12-12 13:21:28 +01:00
}
}
2021-07-30 08:52:20 +02:00
else if ( matchDomain ( it _quotidiano _domains ) ) {
2023-02-22 20:07:36 +01:00
if ( window . location . pathname . endsWith ( '/amp' ) || window . location . search . startsWith ( '?amp' ) ) {
amp _unhide _access _hide ( '="c.customGranted"' , '="NOT c.customGranted"' , 'amp-ad, amp-embed, amp-fx-flying-carpet, .watermark-adv, .amp__watermark' ) ;
2021-12-12 13:21:28 +01:00
} else {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div[data-testid="paywall-container"], div[class^="Paywall_paywall_"]' , '' , window . location . pathname + '/amp' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div[id^="div-gpt-ad"]' ;
hideDOMStyle ( ads ) ;
2021-04-10 08:46:50 +02:00
}
2020-04-25 20:41:55 +02:00
}
2022-04-23 09:43:03 +02:00
else if ( matchDomain ( 'italiaoggi.it' ) ) {
let paywall = document . querySelector ( 'div.boxAbb' ) ;
2023-05-08 20:05:06 +02:00
if ( paywall && dompurify _loaded ) {
2022-04-23 09:43:03 +02:00
let overlay = document . querySelector ( 'div.article-locked-overlay' ) ;
removeDOMElement ( paywall , overlay ) ;
let article _locked = document . querySelector ( 'div.article-locked' ) ;
if ( article _locked ) {
article _locked . classList . remove ( 'article-locked' ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = json . articleBody ;
let content = article _locked . querySelector ( 'section' ) ;
if ( json _text && content ) {
2022-08-15 18:05:49 +02:00
let parser = new DOMParser ( ) ;
2023-02-11 09:20:49 +01:00
json _text = json _text . replace ( /&apos;/g , "'" ) . replace ( /;/g , '' ) ;
2023-05-08 20:05:06 +02:00
let doc = parser . parseFromString ( '<div><section>' + DOMPurify . sanitize ( json _text ) + '</section></div>' , 'text/html' ) ;
2022-08-15 18:05:49 +02:00
let content _new = doc . querySelector ( 'div' ) ;
content . parentNode . replaceChild ( content _new , content ) ;
2022-04-23 09:43:03 +02:00
}
}
}
}
}
}
2022-08-04 17:38:34 +02:00
else if ( matchDomain ( it _gedi _domains ) ) {
2023-12-27 08:24:33 +01:00
if ( domain = matchDomain ( [ 'huffingtonpost.it' , 'lastampa.it' , 'repubblica.it' ] ) ) {
2023-08-13 11:02:31 +02:00
if ( window . location . pathname . includes ( '/news/' ) ) {
if ( ! window . location . pathname . match ( /\amp(\/)?$/ ) ) {
csDoneOnce = true ;
2023-11-25 11:48:36 +01:00
let paywall = document . querySelector ( 'iframe#__limio_frame' ) ;
2023-12-27 08:24:33 +01:00
if ( paywall ) {
ext _api . runtime . sendMessage ( { request : 'clear_cookies_domain' , data : { domain : domain } } ) ;
refreshCurrentTab ( ) ;
}
2023-08-13 11:02:31 +02:00
let modal = document . querySelector ( 'aside#widgetDP' ) ;
removeDOMElement ( modal ) ;
} else
ampToHtml ( ) ;
}
2022-08-04 17:38:34 +02:00
} else {
2022-10-07 15:39:52 +02:00
if ( ! window . location . pathname . match ( /\amp(\/)?$/ ) ) {
2023-11-10 12:57:32 +01:00
let paywall = document . querySelector ( 'div#ph-paywall' ) ;
2023-08-13 11:02:31 +02:00
removeDOMElement ( paywall ) ;
2022-11-12 08:39:05 +01:00
} else
ampToHtml ( ) ;
2021-04-10 08:46:50 +02:00
}
2024-04-07 10:31:08 +02:00
let ads = 'div[id^="adv"]' ;
hideDOMStyle ( ads ) ;
2020-05-27 07:41:46 +02:00
}
2023-08-27 18:58:41 +02:00
else if ( matchDomain ( 'tuttosport.com' ) ) {
2023-10-09 17:28:00 +02:00
if ( ! window . location . pathname . startsWith ( '/amp/' ) ) {
let article _images = document . querySelectorAll ( 'div > img[data-src]:not([src])' ) ;
for ( let elem of article _images ) {
elem . src = elem . getAttribute ( 'data-src' ) ;
elem . removeAttribute ( 'class' ) ;
elem . parentNode . removeAttribute ( 'style' ) ;
}
let main _images = document . querySelectorAll ( 'div > img[class*="ArticleImage_image__"][src]' ) ;
for ( let elem of main _images ) {
elem . removeAttribute ( 'class' ) ;
}
let video = document . querySelector ( 'div[class^="VideoFloat_videoFloatCont__"]' ) ;
if ( video ) {
let og _image = document . querySelector ( 'head > meta[property="og:image"][content]' ) ;
if ( og _image ) {
let og _image _url = og _image . getAttribute ( 'content' ) ;
if ( og _image _url ) {
let elem = document . createElement ( 'img' ) ;
elem . src = og _image _url ;
elem . style = 'width: 95%;' ;
video . parentNode . replaceChild ( elem , video ) ;
}
}
}
2024-04-07 10:31:08 +02:00
let ads = 'div[class^="AdUnit_"]' ;
hideDOMStyle ( ads ) ;
2023-10-09 17:28:00 +02:00
} else {
2024-04-07 10:31:08 +02:00
let ads = 'amp-ad, amp-embed' ;
hideDOMStyle ( ads ) ;
2023-08-27 18:58:41 +02:00
}
}
2021-04-10 08:46:50 +02:00
else
2021-04-25 13:45:36 +02:00
csDone = true ;
2021-04-10 08:46:50 +02:00
2024-03-16 12:35:07 +01:00
} else if ( window . location . hostname . match ( /\.(be|nl)$/ ) || matchDomain ( [ 'artsenkrant.com' , 'lavenir.net' , 'projectcargojournal.com' , 'railfreight.cn' , 'railfreight.com' , 'railtech.com' ] ) ) { //belgium/netherlands
2023-03-29 13:03:10 +02:00
if ( matchDomain ( be _groupe _ipm _domains ) ) {
let paywall = document . querySelector ( 'div.is-preview' ) ;
if ( paywall ) {
paywall . classList . remove ( 'is-preview' ) ;
window . setTimeout ( function ( ) {
let div _hidden = document . querySelector ( 'div.is-hidden' ) ;
if ( div _hidden )
div _hidden . classList . remove ( 'is-hidden' ) ;
} , 1000 ) ;
}
2024-04-07 10:31:08 +02:00
let ads = 'div.ap-AdContainer, div.ap-Outbrain' ;
hideDOMStyle ( ads ) ;
2023-03-29 13:03:10 +02:00
}
2021-04-10 08:46:50 +02:00
2024-01-18 18:53:00 +01:00
else if ( matchDomain ( be _mediahuis _domains . concat ( [ 'limburger.nl' ] ) ) ) {
window . setTimeout ( function ( ) {
let paywall _sel = 'div[data-cj-root="subscription-wall"]' ;
let paywall = document . querySelector ( paywall _sel ) ;
if ( paywall ) {
let article _sel = 'div[data-fragment-name="articleDetail"]' ;
let article = document . querySelector ( article _sel ) ;
if ( article ) {
let article _new = document . createElement ( 'div' ) ;
article _new . id = 'bpc_fetch' ;
article . appendChild ( article _new ) ;
let url = window . location . href ;
getArchive ( url , paywall _sel , '' , 'div#bpc_fetch' , '' , 'div[data-auth-premium-content]' , article _sel ) ;
}
}
let button _close = document . querySelector ( 'span[data-testid="button-close"]' ) ;
if ( button _close )
button _close . click ( ) ;
2024-04-07 10:31:08 +02:00
let banners = 'div.paywall--titel' ;
hideDOMStyle ( banners ) ;
2024-01-18 18:53:00 +01:00
} , 1500 ) ;
}
2023-12-21 17:28:46 +01:00
else if ( matchDomain ( 'businessam.be' ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let article = document . querySelector ( 'div.text-gradient' ) ;
if ( article ) {
let scripts = document . querySelectorAll ( 'script:not([src]):not([type])' ) ;
let content _script ;
for ( let script of scripts ) {
if ( script . text . match ( /window\.fullcontent64\s?=\s?"/ ) ) {
content _script = script ;
break ;
}
}
if ( content _script ) {
try {
let content = decode _utf8 ( atob ( content _script . text . split ( /window\.fullcontent64\s?=\s?"/ ) [ 1 ] . split ( '";' ) [ 0 ] ) ) ;
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( content , dompurify _options ) + '</div>' , 'text/html' ) ;
let content _new = doc . querySelector ( 'div' ) ;
article . parentNode . replaceChild ( content _new , article ) ;
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
}
2023-12-27 17:05:25 +01:00
else if ( matchDomain ( 'businessinsider.nl' ) ) {
if ( dompurify _loaded )
getJsonUrl ( 'div.piano-article__paywall' , '' , 'div.piano-article__content' ) ;
}
2023-11-13 17:38:59 +01:00
else if ( matchDomain ( 'doorbraak.be' ) ) {
let paywall _sel = 'div.paywall' ;
let paywall = document . querySelector ( paywall _sel ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
waitDOMElement ( paywall _sel , 'DIV' , removeDOMElement , false ) ;
let json _script = document . querySelector ( 'script#__NUXT_DATA__' ) ;
if ( json _script ) {
try {
if ( ! json _script . text . substr ( 0 , 500 ) . includes ( window . location . pathname ) )
refreshCurrentTab ( ) ;
let json = JSON . parse ( json _script . text ) ;
json = json . filter ( x => typeof x === 'string' && x . startsWith ( '<p>' ) ) ;
let json _text = json [ 0 ] ;
if ( json _text ) {
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( json _text ) + '</div>' , 'text/html' ) ;
let content _new = doc . querySelector ( 'div' ) ;
let article = document . querySelector ( 'div > div.prose' ) ;
if ( article ) {
article . appendChild ( content _new ) ;
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
2023-03-29 13:03:10 +02:00
else if ( matchDomain ( 'fd.nl' ) ) {
2023-08-02 07:53:08 +02:00
let paywall = document . querySelectorAll ( 'section.upsell, div.upsell-modal-background' ) ;
2023-08-31 06:51:24 +02:00
if ( paywall . length ) {
removeDOMElement ( ... paywall ) ;
2023-01-17 12:16:38 +01:00
refreshCurrentTab ( ) ;
2023-08-31 06:51:24 +02:00
}
2023-08-02 07:53:08 +02:00
let header = document . querySelector ( 'div.fd-message[data-slot="Artikel/Header"]' ) ;
removeDOMElement ( header ) ;
2020-06-14 18:37:06 +02:00
}
2020-06-18 20:55:18 +02:00
else if ( matchDomain ( 'ftm.nl' ) ) {
2022-09-09 14:30:20 +02:00
let banners = document . querySelectorAll ( 'div.banner-pp, a.readmore' ) ;
removeDOMElement ( ... banners ) ;
2020-06-18 20:55:18 +02:00
}
2023-02-16 12:20:18 +01:00
else if ( matchDomain ( be _roularta _domains ) ) {
2023-09-02 09:09:17 +02:00
if ( matchDomain ( 'beleggersbelangen.nl' ) ) {
let paywall = document . querySelector ( 'div.unlimited-access' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let no _account = document . querySelector ( 'div.no-account' ) ;
if ( no _account )
no _account . classList . remove ( 'no-account' ) ;
let content _inner = document . querySelector ( 'div.content-inner[style]' ) ;
if ( content _inner )
content _inner . removeAttribute ( 'style' ) ;
2023-09-17 14:35:45 +02:00
}
} else {
let paywall = document . querySelector ( 'div[id*="wall-modal"]' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let html = document . querySelector ( 'html[class]' ) ;
if ( html )
html . removeAttribute ( 'class' ) ;
function roularta _noscroll ( node ) {
node . removeAttribute ( 'style' ) ;
node . removeAttribute ( 'class' ) ;
2023-09-02 09:09:17 +02:00
}
2023-09-17 14:35:45 +02:00
waitDOMAttribute ( 'html' , 'html' , 'class' , roularta _noscroll , true ) ;
let intro = document . querySelectorAll ( 'div.article-body > p, div.article-body > style' ) ;
removeDOMElement ( ... intro ) ;
let locked = document . querySelector ( 'body.locked' ) ;
if ( locked )
locked . classList . remove ( 'locked' ) ;
}
if ( ! window . navigator . userAgent . toLowerCase ( ) . includes ( 'chrome' ) && ! matchDomain ( [ 'artsenkrant.com' , 'kw.be' ] ) && window . location . href . match ( /\/((\w)+(\-)+){3,}/ ) ) {
let lazy _images = document . querySelectorAll ( 'img[src^="data:image/"][data-lazy-src]' ) ;
for ( let elem of lazy _images ) {
elem . src = elem . getAttribute ( 'data-lazy-src' ) ;
2023-09-02 09:09:17 +02:00
}
2023-04-26 17:50:00 +02:00
}
}
2024-04-07 10:31:08 +02:00
let ads = 'div.rmgAd, div.c-header__ad' ;
hideDOMStyle ( ads ) ;
2020-06-28 17:41:37 +02:00
}
2023-09-30 13:28:40 +02:00
else if ( matchDomain ( [ 'lc.nl' , 'dvhn.nl' ] ) || document . querySelector ( 'head > link[href*=".ndcmediagroep.nl/"]' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div.top__ad, div.marketingblock-article' ;
hideDOMStyle ( ads ) ;
2021-04-10 08:46:50 +02:00
}
2024-04-05 08:28:55 +02:00
else if ( matchDomain ( nl _dpg _adr _domains . concat ( [ 'hln.be' ] ) ) ) {
2024-03-07 12:18:20 +01:00
func _post = function ( ) {
let shades = document . querySelectorAll ( 'div[style*="background-color"][style*=";width"]' ) ;
for ( let elem of shades )
elem . style . width = '85%' ;
}
2022-11-09 17:58:21 +01:00
let url = window . location . href ;
2024-01-15 18:46:33 +01:00
getArchive ( url , 'div#remaining-paid-content[data-reduced="true"]' , '' , 'div.article__body' , '' , 'div#remaining-paid-content' ) ;
2022-11-09 17:58:21 +01:00
}
2022-08-04 12:38:00 +02:00
else if ( matchDomain ( nl _dpg _media _domains ) ) {
2024-04-07 10:31:08 +02:00
let banners = 'aside[data-temptation-position^="ARTICLE_"], div[data-temptation-position^="PAGE_"], div[class^="ad--"], div[id^="article_paragraph_"]' ;
hideDOMStyle ( banners ) ;
2022-05-04 17:58:35 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'nrc.nl' ) ) {
2023-05-19 18:58:33 +02:00
let banners = document . querySelectorAll ( 'div[id$="modal__overlay"], div.header__subscribe-bar, div.banner' ) ;
removeDOMElement ( ... banners ) ;
2020-07-25 09:06:49 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'telegraaf.nl' ) ) {
if ( window . location . href . startsWith ( 'https://www.telegraaf.nl/error?ref=/' ) ) {
2020-08-02 12:35:09 +02:00
window . setTimeout ( function ( ) {
2021-04-10 08:46:50 +02:00
window . location . href = window . location . href . split ( '&' ) [ 0 ] . replace ( 'error?ref=/' , '' ) ;
} , 500 ) ;
}
let refresh = document . querySelector ( 'div[id="content"] > meta[http-equiv="refresh"]' ) ;
if ( refresh ) {
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2021-04-10 08:46:50 +02:00
}
2024-02-09 15:56:13 +01:00
let premium = document . querySelector ( 'div[class^="Article__premium"] > p' ) ;
let paywall = document . querySelector ( 'data-hydrate[data-name="PaywallHandler"]' ) ;
2024-03-15 18:17:32 +01:00
let article = document . querySelector ( 'section > div.DetailArticleImage' ) || document . querySelector ( 'section > p.Article__intro' ) ;
2024-03-02 12:07:22 +01:00
if ( paywall && window . location . pathname . startsWith ( '/video/' ) )
removeDOMElement ( paywall ) ;
2024-02-09 15:56:13 +01:00
if ( premium && paywall && article && dompurify _loaded ) {
2023-06-29 15:41:00 +02:00
let div _main = document . createElement ( 'div' ) ;
div _main . style = 'margin: 20px 0px;' ;
let div _elem = document . createElement ( 'div' ) ;
let par _style = 'font-weight: normal; font-size: 16px; line-height: 1.5;' ;
2024-03-02 12:07:22 +01:00
function show _text ( window _text , div _main ) {
window _text = window _text . split ( 'window.telegraaf.' ) [ 0 ] . replace ( /(^\s?=\s?"|";$|\\")/gm , '' ) . replace ( /\\\\u003c/gm , '<' ) ;
2023-11-08 16:07:05 +01:00
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( window _text ) + '</div>' , 'text/html' ) ;
let article _new = doc . querySelector ( 'div' ) ;
let pars = article _new . querySelectorAll ( 'p' ) ;
for ( let par of pars )
par . style = 'margin: 10px 0px;' ;
let placeholders = article _new . querySelectorAll ( 'div.TeaserImage__placeholder' ) ;
for ( let elem of placeholders )
elem . removeAttribute ( 'class' ) ;
2023-11-08 22:40:46 +01:00
let media = article _new . querySelectorAll ( 'div.NewsletterForm, div.DetailArticleVideo' ) ;
removeDOMElement ( ... media ) ;
2024-03-02 12:07:22 +01:00
let twitter _quotes = article _new . querySelectorAll ( 'blockquote.twitter-tweet > a[href]' ) ;
for ( let elem of twitter _quotes ) {
if ( ! elem . innerText ) {
elem . innerText = elem . href ;
elem . target = '_blank' ;
}
}
2023-11-08 16:07:05 +01:00
div _main . appendChild ( article _new ) ;
2020-09-25 14:59:06 +02:00
}
2024-03-02 12:07:22 +01:00
let window _script = document . querySelector ( 'script#scr-tlg-body' ) ;
if ( window _script && window _script . text . includes ( 'window.telegraaf.articleBodyBlocks' ) ) {
removeDOMElement ( paywall ) ;
let window _text = window _script . text . split ( 'window.telegraaf.articleBodyBlocks' ) [ 1 ] ;
if ( window _text )
show _text ( window _text , div _main ) ;
} else {
removeDOMElement ( paywall ) ;
let url = window . location . href . split ( /[#\?]/ ) [ 0 ] ;
fetch ( url )
. then ( response => {
if ( response . ok ) {
response . text ( ) . then ( html => {
if ( html . includes ( 'window.telegraaf.articleBodyBlocks' ) ) {
let window _text = html . split ( 'window.telegraaf.articleBodyBlocks' ) [ 1 ] . split ( '</script>' ) [ 0 ] ;
if ( window _text )
show _text ( window _text , div _main ) ;
}
} )
}
} )
}
2024-02-09 15:56:13 +01:00
article . after ( div _main ) ;
2024-03-03 15:09:20 +01:00
}
2023-06-02 13:43:48 +02:00
let banners = document . querySelectorAll ( '.ArticleBodyBlocks__inlineArticleSpotXBanner, .WebpushOptin' ) ;
2023-06-29 15:41:00 +02:00
removeDOMElement ( ... banners ) ;
2020-09-25 14:59:06 +02:00
}
2023-09-10 17:27:36 +02:00
else if ( matchDomain ( 'tijd.be' ) ) {
if ( matchDomain ( 'belegger.tijd.be' ) ) {
let noscroll = document . querySelector ( 'body.js-overflow-hidden' ) ;
if ( noscroll )
noscroll . classList . remove ( 'js-overflow-hidden' ) ;
let inert = document . querySelectorAll ( '[inert]' ) ;
for ( let elem of inert )
elem . removeAttribute ( 'inert' ) ;
let banner = document . querySelector ( 'div[data-id="react-paywall-investor"]' ) ;
removeDOMElement ( banner ) ;
}
}
2021-12-16 17:28:18 +01:00
else if ( matchDomain ( 'vn.nl' ) ) {
2023-10-20 15:01:54 +02:00
if ( dompurify _loaded )
getJsonUrl ( 'div.content__message-no-access-container' , '' , 'div[data-article-content-target]' , { art _append : true } ) ;
let content _restriction = document . querySelector ( 'div.content__restriction' ) ;
removeDOMElement ( content _restriction ) ;
let article _content = document . querySelector ( 'section[data-article-content-element]' ) ;
if ( article _content ) {
article _content . style = 'max-height:none !important;' ;
2021-12-16 17:28:18 +01:00
let body = document . querySelector ( 'body' ) ;
if ( body )
body . style = 'height:auto !important;' ;
}
}
2024-03-16 12:35:07 +01:00
else if ( document . querySelector ( 'head > link[href="//ppt.promedia.nl"]' ) || document . querySelector ( 'head > script[src*="/pmgnews/scripts/promedia.js"]' ) ) {
let paywall _sel = 'div.pmgsub' ;
let paywall = document . querySelector ( paywall _sel ) ;
if ( paywall ) {
let article _sel = 'div.post-body, div.text' ;
let article = document . querySelector ( article _sel ) ;
if ( article ) {
let pars = article . querySelectorAll ( 'p:first-child' ) ;
if ( pars . length > 2 )
removeDOMElement ( paywall ) ;
else {
func _post = function ( ) {
let paywall = document . querySelector ( paywall _sel ) ;
removeDOMElement ( paywall ) ;
}
let url = window . location . href ;
getGoogleWebcache ( url , paywall _sel , '' , article _sel ) ;
}
}
}
}
2021-04-10 08:46:50 +02:00
else
2021-04-25 13:45:36 +02:00
csDone = true ;
2020-09-26 17:27:41 +02:00
2024-03-17 18:45:34 +01:00
} else if ( ( window . location . hostname . match ( /\.(ie|uk)$/ ) && ! matchDomain ( [ 'investmentweek.co.uk' , 'vogue.co.uk' ] ) ) || matchDomain ( [ 'apollo-magazine.com' , 'autosport.com' , 'citywire.com' , 'fnlondon.com' , 'ft.com' , 'gbnews.com' , 'granta.com' , 'scotsman.com' , 'tes.com' , 'unherd.com' ] ) ) { //united kingdom/ireland
2020-10-02 18:41:44 +02:00
2023-10-24 08:08:45 +02:00
if ( matchDomain ( 'apollo-magazine.com' ) ) {
let banner = document . querySelector ( '#subscribe-ribbon' ) ;
removeDOMElement ( banner ) ;
}
else if ( matchDomain ( 'autocar.co.uk' ) ) {
2023-08-03 19:04:35 +02:00
let url = window . location . href ;
2023-12-06 19:19:00 +01:00
getGoogleWebcache ( url , 'div.ms-block, div.register-block' , '' , 'div.content-wrapper' ) ;
2023-08-03 19:04:35 +02:00
}
2024-03-03 18:17:26 +01:00
else if ( matchDomain ( 'autosport.com' ) ) {
let paywall = document . querySelector ( 'div.ms-piano_article-banner' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
header _nofix ( document . querySelector ( 'div.ms-article-content > p' ) ) ;
}
}
2023-08-03 19:04:35 +02:00
else if ( matchDomain ( [ 'belfasttelegraph.co.uk' , 'independent.ie' ] ) ) {
2023-11-08 22:40:46 +01:00
let flip _pay = document . querySelector ( 'div#flip-pay' ) ;
if ( flip _pay && flip _pay . hasChildNodes ( ) && dompurify _loaded ) {
2023-01-26 19:03:07 +01:00
let content = document . querySelector ( 'script[data-fragment-type="ArticleContent"]' ) ;
if ( content ) {
2023-11-08 22:40:46 +01:00
let fade = document . querySelector ( 'div[class*="_fadetowhite"]' ) ;
removeDOMElement ( flip _pay , fade ) ;
2023-11-05 10:39:44 +01:00
let intro = document . querySelector ( 'div > div[data-auth-intro="article"]' ) ;
if ( intro ) {
let intro _par = intro . querySelector ( 'p[class]' ) ;
let intro _par _class ;
if ( intro _par )
intro _par _class = intro _par . getAttribute ( 'class' ) ;
2023-01-26 19:03:07 +01:00
let content _text = content . innerText ;
if ( content _text . includes ( '__PRELOADED_STATE_GRAPH' ) ) {
content _text = content _text . replace ( /window\["__PRELOADED_STATE_GRAPH__.+"\]\s=\s/ , '' ) ;
try {
let json = JSON . parse ( content _text ) ;
if ( Object . keys ( json ) . length ) {
let key = Object . keys ( json ) [ 0 ] ;
let pars = json [ key ] . data . article . body ;
let parser = new DOMParser ( ) ;
for ( let par of pars ) {
for ( let type in par ) {
let item = par [ type ] ;
let elem = document . createElement ( 'p' ) ;
elem . setAttribute ( 'style' , "margin: 10px;" ) ;
if ( type === 'bullet_list' ) {
let ul = document . createElement ( 'ul' ) ;
for ( let sub _item of item ) {
let li = document . createElement ( 'li' ) ;
li . innerText = sub _item ;
ul . appendChild ( li ) ;
}
elem . appendChild ( ul ) ;
} else if ( type === 'image' ) {
let figure = document . createElement ( 'figure' ) ;
let img = document . createElement ( 'img' ) ;
img . src = item . url ;
2023-10-13 11:08:27 +02:00
if ( item . cropped && item . cropped . url )
img . src = item . cropped . url ;
2023-01-26 19:03:07 +01:00
figure . appendChild ( img ) ;
let caption = document . createElement ( 'figcaption' ) ;
caption . innerText = item . caption ;
figure . appendChild ( caption ) ;
elem . appendChild ( figure ) ;
} else if ( type === 'related' ) {
if ( item . articles ) {
let articles = item . articles ;
for ( let article of articles ) {
let elem _link = document . createElement ( 'a' ) ;
elem _link . href = article . webcmsRelativeUrl ;
elem _link . innerText = article . title ;
elem . appendChild ( elem _link ) ;
elem . appendChild ( document . createElement ( 'br' ) ) ;
}
}
2023-11-08 22:40:46 +01:00
} else if ( ! [ 'ad' , 'quote' , 'streamone' ] . includes ( type ) ) {
2023-12-19 16:49:33 +01:00
let html = parser . parseFromString ( '<p class="' + intro _par _class + '">' + DOMPurify . sanitize ( item , dompurify _options ) + '</p>' , 'text/html' ) ;
2023-01-26 19:03:07 +01:00
elem = html . querySelector ( 'p' ) ;
if ( ! [ 'p' , 'subhead' , 'legacy-ml' ] . includes ( type ) ) {
console . log ( type ) ;
console . log ( item ) ;
}
}
window . setTimeout ( function ( ) {
if ( elem )
intro . parentNode . appendChild ( elem ) ;
} , 500 ) ;
}
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
2023-11-08 22:40:46 +01:00
}
2023-01-26 19:03:07 +01:00
}
2024-04-07 10:39:17 +02:00
let ads = 'div[id^="ad_article"]' ;
hideDOMStyle ( ads ) ;
2022-07-30 07:41:59 +02:00
}
2023-03-28 12:31:49 +02:00
else if ( matchDomain ( 'businesspost.ie' ) ) {
2023-07-07 08:41:44 +02:00
function bpie _main ( ) {
if ( $ ) {
let article _id _dom = document . querySelector ( 'article[id]' ) ;
let article _id ;
if ( article _id _dom )
article _id = article _id _dom . id ;
if ( article _id ) {
let bp _ajaxurl = 'https://www.businesspost.ie/wp-admin/admin-ajax.php' ;
let data _ajax = {
action : 'fetch_article_content' ,
type : 'POST' ,
data : {
id : article _id
} ,
dataType : 'json' ,
contentType : 'application/json'
} ;
$ . ajax ( {
type : 'POST' ,
url : bp _ajaxurl ,
data : data _ajax ,
success : function ( data ) {
window . postMessage ( { type : 'from_page' , data : data } ) ;
}
} ) ;
}
} else
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2023-03-28 12:31:49 +02:00
}
2023-07-07 08:41:44 +02:00
csDoneOnce = true ;
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div#bp_paywall_content' ) ;
let article _id _dom = document . querySelector ( 'article[id]' ) ;
let article _id ;
if ( article _id _dom )
article _id = article _id _dom . id ;
if ( paywall || article _id ) {
removeDOMElement ( paywall ) ;
insert _script ( bpie _main ) ;
}
} , 500 ) ;
2023-03-28 12:31:49 +02:00
}
2022-10-26 08:48:51 +02:00
else if ( matchDomain ( 'citywire.com' ) ) {
2023-04-02 19:49:28 +02:00
let url = window . location . href ;
2024-01-15 18:46:33 +01:00
func _post = function ( ) {
2023-11-02 18:33:03 +01:00
let banners = document . querySelectorAll ( 'div#lockedLoginPanel, div#lockedContentPlaceholder' ) ;
removeDOMElement ( ... banners ) ;
2023-04-02 19:49:28 +02:00
let article = document . querySelector ( 'div.cw-article-body' ) ;
if ( article )
removeDOMElement ( article . nextSibling ) ;
2023-12-06 19:19:00 +01:00
}
2024-01-15 18:46:33 +01:00
getGoogleWebcache ( url , 'div.locked-content.cw-article-body' , { rm _class : 'locked-content' } , 'div.cw-article-body' ) ;
2022-10-26 08:48:51 +02:00
}
2023-10-28 18:24:30 +02:00
else if ( matchDomain ( 'fnlondon.com' ) ) {
let signin = document . querySelector ( 'div[data-testid="articleSignInSubscribeWrapper"]' ) ;
removeDOMElement ( signin ) ;
}
2022-10-26 08:48:51 +02:00
else if ( matchDomain ( 'ft.com' ) ) {
2023-08-27 08:04:44 +02:00
let paywall = document . querySelector ( 'div.js-primary-offers-container' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
refreshCurrentTab ( ) ;
2022-10-26 08:48:51 +02:00
}
2024-04-07 10:39:17 +02:00
let banners = '.o-cookie-message, .js-article-ribbon, .o-ads, .o-banner' ;
hideDOMStyle ( banners ) ;
2022-10-26 08:48:51 +02:00
}
2024-03-17 18:45:34 +01:00
else if ( matchDomain ( 'gbnews.com' ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div.ad--billboard, div.ad--placeholder' ;
hideDOMStyle ( ads ) ;
2024-03-17 18:45:34 +01:00
}
2023-10-05 20:11:44 +02:00
else if ( matchDomain ( 'granta.com' ) ) {
2023-10-20 15:01:54 +02:00
if ( dompurify _loaded )
getJsonUrl ( 'div.article-sign-up-container' , '' , 'div.article-excerpt' ) ;
2023-10-05 20:11:44 +02:00
}
2022-07-30 07:41:59 +02:00
else if ( matchDomain ( 'independent.co.uk' ) ) {
2024-01-15 18:46:33 +01:00
func _post = function ( ) {
let lazy _images = document . querySelectorAll ( 'img[loading="lazy"][width]' ) ;
for ( let elem of lazy _images ) {
elem . removeAttribute ( 'width' ) ;
elem . style = 'width: 100%;' ;
}
}
2022-01-01 19:01:19 +01:00
let url = window . location . href ;
2022-04-19 21:37:22 +02:00
if ( window . location . search . match ( /(\?|&)amp/ ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'amp-ad, amp-embed, [id^="ad-"]' ;
hideDOMStyle ( ads ) ;
2022-01-01 19:01:19 +01:00
} else {
let related = document . querySelector ( 'div.related' ) ;
2024-01-14 11:37:30 +01:00
if ( ! related ) {
getArchive ( url , 'div.article-premium' , { rm _class : 'article-premium' } , 'div#main' ) ;
2022-01-01 19:01:19 +01:00
}
}
}
2023-12-12 12:00:46 +01:00
else if ( matchDomain ( 'literaryreview.co.uk' ) ) {
if ( dompurify _loaded )
getJsonUrl ( 'p.subscribe-for-more' , '' , 'div#_articlereview' ) ;
}
2022-01-01 19:01:19 +01:00
else if ( matchDomain ( 'prospectmagazine.co.uk' ) ) {
2021-04-10 08:46:50 +02:00
let url = window . location . href ;
2023-12-06 19:19:00 +01:00
getGoogleWebcache ( url , 'div.paywall_overlay_blend, div.paywall' , '' , 'main' ) ;
2024-04-07 10:39:17 +02:00
let ads = '.ad-banner, .advert' ;
hideDOMStyle ( ads ) ;
2020-10-11 14:43:35 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'spectator.co.uk' ) ) {
2024-04-07 10:39:17 +02:00
let ads = '#subscribe-ribbon, div.ad-slot' ;
hideDOMStyle ( ads ) ;
2020-10-16 18:41:41 +02:00
}
2023-05-10 18:13:22 +02:00
else if ( matchDomain ( 'stylist.co.uk' ) ) {
2023-08-08 19:28:46 +02:00
let paywall = document . querySelector ( 'div[data-testid="paywall-component"]' ) ;
if ( paywall && dompurify _loaded ) {
2023-05-10 18:13:22 +02:00
removeDOMElement ( paywall ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text ) ;
if ( json . props . pageProps . data . post . acf . widgets ) {
let url _next = json . props . pageProps . data . post . id ;
if ( url _next && ! window . location . pathname . endsWith ( url _next ) )
refreshCurrentTab ( ) ;
let pars = json . props . pageProps . data . post . acf . widgets ;
2023-08-08 19:28:46 +02:00
let first _par = document . querySelector ( 'main div[data-column="true"] > p' ) ;
2023-05-10 18:13:22 +02:00
if ( first _par ) {
let article = first _par . parentNode ;
2023-08-08 19:28:46 +02:00
let teaser = article . querySelectorAll ( 'div > p:not([class])' ) ;
2023-05-10 18:13:22 +02:00
removeDOMElement ( ... teaser ) ;
if ( article ) {
let parser = new DOMParser ( ) ;
for ( let par of pars ) {
let elem = document . createElement ( 'p' ) ;
if ( par . paragraph ) {
let content = par . paragraph ;
2023-08-08 19:28:46 +02:00
let content _new = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( content ) + '</div>' , 'text/html' ) ;
2023-05-10 18:13:22 +02:00
elem = content _new . querySelector ( 'div' ) ;
} else if ( par . acf _fc _layout === 'heading' ) {
if ( par . text )
elem . appendChild ( document . createTextNode ( par . text ) ) ;
2023-08-08 19:28:46 +02:00
} else if ( [ 'image' , 'interactive_image' ] . includes ( par . acf _fc _layout ) ) {
let image _array = [ ] ;
if ( par . image )
image _array = [ par . image ] ;
else if ( par . image _collection )
image _array = par . image _collection ;
for ( let img _elem of image _array ) {
let figure = document . createElement ( 'figure' ) ;
let img = document . createElement ( 'img' ) ;
img . src = img _elem . url ;
img . alt = img _elem . alt ;
2023-10-09 17:28:00 +02:00
img . style = 'width: 95%;' ;
2023-08-08 19:28:46 +02:00
figure . appendChild ( img ) ;
if ( img _elem . caption || img _elem . description || img _elem . alt ) {
let caption = document . createElement ( 'figcaption' ) ;
caption . innerText = img _elem . caption ? ( img _elem . caption + ' ' + img _elem . description ) : img _elem . alt ;
figure . appendChild ( caption ) ;
}
elem . appendChild ( figure ) ;
2023-05-10 18:13:22 +02:00
}
} else if ( par . acf _fc _layout === 'listicle' ) {
let ul = document . createElement ( 'ul' ) ;
for ( let sub _item of par . item ) {
let li = document . createElement ( 'li' ) ;
if ( sub _item . url ) {
let par _link = document . createElement ( 'a' ) ;
par _link . href = sub _item . url ;
par _link . innerText = sub _item . title ;
par _link . target = '_blank' ;
li . appendChild ( par _link ) ;
} else
li . innerText = sub _item . title ;
if ( sub _item . paragraph ) {
let content = sub _item . paragraph ;
2023-08-08 19:28:46 +02:00
let content _new = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( content ) + '</div>' , 'text/html' ) ;
2023-05-10 18:13:22 +02:00
let par _elem = content _new . querySelector ( 'div' ) ;
li . appendChild ( par _elem ) ;
}
if ( sub _item . image ) {
let img = document . createElement ( 'img' ) ;
img . src = sub _item . image . url ;
img . alt = sub _item . image . alt ;
2023-10-09 17:28:00 +02:00
img . style = 'width: 95%;' ;
2023-05-10 18:13:22 +02:00
li . appendChild ( img ) ;
li . appendChild ( document . createElement ( 'br' ) ) ;
}
li . style = 'font-size: 20px; margin: 20px 0px;' ;
ul . appendChild ( li ) ;
}
elem . appendChild ( ul ) ;
} else if ( par . embed _link ) {
let par _link = document . createElement ( 'a' ) ;
par _link . href = par . embed _link ;
par _link . innerText = 'Embedded link: ' + par . embed _link ;
par _link . target = '_blank' ;
elem . appendChild ( par _link ) ;
} else if ( par . acf _fc _layout === 'divider' ) {
elem . appendChild ( document . createElement ( 'hr' ) ) ;
} else if ( par . acf _fc _layout === 'related_articles' ) {
if ( par . posts ) {
for ( let post of par . posts ) {
if ( post . link && post . title . rendered ) {
let par _link = document . createElement ( 'a' ) ;
par _link . href = post . link ;
par _link . innerText = 'You may also like: ' + post . title . rendered ;
elem . appendChild ( par _link ) ;
elem . appendChild ( document . createElement ( 'br' ) ) ;
}
}
}
} else if ( ! [ 'newsletter_signup' , 'pull-quote' ] . includes ( par . acf _fc _layout ) )
console . log ( par ) ;
2023-11-08 22:40:46 +01:00
if ( elem . hasChildNodes ( ) ) {
2023-08-08 19:28:46 +02:00
elem . style = 'font-family: "Source Serif Pro"; font-size: 20px; line-height: 34px;' ;
2023-05-10 18:13:22 +02:00
article . appendChild ( elem ) ;
2023-08-08 19:28:46 +02:00
}
2023-05-10 18:13:22 +02:00
}
}
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'telegraph.co.uk' ) ) {
2023-04-29 09:51:38 +02:00
if ( window . location . pathname . endsWith ( '/amp/' ) ) {
2021-11-30 17:36:15 +01:00
let paywall = document . querySelectorAll ( '.premium-paywall' ) ;
2021-12-23 08:43:19 +01:00
if ( paywall . length ) {
2021-04-10 08:46:50 +02:00
let truncated _content = document . querySelector ( '.truncated-content' ) ;
2021-11-30 17:36:15 +01:00
removeDOMElement ( ... paywall , truncated _content ) ;
2021-12-24 08:32:45 +01:00
amp _unhide _access _hide ( '="c.result=\'ALLOW_ACCESS\'"' , '' , 'amp-ad, amp-embed' , false ) ;
2022-01-09 17:28:17 +01:00
} else {
2024-04-07 10:39:17 +02:00
let ads = 'amp-ad, amp-embed' ;
hideDOMStyle ( ads ) ;
2020-12-16 18:38:05 +01:00
}
2021-11-09 17:18:34 +01:00
} else {
2024-04-07 10:39:17 +02:00
let subwall = '[class^="subwall"]' ;
let ads = '.advert, .commercial-unit' ;
hideDOMStyle ( subwall + ', ' + ads ) ;
2021-04-10 08:46:50 +02:00
}
2020-10-21 19:54:10 +02:00
}
2022-10-24 16:35:15 +02:00
else if ( matchDomain ( 'tes.com' ) ) {
2023-09-04 08:08:43 +02:00
let paywall = document . querySelector ( 'div.tg-paywall-message' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let overlay = document . querySelector ( 'div.tg-paywall-body-overlay' ) ;
if ( overlay )
overlay . removeAttribute ( 'class' ) ;
}
2022-10-24 16:35:15 +02:00
let banner = document . querySelector ( 'div.js-paywall-info' ) ;
removeDOMElement ( banner ) ;
}
2023-07-23 10:38:04 +02:00
else if ( matchDomain ( 'the-tls.co.uk' ) ) {
2023-10-20 15:01:54 +02:00
if ( dompurify _loaded )
getJsonUrl ( 'div.tls-single-article__closed-paywall' , '' , 'div.tls-article-body' , { art _class : 'tls-article-body' } ) ;
2024-04-07 10:39:17 +02:00
let fade = 'div.tls-single-article__closed-paywall-wrapper' ;
let ads = 'div[class*="tls-single-article__ad-slot"]' ;
hideDOMStyle ( fade + ', ' + ads ) ;
2023-07-23 10:38:04 +02:00
}
2022-09-17 08:30:01 +02:00
else if ( matchDomain ( 'theneweuropean.co.uk' ) ) {
let paywall = document . querySelector ( 'div[data-show-fade-on-noaccess]' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let content = document . querySelector ( 'div[data-show-has-access]' ) ;
if ( content )
content . removeAttribute ( 'data-show-has-access' ) ;
}
let banners = document . querySelectorAll ( 'div[data-show-subs-blocked]' ) ;
removeDOMElement ( ... banners ) ;
}
2024-02-25 17:25:05 +01:00
else if ( matchDomain ( 'thestage.co.uk' ) ) {
let url = window . location . href ;
getArchive ( url , 'div#ao-MeteringDNAllow' , '' , 'div[id^="aos-FeatureArticle2Col-"]' ) ;
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'thetimes.co.uk' ) ) {
2021-06-19 19:04:34 +02:00
let url = window . location . href ;
2022-02-03 20:16:59 +01:00
if ( window . location . hostname !== 'epaper.thetimes.co.uk' ) {
2024-01-15 18:46:33 +01:00
func _post = function ( ) {
2024-02-12 10:43:31 +01:00
let figure = document . querySelector ( 'figure > div[style] > div[style]' ) ;
if ( figure ) {
figure . removeAttribute ( 'style' ) ;
figure . parentNode . removeAttribute ( 'style' ) ;
}
let style _new = 'display: block; margin-left: auto; margin-right: auto; width: 90%;' ;
let inline _images = document . querySelectorAll ( 'img[style][src^="https"]' ) ;
for ( let elem of inline _images ) {
elem . style = style _new ;
elem . parentNode . removeAttribute ( 'style' ) ;
}
let headers = document . querySelectorAll ( 'article:not([id]) div[style*="text-align"]' ) ;
for ( let elem of headers )
elem . style = style _new + ' text-align: center;' ;
2023-11-25 11:48:36 +01:00
for ( let n = 0 ; n < 5 ; n ++ ) {
window . setTimeout ( function ( ) {
let page _scroll = document . querySelectorAll ( 'html, body' ) ;
for ( let elem of page _scroll )
elem . style = 'overflow: auto !important; height: 100% !important;' ;
} , n * 500 ) ;
}
2022-02-03 20:16:59 +01:00
}
2024-01-14 11:37:30 +01:00
if ( ! url . includes ( '?shareToken=' ) ) {
2024-01-15 18:46:33 +01:00
getArchive ( url , 'div#paywall-portal-article-footer' , '' , 'article#article-main' ) ;
2024-01-14 11:37:30 +01:00
}
2022-08-11 21:51:18 +02:00
let paywall _page = document . querySelector ( 'div#paywall-portal-page-footer' ) ;
2023-01-17 12:16:38 +01:00
let block = document . querySelector ( '.subscription-block' ) ;
2023-09-03 07:20:22 +02:00
removeDOMElement ( paywall _page , block ) ;
2024-04-07 10:39:17 +02:00
let ads = '#ad-article-inline, div#sticky-ad-header, div[class*="InlineAdWrapper"], div[class*="NativeAd"], div.gyLkkj' ;
hideDOMStyle ( ads ) ;
2021-06-13 21:59:46 +02:00
}
2020-11-07 17:12:37 +01:00
}
2023-10-12 18:27:55 +02:00
else if ( matchDomain ( 'unherd.com' ) ) {
let preview = document . querySelector ( 'div#premiumpreview' ) ;
if ( preview ) {
removeDOMElement ( preview ) ;
let premium = document . querySelector ( 'div#premiumcontent' ) ;
if ( premium )
premium . removeAttribute ( 'id' ) ;
}
}
2023-02-17 18:19:29 +01:00
else if ( matchDomain ( uk _nat _world _domains ) || document . querySelector ( 'footer > div a[href^="https://www.nationalworldplc.com"]' ) ) {
let premium = document . querySelector ( 'div.premium' ) ;
if ( premium )
premium . removeAttribute ( 'class' ) ;
let amp _images = document . querySelectorAll ( 'article amp-img[src^="https://"]' ) ;
for ( let amp _image of amp _images ) {
let elem = document . createElement ( 'img' ) ;
Object . assign ( elem , {
src : amp _image . getAttribute ( 'src' ) ,
alt : amp _image . getAttribute ( 'alt' )
} ) ;
amp _image . parentNode . replaceChild ( elem , amp _image ) ;
}
2024-04-07 10:39:17 +02:00
let ads = 'div[class^="MarkupAds__Container-"], div[class*="_AdContainer-"], div[class^="Dailymotion__Wrapper-"]' ;
hideDOMStyle ( ads ) ;
2023-02-17 18:19:29 +01:00
}
2022-07-30 07:41:59 +02:00
else
2021-04-25 13:45:36 +02:00
csDone = true ;
2021-04-10 08:46:50 +02:00
2024-01-22 17:51:00 +01:00
} else if ( window . location . hostname . match ( /\.(ar|br|cl|pe|uy)$/ ) || matchDomain ( [ 'cambiocolombia.com' , 'clarin.com' , 'elespectador.com' , 'elmercurio.com' , 'eltiempo.com' , 'eltribuno.com' , 'exame.com' , 'globo.com' , 'lasegunda.com' , 'latercera.com' , 'revistaoeste.com' ] ) ) { //south america
2021-04-10 08:46:50 +02:00
2021-12-12 18:32:28 +01:00
if ( matchDomain ( 'abril.com.br' ) ) {
if ( window . location . pathname . endsWith ( '/amp/' ) ) {
let paywall = document . querySelector ( '.piano-modal' ) ;
2023-09-03 07:20:22 +02:00
removeDOMElement ( paywall ) ;
2024-04-07 10:31:08 +02:00
let ads = 'amp-ad, amp-embed' ;
hideDOMStyle ( ads ) ;
2023-07-11 20:48:44 +02:00
} else {
2024-04-07 10:31:08 +02:00
let ads = 'div.ads, div[class^="ads-"], div.MGID' ;
hideDOMStyle ( ads ) ;
2021-12-12 18:32:28 +01:00
}
}
2023-02-21 17:45:05 +01:00
else if ( matchDomain ( ar _grupo _clarin _domains ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div.ad-slot, div.box-adv, div.wrapperblock, div.banner, div[id^="div-gpt-ad-flotante"]' ;
hideDOMStyle ( ads ) ;
2023-09-03 07:20:22 +02:00
let ads _inline = document . querySelectorAll ( 'div > div.sticky, div > div[id^="div-gpt-ad-inread"], div > div[id^="div-gpt-ad-caja"], div > div[id^="div-gpt-ad-horizontal"]' ) ;
for ( let ad of ads _inline )
hideDOMElement ( ad . parentNode ) ;
2022-01-19 20:29:41 +01:00
}
2023-09-13 07:54:14 +02:00
else if ( matchDomain ( 'cambiocolombia.com' ) ) {
if ( ! window . location . pathname . startsWith ( '/amp/' ) ) {
let paywall = document . querySelector ( 'div#require-access' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
window . location . href = '/amp' + window . location . pathname ;
}
} else {
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
}
}
2023-10-28 17:30:40 +02:00
else if ( matchDomain ( 'cartacapital.com.br' ) ) {
2024-02-17 09:08:32 +01:00
if ( ! window . location . pathname . endsWith ( '/amp/' ) ) {
let paywall = document . querySelector ( 'aside.paywall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = json [ 1 ] . articleBody . replace ( /\s{2,}/g , '\r\n\r\n' ) ;
let content = document . querySelector ( 'section.s-content__text' ) ;
if ( json _text && content ) {
content . innerHTML = '' ;
let article _new = document . createElement ( 'p' ) ;
article _new . innerText = json _text ;
content . appendChild ( article _new ) ;
}
2023-10-28 17:30:40 +02:00
}
2024-02-17 09:08:32 +01:00
} catch ( err ) {
console . log ( err ) ;
2023-10-28 17:30:40 +02:00
}
2024-02-17 09:08:32 +01:00
}
} else {
let content _soft = document . querySelector ( 'div.contentSoft' ) ;
if ( content _soft ) {
content _soft . removeAttribute ( 'class' ) ;
let freemium = document . querySelectorAll ( 'div[class^="s-freemium"], div.maggazine-add' ) ;
removeDOMElement ( ... freemium ) ;
2023-10-28 17:30:40 +02:00
}
}
2024-04-07 10:31:08 +02:00
let ads = 'div.div_ros_topo' ;
hideDOMStyle ( ads ) ;
2024-02-17 09:08:32 +01:00
} else
ampToHtml ( ) ;
2023-10-28 17:30:40 +02:00
}
2023-08-20 07:11:16 +02:00
else if ( matchDomain ( 'crusoe.com.br' ) ) {
2024-04-07 10:39:17 +02:00
let ads = '#gpt-leaderboard, .ads_desktop, .catchment-box' ;
hideDOMStyle ( ads ) ;
2022-07-29 18:20:36 +02:00
}
2022-02-11 17:51:33 +01:00
else if ( matchDomain ( pe _grupo _elcomercio _domains ) ) {
2022-09-16 08:13:19 +02:00
let paywall = document . querySelector ( '.paywall' ) ;
2021-04-10 08:46:50 +02:00
if ( paywall ) {
2022-09-16 08:13:19 +02:00
paywall . removeAttribute ( 'class' ) ;
2021-04-10 08:46:50 +02:00
paywall . removeAttribute ( 'style' ) ;
2022-09-16 08:13:19 +02:00
let fade = document . querySelector ( 'p.story-contents--fade' ) ;
if ( fade )
fade . classList . remove ( 'story-contents--fade' ) ;
2021-04-10 08:46:50 +02:00
}
2024-04-07 10:31:08 +02:00
let ads = 'div[class^="content_gpt"]' ;
hideDOMStyle ( ads ) ;
2020-11-15 14:15:12 +01:00
}
2021-12-23 17:36:09 +01:00
else if ( matchDomain ( 'elespectador.com' ) ) {
2022-04-26 21:39:02 +02:00
if ( window . location . search . match ( /(\?|&)outputType=amp/ ) ) {
2022-03-15 18:34:21 +01:00
amp _unhide _subscr _section ( 'amp-ad, amp-embed, [class^="Widget"], amp-fx-flying-carpet' ) ;
2021-12-23 17:36:09 +01:00
} else {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div.exclusive_validation' ) ;
2021-12-23 17:36:09 +01:00
}
}
2023-11-30 08:47:52 +01:00
else if ( matchDomain ( [ 'elmercurio.com' , 'lasegunda.com' ] ) ) {
2021-04-10 08:46:50 +02:00
window . setTimeout ( function ( ) {
let elem _hidden = document . querySelectorAll ( '[style="visibility:hidden"]' ) ;
for ( let elem of elem _hidden )
elem . removeAttribute ( 'style' ) ;
2021-05-04 20:14:56 +02:00
let page _pdf _content = document . querySelector ( 'div.page_pdf_content' ) ;
let close _html = document . querySelector ( 'div.close_html' ) ;
2022-06-26 09:20:53 +02:00
let cont _page _full = document . querySelector ( 'div.cont_page_full' ) ;
removeDOMElement ( page _pdf _content , close _html , cont _page _full ) ;
2022-03-08 19:04:50 +01:00
} , 1000 ) ;
2021-07-26 20:02:44 +02:00
window . setTimeout ( function ( ) {
let cont _articlelight = document . querySelector ( 'div.cont_articlelight' ) ;
if ( cont _articlelight )
cont _articlelight . setAttribute ( 'style' , 'height: 100% !important; width: 90% !important' ) ;
2022-03-08 19:04:50 +01:00
} , 3000 ) ;
2023-11-30 08:47:52 +01:00
if ( window . location . pathname . startsWith ( '/mobile' ) ) {
let lessreadmore = document . querySelectorAll ( 'article.lessreadmore' ) ;
for ( let article of lessreadmore )
article . classList . remove ( 'lessreadmore' ) ;
let bt _readmore = document . querySelectorAll ( 'div[id*="bt_readmore_"]' ) ;
removeDOMElement ( ... bt _readmore ) ;
}
2020-11-17 17:39:31 +01:00
}
2023-04-12 17:03:09 +02:00
else if ( matchDomain ( 'elobservador.com.uy' ) ) {
if ( window . location . pathname . endsWith ( '/amp' ) ) {
amp _unhide _access _hide ( '="observador.mostrarNota"' ) ;
let amp _images = document . querySelectorAll ( 'div.fixed-container > amp-img.null' ) ;
for ( let amp _image of amp _images ) {
let elem = document . createElement ( 'img' ) ;
Object . assign ( elem , {
src : amp _image . getAttribute ( 'src' ) ,
alt : amp _image . getAttribute ( 'alt' ) ,
title : amp _image . getAttribute ( 'title' )
} ) ;
amp _image . parentNode . replaceChild ( elem , amp _image ) ;
}
} else {
let paywall = document . querySelector ( 'div.mensaje_member' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
window . location . href = window . location . pathname + '/amp' ;
}
}
}
2023-02-16 21:55:20 +01:00
else if ( matchDomain ( 'eltiempo.com' ) ) {
let modulos = document . querySelector ( 'div.modulos' ) ;
if ( modulos )
modulos . classList . remove ( 'modulos' ) ;
}
2023-07-12 16:46:59 +02:00
else if ( matchDomain ( 'eltribuno.com' ) ) {
let lazy _images = document . querySelectorAll ( 'img.lazyload[data-src]:not([src])' ) ;
for ( let elem of lazy _images ) {
elem . src = elem . getAttribute ( 'data-src' ) ;
elem . classList . remove ( 'lazyload' ) ;
}
}
2022-06-01 17:39:27 +02:00
else if ( matchDomain ( 'em.com.br' ) ) {
if ( ! window . location . pathname . endsWith ( '/amp.html' ) ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( '.news-blocked-content' ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div.ads, div.containerads' ;
hideDOMStyle ( ads ) ;
2022-06-01 17:39:27 +02:00
} else {
amp _unhide _subscr _section ( 'amp-ad, amp-embed, amp-fx-flying-carpet' ) ;
let compress _text = document . querySelector ( 'div.compress-text' ) ;
if ( compress _text )
compress _text . classList . remove ( 'compress-text' ) ;
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'estadao.com.br' ) ) {
2022-09-24 18:54:10 +02:00
if ( window . location . pathname . match ( /(\.amp$|^\/amp\/)/ ) || window . location . search . startsWith ( '?amp' ) ) {
2023-10-11 21:18:32 +02:00
amp _unhide _access _hide ( '="outputValue=\'hide_paywall\'"' , '="outputValue=\'show_paywall\'"' , 'amp-ad, amp-embed, amp-fx-flying-carpet, div[class^="pAd"], div.ads-container' ) ;
2021-12-12 18:32:28 +01:00
} else {
let paywall = document . getElementById ( 'paywall-wrapper-iframe-estadao' ) ;
2023-09-03 07:20:22 +02:00
removeDOMElement ( paywall ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div[class^="styles__Container-sc-"]' ;
hideDOMStyle ( ads ) ;
2021-12-12 18:32:28 +01:00
}
2020-11-21 19:21:29 +01:00
}
2024-01-22 17:51:00 +01:00
else if ( matchDomain ( 'exame.com' ) ) {
2024-04-07 10:31:08 +02:00
window . localStorage . removeItem ( 'pywllcount' ) ;
let ads = 'div[id^="ads_"]' ;
hideDOMStyle ( ads ) ;
2024-01-22 17:51:00 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'folha.uol.com.br' ) ) {
2023-08-20 07:11:16 +02:00
if ( window . location . pathname . startsWith ( '/amp/' ) ) {
amp _unhide _subscr _section ( 'amp-ad, amp-sticky-ad, amp-embed' ) ;
2021-12-12 18:32:28 +01:00
} else {
2023-08-20 07:11:16 +02:00
let signup = document . querySelector ( '.c-top-signup' ) ;
removeDOMElement ( signup ) ;
2021-12-12 18:32:28 +01:00
}
2020-11-22 15:25:28 +01:00
}
2022-03-15 18:34:21 +01:00
else if ( matchDomain ( 'blogfolha.uol.com.br' ) ) {
let hidden _images = document . querySelectorAll ( 'div[id^="attachment_"] > a > img[src^="http:"][srcset]' ) ;
for ( let hidden _image of hidden _images ) {
hidden _image . src = hidden _image . src . replace ( 'http:' , 'https:' ) ;
hidden _image . srcset = '' ;
}
}
2023-05-22 17:40:33 +02:00
else if ( matchDomain ( 'gauchazh.clicrbs.com.br' ) ) {
2023-10-29 08:36:37 +01:00
window . setTimeout ( function ( ) {
2023-11-12 08:46:17 +01:00
let blink = document . querySelector ( 'div:not(.hidden) > div.body.blink' ) ;
2023-10-29 08:36:37 +01:00
if ( blink ) {
csDoneOnce = true ;
2023-11-12 08:46:17 +01:00
refreshCurrentTab ( ) ;
2023-10-29 08:36:37 +01:00
}
} , 2000 ) ;
2024-04-07 10:31:08 +02:00
let ads = 'div.ad-banner' ;
hideDOMStyle ( ads ) ;
2023-05-22 17:40:33 +02:00
}
2023-12-03 11:44:13 +01:00
else if ( matchDomain ( 'gazetadopovo.com.br' ) ) {
if ( window . location . pathname . endsWith ( '/amp/' ) ) {
2024-01-29 12:41:35 +01:00
amp _unhide _subscr _section ( 'div.ads-amp, amp-embed, div.tpl-wrapper' , false ) ;
2023-04-12 17:03:09 +02:00
} else {
2024-04-07 10:31:08 +02:00
let ads = 'div.c-ads' ;
hideDOMStyle ( ads ) ;
2023-04-12 17:03:09 +02:00
}
}
2023-07-30 10:02:19 +02:00
else if ( matchDomain ( 'globo.com' ) ) {
2023-08-02 07:53:08 +02:00
if ( matchDomain ( 'valor.globo.com' ) ) {
if ( ! window . location . pathname . startsWith ( '/google/amp/' ) ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div.paywall' ) ;
2023-08-02 07:53:08 +02:00
} else {
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
2024-02-22 16:40:34 +01:00
amp _images _replace ( ) ;
2022-08-12 07:12:26 +02:00
}
2023-08-02 07:53:08 +02:00
} else if ( window . location . pathname . includes ( '/amp/' ) )
ampToHtml ( ) ;
if ( ! window . location . pathname . includes ( '/amp/' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div[id^="ad-container"], div.content-ads, div[class^="block__advertising"], div#pub-in-text-wrapper' ;
hideDOMStyle ( ads ) ;
2023-03-21 18:12:34 +01:00
}
2022-08-12 07:12:26 +02:00
}
2023-12-03 11:44:13 +01:00
else if ( matchDomain ( 'ladiaria.com.uy' ) ) {
if ( window . location . search . startsWith ( '?display=amp' ) ) {
csDoneOnce = true ;
ampToHtml ( ) ;
} else {
let banners = document . querySelectorAll ( 'div.softwall, div.subscribe-notice' ) ;
removeDOMElement ( ... banners ) ;
}
}
2024-02-16 19:28:06 +01:00
else if ( matchDomain ( 'lanacion.com.ar' ) ) {
2024-04-07 10:31:08 +02:00
let ads = 'div.mod-banner' ;
hideDOMStyle ( ads ) ;
2024-02-16 19:28:06 +01:00
}
2023-12-03 11:44:13 +01:00
else if ( matchDomain ( 'latercera.com' ) ) {
let subscr _banner = document . querySelector ( '.empty' ) ;
removeDOMElement ( subscr _banner ) ;
}
2023-08-31 21:07:00 +02:00
else if ( matchDomain ( 'revistaoeste.com' ) ) {
if ( window . location . pathname . startsWith ( '/revista/' ) ) {
let intro = document . querySelector ( 'div.is-locked' ) ;
let sub _panel = document . querySelector ( 'div.subscribe-panel' ) ;
removeDOMElement ( intro , sub _panel ) ;
let div _hidden = document . querySelector ( 'div.hidden[data-url]' ) ;
if ( div _hidden )
div _hidden . classList . remove ( 'hidden' ) ;
} else {
let div _expandable = document . querySelector ( 'div.expandable' ) ;
if ( div _expandable )
div _expandable . classList . remove ( 'expandable' ) ;
}
}
2023-09-30 13:08:32 +02:00
else if ( window . location . hostname . endsWith ( '.cl' ) && document . querySelector ( 'head > meta[property="og:image"][content*="://impresa.soy-chile.cl/"]' ) ) {
2023-05-13 19:13:03 +02:00
window . setTimeout ( function ( ) {
let content = document . querySelector ( 'div.content' ) ;
if ( content )
content . setAttribute ( 'id' , 'content_new' ) ;
let modal _wrapper = document . querySelector ( 'div.modal-wrapper' ) ;
removeDOMElement ( modal _wrapper ) ;
} , 1000 ) ;
waitDOMAttribute ( 'body' , 'BODY' , 'class' , node => node . removeAttribute ( 'class' ) , true ) ;
csDoneOnce = true ;
2020-11-30 20:39:13 +01:00
}
2021-04-10 08:46:50 +02:00
else
2021-04-25 13:45:36 +02:00
csDone = true ;
2020-12-03 16:52:33 +01:00
2024-02-17 09:08:32 +01:00
} else { //other (like com/org & not ar/at/au/be/br/cat/ch/cl/de/dk/fi/fr/es/ie/nl/pe/pt/se/uk/uy))
2021-04-10 08:46:50 +02:00
2021-11-16 18:21:56 +01:00
if ( matchDomain ( usa _adv _local _domains ) ) {
2024-02-15 12:24:54 +01:00
if ( window . location . search . startsWith ( '?outputType=amp' ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'amp-embed' ;
2024-04-09 17:07:48 +02:00
hideDOMStyle ( ads ) ;
2021-11-16 18:21:56 +01:00
} else {
2024-02-15 12:24:54 +01:00
let paywall _sel = 'div.paywall' ;
let paywall = document . querySelector ( paywall _sel ) ;
let article = document . querySelector ( 'div.entry-content' ) ;
if ( paywall && article && dompurify _loaded ) {
let fusion _script = document . querySelector ( 'script#fusion-metadata' ) ;
if ( fusion _script && fusion _script . text . includes ( 'Fusion.globalContent=' ) ) {
paywall . classList . remove ( 'paywall' ) ;
try {
let json = JSON . parse ( fusion _script . text . split ( 'Fusion.globalContent=' ) [ 1 ] . split ( '};' ) [ 0 ] + '}' ) ;
if ( json ) {
article . innerHTML = '' ;
let parser = new DOMParser ( ) ;
let pars = json . content _elements ;
for ( let par of pars ) {
let par _new ;
if ( [ 'header' , 'text' ] . includes ( par . type ) ) {
if ( par . content ) {
let doc = parser . parseFromString ( '<p class="article__paragraph">' + DOMPurify . sanitize ( par . content ) + '</p>' , 'text/html' ) ;
par _new = doc . querySelector ( 'p' ) ;
}
} else if ( par . image _type ) {
if ( par . url ) {
par _new = document . createElement ( 'figure' ) ;
par _new . className = 'article__image' ;
par _new . style = 'width: 75%; margin-left: auto; margin-right: auto;' ;
let img = document . createElement ( 'img' ) ;
img . src = par . url ;
if ( par . alt _text )
img . alt = par . alt _text ;
par _new . appendChild ( img ) ;
let caption = document . createElement ( 'figcaption' ) ;
caption . className = 'article__image-caption' ;
let cap _par = document . createElement ( 'p' ) ;
cap _par . innerText = par . caption ;
if ( par . credits && par . credits . by && par . credits . by [ 0 ] && par . credits . by [ 0 ] . byline )
cap _par . innerText += ' - ' + par . credits . by [ 0 ] . byline ;
caption . appendChild ( cap _par ) ;
par _new . appendChild ( caption ) ;
}
} else if ( ! [ 'raw_html' ] . includes ( par . type ) ) {
console . log ( par ) ;
}
if ( par _new )
article . appendChild ( par _new ) ;
}
}
} catch ( err ) {
console . log ( err ) ;
}
} else
amp _redirect ( paywall _sel , '' , window . location . pathname + '?outputType=amp' ) ;
}
2021-11-16 18:21:56 +01:00
}
}
2023-05-03 08:32:15 +02:00
else if ( matchDomain ( 'americanbanker.com' ) || matchDomain ( usa _arizent _custom _domains ) ) {
2021-05-04 22:13:32 +02:00
let inline _gate = document . querySelector ( '.inline-gate' ) ;
if ( inline _gate ) {
inline _gate . classList . remove ( 'inline-gate' ) ;
let inline _gated = document . querySelectorAll ( '.inline-gated' ) ;
for ( let elem of inline _gated )
elem . classList . remove ( 'inline-gated' ) ;
}
2020-12-08 18:02:32 +01:00
}
2021-12-02 18:52:30 +01:00
else if ( matchDomain ( 'artnet.com' ) ) {
2021-12-12 09:38:17 +01:00
if ( window . location . pathname . endsWith ( '/amp-page' ) ) {
amp _unhide _subscr _section ( ) ;
} else {
let body _hidden = document . querySelector ( '.article-body' ) ;
if ( body _hidden )
body _hidden . style = 'display:block;' ;
2023-12-06 09:07:58 +01:00
let banner = document . querySelector ( 'div[id^="issuem-leaky-paywall-"]' ) ;
removeDOMElement ( banner ) ;
2021-12-12 09:38:17 +01:00
}
2021-12-02 18:52:30 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'asia.nikkei.com' ) ) {
2023-12-04 12:57:57 +01:00
let paywall = document . querySelector ( 'div#paywall-offer > div.tp-container-inner' ) ;
if ( paywall ) {
2023-08-27 08:04:44 +02:00
removeDOMElement ( paywall ) ;
2023-12-04 12:57:57 +01:00
refreshCurrentTab ( ) ;
2023-08-27 08:04:44 +02:00
}
2021-11-09 17:18:34 +01:00
let popup = document . querySelector ( '#pianoj_ribbon' ) ;
2021-04-10 08:46:50 +02:00
removeDOMElement ( popup ) ;
2020-12-20 21:28:12 +01:00
}
2022-10-01 12:35:59 +02:00
else if ( matchDomain ( 'axios.com' ) ) {
2022-10-24 20:15:28 +02:00
function axios _noscroll ( node ) {
node . removeAttribute ( 'style' ) ;
2024-04-07 10:39:17 +02:00
let overlay = 'div[class^="Modal_paywallContainer"]' ;
hideDOMStyle ( overlay , 2 ) ;
2022-10-24 20:15:28 +02:00
}
waitDOMAttribute ( 'html' , 'HTML' , 'style' , axios _noscroll , true ) ;
2024-04-07 10:39:17 +02:00
let banners = 'div[data-vars-experiment="pro-paywall"], .apexAd' ;
hideDOMStyle ( banners ) ;
2022-10-24 20:15:28 +02:00
csDoneOnce = true ;
2022-10-01 12:35:59 +02:00
}
2023-10-20 15:01:54 +02:00
else if ( matchDomain ( 'balkaninsight.com' ) ) {
if ( dompurify _loaded )
getJsonUrl ( 'div.subscribeWrapper' , '' , 'div.post_teaser' , { art _append : true , art _hold : true } ) ;
}
2024-03-21 20:32:49 +01:00
else if ( matchDomain ( [ 'barandbench.com' , 'thenewsminute.com' ] ) ) {
let paywall = document . querySelector ( 'div[id*="paywall-banner"]' ) ;
if ( paywall && dompurify _loaded ) {
2023-08-05 08:14:25 +02:00
removeDOMElement ( paywall ) ;
2024-03-21 20:32:49 +01:00
let article = document . querySelector ( 'div[class^="paywall-story-"]' ) ;
if ( article ) {
let article _new = getArticleQuintype ( ) ;
if ( article _new && article . parentNode )
article . parentNode . replaceChild ( article _new , article ) ;
2023-08-05 08:14:25 +02:00
}
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'barrons.com' ) ) {
2024-01-29 12:41:35 +01:00
if ( ! window . location . pathname . startsWith ( '/amp/' ) ) {
2023-10-25 08:24:09 +02:00
amp _redirect ( 'div#cx-interstitial-snippet' , '' , '/amp' + window . location . pathname ) ;
2022-04-24 10:01:13 +02:00
let continue _buttons = document . querySelectorAll ( 'button.snippet__buttons--continue' ) ;
for ( let elem of continue _buttons )
elem . addEventListener ( 'click' , function ( ) { window . location . reload ( ) ; } ) ;
2024-04-07 10:39:17 +02:00
let ads = 'div[class*="_AdWrapper-"], div[class*="-adWrapper-"]' ;
hideDOMStyle ( ads ) ;
2021-04-10 08:46:50 +02:00
} else {
2024-01-29 12:41:35 +01:00
amp _unhide _subscr _section ( '.wsj-ad, amp-ad' ) ;
2024-02-22 16:40:34 +01:00
amp _images _replace ( ) ;
2024-01-29 12:41:35 +01:00
let login = document . querySelector ( 'div.login-section-container' ) ;
removeDOMElement ( login ) ;
2021-04-10 08:46:50 +02:00
}
}
2021-12-11 19:12:13 +01:00
else if ( matchDomain ( 'billboard.com' ) ) {
if ( window . location . pathname . endsWith ( '/amp/' ) ) {
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
}
}
2024-04-12 08:01:22 +02:00
else if ( matchDomain ( 'bizjournals.com' ) ) {
let paywall = document . querySelector ( 'div[data-dev="CxWidget_article:wall"]' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let hidden _content = document . querySelector ( 'article div[style="display: none;"]' ) ;
if ( hidden _content )
hidden _content . removeAttribute ( 'style' ) ;
} else {
let paywall = document . querySelector ( 'div#cxense-paywall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let paywalled _content = document . querySelectorAll ( '.paywalled-content[style]' ) ;
for ( let elem of paywalled _content )
elem . removeAttribute ( 'style' ) ;
}
}
let dialog = document . querySelector ( 'div[id^="headlessui-dialog-"]' ) ;
if ( dialog ) {
removeDOMElement ( dialog ) ;
let body = document . querySelector ( 'body' ) ;
if ( body )
body . click ( ) ;
}
let ads = 'div.adwrap' ;
hideDOMStyle ( ads ) ;
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'bloomberg.com' ) ) {
2023-12-04 12:57:57 +01:00
let paywall _sel = 'div[id^="fortress-"]' ;
2024-04-07 10:39:17 +02:00
let paywall = paywall _sel ;
let leaderboard = 'div[id^="leaderboard"], div[class^="leaderboard"], div.canopy-container' ;
let ads = 'div[data-ad-status], div[data-ad-type], div[class^="FullWidthAd_"], div.adWrapper' ;
hideDOMStyle ( paywall + ', ' + leaderboard + ', ' + ads ) ;
2023-12-04 12:57:57 +01:00
csDoneOnce = true ;
waitDOMElement ( paywall _sel , 'DIV' , removeDOMElement , true ) ;
2023-11-06 19:48:18 +01:00
waitDOMAttribute ( 'body' , 'BODY' , 'data-paywall-overlay-status' , node => node . removeAttribute ( 'data-paywall-overlay-status' ) , true ) ;
2023-04-28 09:21:14 +02:00
if ( window . location . pathname . startsWith ( '/live/' ) ) {
setInterval ( function ( ) {
window . localStorage . clear ( ) ;
} , 15 * 60 * 1000 ) ;
}
2023-11-06 19:48:18 +01:00
window . setTimeout ( function ( ) {
2023-11-15 11:52:34 +01:00
let shimmering = document . querySelector ( 'article.first-story div[class^="Placeholder_placeholderParagraphWrapper-"]' ) ;
2023-11-06 19:48:18 +01:00
if ( shimmering ) {
header _nofix ( shimmering . parentNode , 'BPC > disable Dark Reader or enable Javascript for site' ) ;
}
2023-12-04 12:57:57 +01:00
} , 5000 ) ;
2021-04-10 08:46:50 +02:00
}
2023-02-28 18:16:44 +01:00
else if ( matchDomain ( 'bloombergadria.com' ) ) {
let article _hidden = document . querySelector ( 'article[style]' ) ;
if ( article _hidden )
article _hidden . removeAttribute ( 'style' ) ;
2024-04-07 10:39:17 +02:00
let ads = '.banner' ;
hideDOMStyle ( ads ) ;
2023-02-28 18:16:44 +01:00
}
2021-06-14 21:45:26 +02:00
else if ( matchDomain ( 'bostonglobe.com' ) ) {
2021-12-11 19:46:23 +01:00
if ( window . location . search . startsWith ( '?outputType=amp' ) ) {
amp _unhide _subscr _section ( ) ;
} else {
2024-04-07 10:39:17 +02:00
let ads = 'div.arc_ad' ;
hideDOMStyle ( ads ) ;
2021-12-11 19:46:23 +01:00
}
2021-06-14 21:45:26 +02:00
}
2022-06-26 21:51:30 +02:00
else if ( matchDomain ( 'bqprime.com' ) ) {
if ( window . location . pathname . startsWith ( '/amp/' ) ) {
2024-03-12 12:05:27 +01:00
amp _unhide _subscr _section ( ) ;
2023-01-07 13:26:05 +01:00
} else {
2023-01-12 19:18:09 +01:00
window . setTimeout ( function ( ) {
let geo _block = document . querySelector ( 'div[class*="geotag-container_"]' ) ;
if ( ! window . location . search . startsWith ( '?rel=geo_block' ) ) {
2023-01-07 13:26:05 +01:00
if ( geo _block ) {
removeDOMElement ( geo _block ) ;
window . location . href = window . location . pathname + '?rel=geo_block' ;
}
2023-01-12 19:18:09 +01:00
} else {
if ( geo _block )
refreshCurrentTab ( ) ;
else {
let hidden _images = document . querySelectorAll ( 'img[src^="data:image/"][data-src]' ) ;
for ( let elem of hidden _images )
elem . setAttribute ( 'src' , elem . getAttribute ( 'data-src' ) ) ;
}
}
} , 1000 ) ;
2022-06-26 21:51:30 +02:00
}
2024-04-07 10:39:17 +02:00
let ads = '.responsive-ad' ;
hideDOMStyle ( ads ) ;
2022-06-26 21:51:30 +02:00
}
2023-07-23 17:39:05 +02:00
else if ( matchDomain ( 'business-standard.com' ) ) {
2023-11-12 08:46:17 +01:00
function bs _main ( node ) {
removeDOMElement ( node ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
if ( json _script ) {
try {
2023-07-23 17:39:05 +02:00
let json = JSON . parse ( json _script . text ) ;
2023-11-12 08:46:17 +01:00
if ( json && json . props . pageProps . data . htmlContent ) {
let json _text = json . props . pageProps . data . htmlContent ;
2024-04-12 13:00:42 +02:00
let content = document . querySelector ( 'div[class^="MainStory_storycontent__"' ) ;
2023-07-23 17:39:05 +02:00
if ( json _text && content ) {
2024-04-12 13:00:42 +02:00
content . innerHTML = '' ;
2023-11-12 08:46:17 +01:00
let intro = content . querySelectorAll ( 'div:not([class]' ) ;
removeDOMElement ( ... intro ) ;
let parser = new DOMParser ( ) ;
2024-04-12 13:00:42 +02:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( json _text , dompurify _options ) + '</div>' , 'text/html' ) ;
2023-11-12 08:46:17 +01:00
let content _new = doc . querySelector ( 'div' ) ;
2024-04-12 13:00:42 +02:00
window . setTimeout ( function ( ) {
content . appendChild ( content _new ) ;
} , 1000 ) ;
2023-07-23 17:39:05 +02:00
}
2023-11-12 08:46:17 +01:00
} else
refreshCurrentTab ( ) ;
} catch ( err ) {
console . log ( err ) ;
}
}
}
if ( ! window . location . pathname . startsWith ( '/amp/' ) ) {
if ( dompurify _loaded ) {
let paywall _sel = 'div.subscribe-page' ;
let paywall = document . querySelector ( paywall _sel ) ;
if ( paywall ) {
bs _main ( paywall )
} else {
csDoneOnce = true ;
waitDOMElement ( paywall _sel , 'DIV' , bs _main , false ) ;
2023-07-23 17:39:05 +02:00
}
}
2024-04-07 10:39:17 +02:00
let banner = 'section.sbcrbtmlfull' ;
let ads = 'div.advertisement-bg, div[id^="between_article_content_"]' ;
hideDOMStyle ( banner + ', ' + ads ) ;
2023-07-23 17:39:05 +02:00
} else
ampToHtml ( ) ;
}
2023-03-29 18:05:49 +02:00
else if ( matchDomain ( 'businessinsider.com' ) ) {
2024-04-12 08:18:25 +02:00
let ads = 'div.l-ad, div.in-post-sticky, aside.has-video-ad, div.ad-callout-wrapper' ;
2024-04-07 10:39:17 +02:00
hideDOMStyle ( ads ) ;
2023-03-29 18:05:49 +02:00
}
2022-01-14 15:33:58 +01:00
else if ( matchDomain ( 'businessoffashion.com' ) ) {
2022-08-26 19:50:25 +02:00
if ( window . location . search . startsWith ( '?outputType=amp' ) ) {
amp _unhide _access _hide ( ) ;
} else {
2024-04-07 10:39:17 +02:00
let ads = 'div[class^="default__AdsBlockWrapper"]' ;
hideDOMStyle ( ads ) ;
2022-08-26 19:50:25 +02:00
}
2022-01-14 15:33:58 +01:00
}
2022-07-31 08:31:05 +02:00
else if ( matchDomain ( ca _gcm _domains ) ) {
let paywall = document . querySelector ( 'div._block_1dgevo' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2022-07-31 08:31:05 +02:00
}
let counter = document . querySelector ( 'div#paywall-banner-content' ) ;
removeDOMElement ( counter ) ;
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'cen.acs.org' ) ) {
2022-01-13 17:26:17 +01:00
let meteredBar = document . querySelector ( '.meteredBar' ) ;
removeDOMElement ( meteredBar ) ;
2021-04-10 08:46:50 +02:00
}
2022-08-27 10:11:13 +02:00
else if ( matchDomain ( [ 'chronicle.com' , 'philanthropy.com' ] ) ) {
2021-10-07 19:56:23 +02:00
let preview = document . querySelector ( 'div[data-content-summary]' ) ;
removeDOMElement ( preview ) ;
2022-12-03 08:09:04 +01:00
let article _hidden = document . querySelector ( 'div.contentBody[hidden]' ) ;
2022-09-23 15:32:27 +02:00
if ( article _hidden ) {
2022-12-03 08:09:04 +01:00
let attributes = article _hidden . attributes ;
for ( let elem of attributes ) {
let name = elem . name ;
if ( name !== 'class' )
article _hidden . removeAttribute ( name ) ;
}
2022-09-23 15:32:27 +02:00
}
2021-10-07 19:56:23 +02:00
}
2022-11-14 18:41:18 +01:00
else if ( matchDomain ( 'cnbc.com' ) ) {
let paywall = document . querySelector ( 'div.ArticleGate-proGate' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let article = document . querySelector ( 'div.ArticleBody-articleBody' ) ;
if ( article )
article . style = "margin: 20px 0px; font-family: Lyon,Helvetica,Arial,sans-serif; font-size: 18px; line-height: 1.66" ;
let span _hidden = document . querySelectorAll ( 'span[hidden]' ) ;
for ( let elem of span _hidden ) {
elem . removeAttribute ( 'hidden' ) ;
elem . removeAttribute ( 'class' ) ;
}
}
}
2024-03-19 08:51:06 +01:00
else if ( matchDomain ( 'cnn.com' ) ) {
2024-04-07 10:31:08 +02:00
let regwall _keys = Object . keys ( window . localStorage ) . filter ( x => x . match ( /reg_?wall/i ) ) ;
for ( let item of regwall _keys )
window . localStorage . removeItem ( item ) ;
let ads = 'div[class^="ad-slot-"], div.container__ads' ;
hideDOMStyle ( ads ) ;
2024-03-19 08:51:06 +01:00
}
2023-09-26 18:57:22 +02:00
else if ( matchDomain ( 'columbian.com' ) ) {
let url = window . location . href ;
2024-01-15 18:46:33 +01:00
func _post = function ( ) {
2023-09-26 18:57:22 +02:00
let modal = document . querySelector ( 'div.modal' ) ;
let fade = document . querySelector ( 'div[style*="background-image: linear-gradient"]' ) ;
2023-12-06 19:19:00 +01:00
removeDOMElement ( modal , fade ) ;
2023-09-26 18:57:22 +02:00
}
2024-01-15 18:46:33 +01:00
getGoogleWebcache ( url , 'div#inline-paywall' , '' , 'div[itemprop="articleBody"]' ) ;
2023-09-26 18:57:22 +02:00
}
2021-07-28 18:33:12 +02:00
else if ( matchDomain ( 'csmonitor.com' ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
removeDOMElement ( paywall ) ;
}
2022-05-04 17:58:35 +02:00
else if ( matchDomain ( 'dailywire.com' ) ) {
let paywall = document . querySelector ( '#post-body-text > div > div[class]' ) ;
if ( paywall )
paywall . removeAttribute ( 'class' ) ;
}
2021-12-11 19:46:23 +01:00
else if ( matchDomain ( 'dallasnews.com' ) ) {
if ( window . location . search . startsWith ( '?outputType=amp' ) ) {
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
}
}
2023-03-17 17:31:00 +01:00
else if ( matchDomain ( 'defector.com' ) ) {
2023-05-26 08:42:46 +02:00
let paywall = document . querySelector ( 'div[class^="ContentGate_wrapper__"]' ) ;
2023-11-30 12:34:42 +01:00
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let article _sel = 'div[class^="PostContent_wrapper__"]' ;
let article = document . querySelector ( article _sel ) ;
if ( article ) {
window . setTimeout ( function ( ) {
let pars = article . querySelectorAll ( 'p' ) ;
if ( pars . length < 3 ) {
let url = window . location . href . split ( '?' ) [ 0 ] ;
2023-12-14 09:36:46 +01:00
replaceDomElementExt ( url , false , false , article _sel ) ;
2023-11-30 12:34:42 +01:00
}
} , 1000 ) ;
}
}
2023-03-17 17:31:00 +01:00
}
2024-03-03 17:55:48 +01:00
else if ( matchDomain ( [ 'digiday.com' , 'glossy.co' , 'modernretail.co' ] ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div[class^="ad_"]' ;
hideDOMStyle ( ads ) ;
2021-12-11 19:12:13 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'discovermagazine.com' ) ) {
window . setTimeout ( function ( ) {
let mammoth = document . querySelector ( '.iXVGnF' ) ;
if ( mammoth )
2023-08-31 06:51:24 +02:00
refreshCurrentTab ( ) ;
2024-04-07 10:39:17 +02:00
let body = document . querySelector ( 'body' ) ;
if ( body )
body . style = 'overflow: auto !important;' ;
let banners = 'div.fIkXwQ, div[style*="fadeIn"], div[role="button"][aria-label="Dismiss Dialog"]' ;
hideDOMStyle ( banners ) ;
2022-03-08 19:04:50 +01:00
} , 1000 ) ;
2021-04-10 08:46:50 +02:00
}
2024-02-08 18:24:37 +01:00
else if ( matchDomain ( 'dwell.com' ) ) {
if ( window . location . pathname . startsWith ( '/article/' ) ) {
let paywall = document . querySelector ( 'div#mainPanel div[class^="FCR_"]' ) ;
if ( ! window . location . search . startsWith ( '?rel=plus' ) ) {
if ( paywall ) {
removeDOMElement ( paywall ) ;
window . location . href = window . location . pathname + '?rel=plus' ;
}
} else {
let article = document . querySelector ( 'div > section[class]' ) ;
if ( paywall && article && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
article . classList . remove ( '_2S7l9_l2eDI5b8DSR29ijf' ) ;
let scripts = document . querySelectorAll ( 'script:not([src]):not([type])' ) ;
let json _script ;
for ( let script of scripts ) {
if ( script . text . match ( /window.INITIAL_STATE\s?=\s?/ ) ) {
json _script = script ;
break ;
}
}
if ( json _script ) {
let split1 = json _script . text . split ( /window.INITIAL_STATE\s?=\s?/ ) [ 1 ] ;
let state = ( split1 . split ( '};' ) [ 0 ] + '}' ) . split ( '</script>' ) [ 0 ] ;
if ( state ) {
try {
let json = JSON . parse ( state ) ;
if ( json ) {
let items = json . articles . items ;
let id = Object . keys ( items ) [ 0 ] ;
let photos = json . photos ? json . photos . items : '' ;
let json _text = items [ id ] . attributes . body . replace ( /(<br>|<span style=".+;">|<\/span>)/g , '' ) ;
function find _img _url ( match , p1 , p2 , offset , string ) {
let contributorId ;
let format ;
if ( photos && photos [ p1 ] ) {
contributorId = photos [ p1 ] . attributes . userId ;
format = photos [ p1 ] . attributes . format ;
}
let result = '<p>missing photo: ' + p1 + '</p>' ;
if ( contributorId )
result = '<figure><img src="https://images2.dwell.com/photos/' + contributorId + '/' + p1 + '/original.' + format + '?auto=format&q=35&w=1280"><figcaption>' + p2 + '</figcaption></figure>' ;
return result ;
}
json _text = json _text . replace ( /<dwell-photo photoId="(\d+)"\scaption="([^"]+)"[^<]+photoUserId="\d*"\/>/g , find _img _url ) ;
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<section class="' + article . className + '">' + DOMPurify . sanitize ( json _text , dompurify _options ) + '</section>' , 'text/html' ) ;
let article _new = doc . querySelector ( 'section' ) ;
article . parentNode . replaceChild ( article _new , article ) ;
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
let photo _links = document . querySelectorAll ( 'div > a[href^="' + window . location . pathname . replace ( /\/\d{8,}/ , '' ) + '"]' ) ;
for ( let elem of photo _links )
elem . href += '?rel=plus' ;
let close _button = document . querySelector ( 'header > div > span > svg' ) ;
if ( ! document . querySelector ( 'a#bpc_close' ) && close _button ) {
let elem = document . createElement ( 'a' ) ;
elem . href = window . location . pathname . split ( '?' ) [ 0 ] . replace ( /\/\d{8,}/ , '' ) ;
elem . id = 'bpc_close' ;
elem . innerText = 'close' ;
elem . style . color = 'white' ;
close _button . parentNode . parentNode . appendChild ( elem ) ;
}
}
}
2024-04-07 10:39:17 +02:00
let ads = 'div.EYrS5iukqzJMkNAcFQ0ho' ;
hideDOMStyle ( ads ) ;
2024-02-08 18:24:37 +01:00
}
2021-05-21 08:04:59 +02:00
else if ( matchDomain ( 'economictimes.com' ) ) {
2021-12-12 09:38:17 +01:00
if ( window . location . pathname . includes ( '/amp_' ) ) {
let paywall = document . querySelector ( '.paywall_wrap' ) ;
2023-08-02 16:37:50 +02:00
if ( paywall && dompurify _loaded ) {
2021-12-12 09:38:17 +01:00
let content = document . querySelector ( '.paywall[style="display:none;"]' ) ;
2023-08-02 16:37:50 +02:00
if ( content ) {
let parser = new DOMParser ( ) ;
2023-12-06 19:19:00 +01:00
let doc = parser . parseFromString ( '<div style="margin: 20px 0px;">' + DOMPurify . sanitize ( content . innerText , dompurify _options ) + '</div>' , 'text/html' ) ;
2023-08-02 16:37:50 +02:00
let content _new = doc . querySelector ( 'div' ) ;
if ( content _new && content . parentNode )
content . parentNode . replaceChild ( content _new , content ) ;
} else
2023-01-19 08:31:41 +01:00
window . location . href = 'https://economictimes.indiatimes.com' + window . location . pathname . replace ( 'amp_prime' , 'prime' ) ;
2021-12-12 09:38:17 +01:00
let intro = document . querySelector ( '.art_wrap' ) ;
let article _blocker = document . querySelector ( '.articleBlocker' ) ;
2023-09-03 07:20:22 +02:00
removeDOMElement ( paywall , intro , article _blocker ) ;
2024-04-07 10:39:17 +02:00
let ads = 'amp-ad' ;
hideDOMStyle ( ads ) ;
2021-05-21 08:04:59 +02:00
}
2021-12-12 09:38:17 +01:00
} else {
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div#blocker_layer' ) ;
let data _prime = document . querySelector ( 'div[data-prime="1"]' ) ;
2023-09-30 13:08:32 +02:00
let amphtml = document . querySelector ( 'head > link[rel="amphtml"]' ) ;
2023-01-19 08:31:41 +01:00
if ( paywall || data _prime ) {
2021-12-12 09:38:17 +01:00
removeDOMElement ( paywall ) ;
if ( data _prime )
data _prime . removeAttribute ( 'data-prime' ) ;
2023-01-19 08:31:41 +01:00
if ( amphtml )
2023-09-30 13:08:32 +02:00
amp _redirect _not _loop ( amphtml ) ;
2023-01-19 08:31:41 +01:00
else if ( window . location . pathname . startsWith ( '/epaper/' ) )
window . location . href = 'https://economictimes.indiatimes.com' + window . location . pathname ;
} else {
2024-04-07 10:39:17 +02:00
let ads = '.adContainer' ;
hideDOMStyle ( ads ) ;
2021-12-12 09:38:17 +01:00
}
2022-03-08 19:04:50 +01:00
} , 500 ) ;
2021-12-12 09:38:17 +01:00
}
2021-05-21 08:04:59 +02:00
}
2021-05-03 22:13:22 +02:00
else if ( matchDomain ( 'economictimes.indiatimes.com' ) ) {
let paywall = document . querySelector ( 'section.prime_paywall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let content = document . querySelector ( 'div.content1, div.artText' ) ;
let full _text = document . querySelector ( 'div.paywall.p1' ) ;
if ( content && full _text )
content . innerText = full _text . innerText ;
2023-04-01 14:00:23 +02:00
let page _content = document . querySelector ( 'div.pageContent:not([style])' ) ;
2021-05-21 08:04:59 +02:00
if ( page _content )
page _content . setAttribute ( 'style' , 'height: auto !important;' ) ;
2023-08-13 17:01:45 +02:00
let article _wrap = document . querySelector ( 'div.article_wrap[style]' ) ;
if ( article _wrap )
article _wrap . removeAttribute ( 'style' ) ;
2021-05-03 22:13:22 +02:00
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'economist.com' ) ) {
2024-04-10 11:58:14 +02:00
if ( window . location . pathname . startsWith ( '/interactive/' ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall ) {
let hide _style = document . querySelector ( 'body > style' ) ;
removeDOMElement ( paywall , hide _style ) ;
}
} else {
let url = window . location . href ;
getGoogleWebcache ( url , 'div#tp-regwall' , '' , 'section[data-body-id]' ) ;
2022-01-13 17:26:17 +01:00
}
2024-04-07 10:39:17 +02:00
let ads = 'div[class*="_advert__"]' ;
hideDOMStyle ( ads ) ;
2021-01-11 21:00:41 +01:00
}
2022-04-22 16:49:43 +02:00
else if ( matchDomain ( 'enotes.com' ) ) {
2022-04-26 07:57:16 +02:00
let paywall = document . querySelectorAll ( 'section.c-cta-section' ) ;
if ( paywall . length ) {
removeDOMElement ( ... paywall ) ;
let blurred = document . querySelectorAll ( 'div[class^="_"]' ) ;
2022-04-22 16:49:43 +02:00
for ( let elem of blurred )
elem . removeAttribute ( 'class' ) ;
2022-04-26 08:15:18 +02:00
let intro = document . querySelectorAll ( 'div.o-rte-text > p:not([class]), div.o-rte-text > h3' ) ;
2022-04-22 16:49:43 +02:00
for ( let elem of intro )
removeDOMElement ( elem ) ;
2022-05-09 20:29:25 +02:00
let section _words = pageContains ( 'p[class="u-align--center"]' , /\(The entire section contains/ ) ;
let ads = document . querySelectorAll ( '.ad-hfu' ) ;
2023-09-03 07:20:22 +02:00
hideDOMElement ( ... section _words , ... ads ) ;
2022-04-22 16:49:43 +02:00
}
}
2023-11-04 11:57:32 +01:00
else if ( matchDomain ( 'epoch.org.il' ) ) {
if ( dompurify _loaded )
2024-02-21 17:47:14 +01:00
getJsonUrl ( 'div.register-login-box' , '' , 'div.paywall' ) ;
2023-11-04 11:57:32 +01:00
}
2022-10-19 21:28:47 +02:00
else if ( matchDomain ( 'espn.com' ) ) {
let url = window . location . href ;
let paywall = document . querySelector ( 'aside.espn-plus-container-wrapper' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
2023-04-20 20:56:23 +02:00
replaceDomElementExt ( url , false , false , 'div.article-body' ) ;
2022-10-19 21:28:47 +02:00
}
}
2023-08-03 12:24:17 +02:00
else if ( matchDomain ( 'euobserver.com' ) ) {
let div _hidden = document . querySelector ( 'div.membership-upsell.show' ) ;
if ( div _hidden )
div _hidden . classList . remove ( 'show' ) ;
}
2023-08-26 08:59:35 +02:00
else if ( matchDomain ( 'fastcompany.com' ) ) {
2024-03-12 18:22:08 +01:00
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let scripts = document . querySelectorAll ( 'script:not([src]):not([type])' ) ;
let json _script ;
for ( let script of scripts ) {
if ( script . text . match ( /window\.appState\s=\s/ ) ) {
json _script = script ;
break ;
}
}
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text . split ( /window\.appState\s=\s/ ) [ 1 ] . split ( '};' ) [ 0 ] . replace ( /:undefined([,}])/g , ':"undefined"$1' ) + '}' ) ;
if ( json ) {
let pars _array = json . post . data . post . content ;
let article = document . querySelector ( 'article' ) ;
if ( pars _array . length && article ) {
article . innerHTML = '' ;
article . classList . remove ( 'post__article--lock' ) ;
let parser = new DOMParser ( ) ;
for ( let par _array of pars _array ) {
for ( let par of par _array ) {
let content _new = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( par , dompurify _options ) + '</div>' , 'text/html' ) ;
let elem = content _new . querySelector ( 'div' ) ;
article . appendChild ( elem ) ;
}
}
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
2024-04-07 10:39:17 +02:00
let ads = 'div[class*="ad-wrapper"]' ;
hideDOMStyle ( ads ) ;
2023-08-26 08:59:35 +02:00
}
2022-11-12 08:39:05 +01:00
else if ( matchDomain ( 'fieldandstream.com' ) ) {
let overlay = document . querySelectorAll ( 'div[class^="mailmunch-"]' ) ;
removeDOMElement ( ... overlay ) ;
let noscroll = document . querySelector ( 'html.mailmunch-pop-open' ) ;
if ( noscroll )
noscroll . removeAttribute ( 'class' ) ;
}
2022-05-29 17:08:47 +02:00
else if ( matchDomain ( 'financialexpress.com' ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall )
paywall . classList . remove ( 'paywall' ) ;
2024-04-07 10:39:17 +02:00
let register = 'div.pcl-wrap' ;
2023-04-08 19:19:49 +02:00
let ads _selector = window . location . pathname . endsWith ( '/lite/' ) ? 'amp-ad, amp-embed, .ad-bg-container' : 'div[class*="-ads-blocks-ad-unit"]' ;
2024-04-07 10:39:17 +02:00
hideDOMStyle ( register + ', ' + ads _selector ) ;
2022-05-29 17:08:47 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'firstthings.com' ) ) {
let paywall = document . querySelector ( '.paywall' ) ;
removeDOMElement ( paywall ) ;
}
2023-08-29 18:48:00 +02:00
else if ( matchDomain ( 'forbes.com' ) ) {
waitDOMAttribute ( 'body' , 'body' , 'class' , node => node . removeAttribute ( 'class' ) , true ) ;
csDoneOnce = true ;
2023-09-25 19:25:18 +02:00
if ( window . location . pathname . startsWith ( '/newsletters/' ) ) {
let paywall = document . querySelector ( 'div > div.newsletter-teaser' ) ;
if ( paywall ) {
paywall . classList . remove ( 'newsletter-teaser' ) ;
let header = paywall . parentNode ;
header _nofix ( header ) ;
}
}
2024-04-07 10:39:17 +02:00
let ads = 'fbs-ad' ;
hideDOMStyle ( ads ) ;
2023-08-29 18:48:00 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'foreignaffairs.com' ) ) {
2021-09-28 20:42:02 +02:00
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( '.paywall' ) ;
let loading _indicator = document . querySelector ( '.loading-indicator' ) ;
let msg _bottom = document . querySelector ( '.messages--container--bottom' ) ;
removeDOMElement ( paywall , loading _indicator , msg _bottom ) ;
let article _dropcap = document . querySelectorAll ( '.article-dropcap' ) ;
for ( let elem of article _dropcap )
elem . classList . add ( 'loaded' ) ;
2022-03-08 19:04:50 +01:00
} , 1000 ) ;
2021-01-09 17:45:21 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'foreignpolicy.com' ) ) {
2021-06-16 07:38:22 +02:00
let content _ungated = document . querySelector ( 'div.content-ungated' ) ;
2023-06-27 18:08:43 +02:00
if ( content _ungated && dompurify _loaded ) {
removeDOMElement ( content _ungated ) ;
let content _gated = document . querySelector ( 'div.content-gated' ) ;
if ( content _gated ) {
let insider = document . querySelector ( 'body.is-fp-insider' ) ;
2024-01-25 18:04:30 +01:00
if ( insider ) {
2023-12-23 10:15:44 +01:00
getJsonUrl ( 'div.content-gated' , { rm _class : 'content-gated' } , 'div.content-gated' ) ;
2024-01-25 18:04:30 +01:00
window . setTimeout ( function ( ) {
let lazy _images = document . querySelectorAll ( 'img[loading="lazy"]' ) ;
for ( let elem of lazy _images )
elem . removeAttribute ( 'loading' ) ;
} , 1000 ) ;
} else
2023-12-23 10:15:44 +01:00
content _gated . classList . remove ( 'content-gated' ) ;
2023-06-27 18:08:43 +02:00
}
}
2020-12-31 09:45:01 +01:00
}
2021-12-10 18:16:56 +01:00
else if ( matchDomain ( 'fortune.com' ) ) {
2023-08-31 12:57:08 +02:00
let paywall = document . querySelector ( 'div.paywallActive' ) ;
2022-04-22 16:21:09 +02:00
if ( window . location . pathname . match ( /\/amp(\/)?/ ) ) {
2023-08-31 12:57:08 +02:00
amp _unhide _access _hide ( '="NOT p.showRegWall AND NOT p.showPayWall"' , '="p.showPayWall"' , '[class^="amp-ad"], div.paywall' ) ;
2022-04-21 21:27:17 +02:00
} else {
if ( paywall )
paywall . removeAttribute ( 'class' ) ;
2021-12-10 18:16:56 +01:00
}
}
2023-12-22 15:54:34 +01:00
else if ( matchDomain ( 'foxnews.com' ) ) {
let paywall = document . querySelector ( 'div.article-gating-wrapper' ) ;
removeDOMElement ( paywall ) ;
let overlay = document . querySelector ( 'div[class*="gated-overlay"]' ) ;
if ( overlay )
overlay . removeAttribute ( 'class' ) ;
}
2023-06-24 10:18:15 +02:00
else if ( matchDomain ( 'ftm.eu' ) ) {
let banners = document . querySelectorAll ( 'div.banner-pp, a.readmore' ) ;
removeDOMElement ( ... banners ) ;
}
2023-12-30 11:28:14 +01:00
else if ( matchDomain ( [ 'haaretz.co.il' , 'haaretz.com' , 'themarker.com' ] ) ) {
2024-02-27 18:10:17 +01:00
let url = window . location . href ;
let body _wrapper _sel = 'section[data-testid="article-body-wrapper"]' ;
let paywall _sel = 'div[data-test="paywallMidpage"], ' + body _wrapper _sel + ' a[href^="https://promotion."]' ;
let article _sel = 'div[data-test="articleBody"], ' + body _wrapper _sel ;
let article _link _sel = 'article header, main.article-page p, ' + article _sel ;
2024-01-02 16:59:00 +01:00
if ( window . location . pathname . includes ( '/.' ) ) {
2024-03-21 12:04:35 +01:00
let page _script = document . querySelector ( 'script[src*="/page-"]' ) ;
if ( page _script ) {
2024-04-07 10:39:17 +02:00
let disabled _items = 'section[data-testid="zoidberg-list"], section#comments-section' ;
hideDOMStyle ( disabled _items ) ;
2024-03-21 12:04:35 +01:00
let noprint = document . querySelectorAll ( 'div.no-print' ) ;
for ( let elem of noprint )
if ( ! elem . hasChildNodes ( ) )
hideDOMElement ( elem ) ;
}
2024-01-15 18:46:33 +01:00
func _post = function ( ) {
2024-02-27 18:10:17 +01:00
let article _link = document . querySelector ( article _link _sel ) ;
2024-01-02 16:59:00 +01:00
if ( article _link ) {
2024-01-14 11:37:30 +01:00
let article _new = document . querySelector ( article _sel ) ;
let paywall = article _new . querySelector ( paywall _sel ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
article _link . firstChild . before ( googleSearchToolLink ( url ) ) ;
}
2023-12-30 11:28:14 +01:00
}
}
2024-02-27 18:10:17 +01:00
window . setTimeout ( function ( ) {
getArchive ( url , paywall _sel , '' , article _sel , '' , article _sel , article _link _sel ) ;
} , 1000 ) ;
} else if ( window . location . pathname . includes ( '/ty-article-live/' ) ) {
let paywall = document . querySelector ( paywall _sel ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let article = document . querySelector ( article _sel ) ;
if ( article ) {
2024-04-05 08:28:55 +02:00
//article.before(archiveLink_renew(url));
2024-02-27 18:10:17 +01:00
article . before ( archiveLink ( url ) ) ;
}
}
} else if ( window . location . pathname === '/' ) {
let overlays = document . querySelectorAll ( 'div > div > svg[data-test="IconAlefLogoTransparent"]' ) ;
for ( let elem of overlays )
removeDOMElement ( elem . parentNode . parentNode ) ;
let inert _links = document . querySelectorAll ( 'article[inert]' ) ;
for ( let elem of inert _links )
elem . removeAttribute ( 'inert' ) ;
2024-03-21 12:04:35 +01:00
} else if ( window . location . pathname === '/error' ) {
window . setTimeout ( function ( ) {
let params = new URL ( window . location ) . searchParams ;
let path = params . get ( 'path' ) ;
if ( path )
window . location . pathname = path ;
} , 500 ) ;
2024-02-27 18:10:17 +01:00
}
2023-12-30 11:28:14 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'hbr.org' ) ) {
2023-10-15 17:21:48 +02:00
function hbr _main ( ) {
window . top . postMessage ( { type : 'article-paywall:full-content' } , '*' ) ;
}
2021-04-10 08:46:50 +02:00
let popup = document . querySelector ( '.persistent-banner' ) ;
removeDOMElement ( popup ) ;
2023-12-16 10:09:40 +01:00
let paywall = document . querySelector ( 'div#paywall' ) ;
2023-10-15 17:21:48 +02:00
if ( paywall ) {
2022-12-02 17:33:00 +01:00
removeDOMElement ( paywall ) ;
2023-10-15 17:21:48 +02:00
insert _script ( hbr _main ) ;
2022-12-02 17:33:00 +01:00
}
2021-01-20 20:26:35 +01:00
}
2022-04-05 18:05:13 +02:00
else if ( matchDomain ( 'hilltimes.com' ) ) {
2023-09-30 13:28:40 +02:00
function hilltimes _main ( node ) {
2023-11-20 18:58:56 +01:00
getJsonUrl ( 'div.paywallcont' , '' , 'div#entry-content' ) ;
2022-04-05 18:05:13 +02:00
}
2023-09-30 13:28:40 +02:00
let paywall _sel = 'div.paywallcont' ;
let paywall = document . querySelector ( paywall _sel ) ;
2023-11-20 18:58:56 +01:00
if ( dompurify _loaded ) {
if ( paywall )
hilltimes _main ( paywall ) ;
else
waitDOMElement ( paywall _sel , 'DIV' , hilltimes _main , false ) ;
csDoneOnce = true ;
2023-09-30 13:28:40 +02:00
}
2024-04-07 10:39:17 +02:00
let banner = 'section.hide_this_section' ;
hideDOMStyle ( banner ) ;
2022-04-05 18:05:13 +02:00
}
2021-05-25 19:28:02 +02:00
else if ( matchDomain ( 'hindustantimes.com' ) ) {
let paywall = document . querySelector ( '.freemium-card' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let freemium _text = document . querySelector ( '.freemiumText' ) ;
if ( freemium _text )
freemium _text . classList . remove ( 'freemiumText' ) ;
}
let noscroll = document . querySelector ( 'body.open-popup' ) ;
if ( noscroll )
noscroll . classList . remove ( 'open-popup' ) ;
2024-04-07 10:39:17 +02:00
let close _story = '.closeStory' ;
let ads = 'div[class^="adHeight"]' ;
hideDOMStyle ( close _story + ', ' + ads ) ;
2021-05-25 19:28:02 +02:00
}
2023-06-25 09:55:49 +02:00
else if ( matchDomain ( 'hindutamil.in' ) ) {
if ( ! window . location . pathname . startsWith ( '/amp/' ) ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div.premium-class-bt' ) ;
2023-06-25 09:55:49 +02:00
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'historyextra.com' ) ) {
let article _masked = document . querySelector ( '.template-article__masked' ) ;
if ( article _masked ) {
let extra _pars = document . querySelectorAll ( 'div.template-article__masked > p' ) ;
removeDOMElement ( ... extra _pars ) ;
article _masked . classList . remove ( 'template-article__masked' ) ;
}
let ad _banner = document . querySelector ( '.ad-banner-container' ) ;
removeDOMElement ( ad _banner ) ;
2021-01-22 13:58:54 +01:00
}
2021-08-05 19:43:10 +02:00
else if ( matchDomain ( 'inc42.com' ) ) {
2023-09-04 20:53:37 +02:00
if ( window . location . pathname . endsWith ( '/amp/' ) ) {
amp _unhide _access _hide ( '="status"' , '="NOT status"' , 'amp-ad, amp-embed, div.wru-widget' ) ;
} else {
2023-12-28 13:09:10 +01:00
let div _hidden = document . querySelector ( 'div.single-post-content' ) ;
if ( div _hidden )
div _hidden . removeAttribute ( 'class' ) ;
2024-04-07 10:39:17 +02:00
let banner = 'div[id*="_leaderboard_"]' ;
hideDOMStyle ( banner ) ;
2023-09-04 20:53:37 +02:00
}
2021-08-05 19:43:10 +02:00
}
2021-12-19 11:13:00 +01:00
else if ( matchDomain ( 'indianexpress.com' ) ) {
if ( window . location . pathname . endsWith ( '/lite/' ) )
2024-01-07 09:51:12 +01:00
amp _unhide _access _hide ( '="metering.result=\'ALLOW_ACCESS\'"' , '' , 'div.amp-ad, amp-embed' ) ;
2021-12-19 11:13:00 +01:00
else {
2024-04-07 10:39:17 +02:00
let ads = 'div[class^="adsbox"], div.adboxtop, div.add-first, div.osv-ad-class, div.ie-int-campign-ad' ;
hideDOMStyle ( ads ) ;
2021-12-19 11:13:00 +01:00
}
}
2022-03-06 17:43:38 +01:00
else if ( matchDomain ( 'indiatoday.in' ) ) {
if ( window . location . pathname . match ( /(\/amp)?\/magazine\// ) ) {
let url = window . location . href ;
if ( ! url . includes ( '/amp/' ) ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div#csc-paywall' ) ;
2022-03-06 17:43:38 +01:00
} else {
amp _unhide _access _hide ( '="granted"' , '="NOT NOT granted"' , 'amp-ad, amp-embed' ) ;
}
2023-08-11 07:56:16 +02:00
}
2022-03-06 17:43:38 +01:00
}
2021-07-19 17:54:59 +02:00
else if ( matchDomain ( 'infzm.com' ) ) {
let url = window . location . href ;
if ( url . includes ( '/wap/#/' ) ) {
let container = document . querySelector ( 'section.container' ) ;
if ( container )
container . classList . remove ( 'container' ) ;
let overlay = document . querySelector ( 'div.article-content[style]' ) ;
if ( overlay )
overlay . removeAttribute ( 'style' ) ;
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'inkl.com' ) ) {
2023-03-07 09:22:31 +01:00
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall ) {
paywall . removeAttribute ( 'class' ) ;
2022-11-05 15:09:46 +01:00
let gradient _container = document . querySelector ( 'div.gradient-container' ) ;
2023-03-07 09:22:31 +01:00
removeDOMElement ( gradient _container ) ;
2022-11-05 15:09:46 +01:00
}
let what _is _inkl = document . querySelector ( '.what-is-inkl-container, .features-panel' ) ;
2023-01-21 17:47:44 +01:00
let signup = document . querySelectorAll ( '.article-signup-container, .locked-sign-up-container, div[class*="/inkl-watermark.svg"]' ) ;
let shared _banner = document . querySelector ( 'div.shared-article-inline-banner' ) ;
removeDOMElement ( what _is _inkl , ... signup , shared _banner ) ;
2022-11-05 15:09:46 +01:00
let dismiss _button = document . querySelector ( 'div.dismiss-button-container button.btn' ) ;
if ( dismiss _button )
dismiss _button . click ( ) ;
let dive _deeper _summary _bodies = document . querySelectorAll ( 'div.dive-deeper-container div.summary-body' ) ;
if ( dive _deeper _summary _bodies ) {
for ( let summary _body of dive _deeper _summary _bodies ) {
if ( ! summary _body . querySelector ( 'a' ) ) {
let ng _click = summary _body . getAttribute ( 'ng-click' ) . replace ( "showArticle('" , '' ) . replace ( "')" , '' ) ;
let weblink = document . createElement ( 'a' ) ;
weblink . text = 'open' ;
weblink . href = 'https://www.inkl.com/news/' + ng _click ;
summary _body . appendChild ( weblink ) ;
}
}
}
2021-01-22 14:33:25 +01:00
}
2024-01-20 09:02:07 +01:00
else if ( matchDomain ( 'insidehighered.com' ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div[id^="block-dfptag"], div.wp-block-ihe-ad, section.section-ad_slot, div#roadblock' ;
hideDOMStyle ( ads ) ;
2024-01-20 09:02:07 +01:00
}
2023-10-03 09:04:42 +02:00
else if ( matchDomain ( 'interestingengineering.com' ) ) {
let paywall = document . querySelectorAll ( 'div#paywall-div' ) ;
if ( paywall . length ) {
hideDOMElement ( ... paywall ) ;
let blurred = document . querySelectorAll ( 'div[class*="Product_makeBlur__"]' ) ;
for ( let elem of blurred )
elem . removeAttribute ( 'class' ) ;
csDoneOnce = true ;
}
}
2022-03-26 19:51:27 +01:00
else if ( matchDomain ( 'ipolitics.ca' ) ) {
let login = document . querySelector ( 'div.login' ) ;
2023-05-08 20:05:06 +02:00
if ( login && dompurify _loaded ) {
2022-03-26 19:51:27 +01:00
removeDOMElement ( login ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
2023-02-11 09:20:49 +01:00
if ( json _script ) {
2023-03-15 18:37:22 +01:00
try {
let json = JSON . parse ( json _script . innerText ) ;
if ( json && json . props . pageProps . post && json . props . pageProps . post . content ) {
let url _next = json . props . pageProps . post . slug ;
if ( url _next && ! window . location . pathname . includes ( url _next ) )
refreshCurrentTab ( ) ;
let article _new = json . props . pageProps . post . content ;
let article = document . querySelector ( '.post-body' ) ;
if ( article ) {
article . innerHTML = '' ;
article . classList . remove ( 'locked' ) ;
let parser = new DOMParser ( ) ;
2023-05-08 20:05:06 +02:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( article _new ) + '</div>' , 'text/html' ) ;
2023-03-15 18:37:22 +01:00
let content _new = doc . querySelector ( 'div' ) ;
article . appendChild ( content _new ) ;
}
} else {
refreshCurrentTab ( ) ;
2022-03-26 19:51:27 +01:00
}
2023-03-15 18:37:22 +01:00
} catch ( err ) {
console . log ( err ) ;
2022-03-26 19:51:27 +01:00
}
}
}
}
2023-11-05 10:39:44 +01:00
else if ( matchDomain ( 'janes.com' ) ) {
let articles = document . querySelectorAll ( 'div.article-box' ) ;
for ( let article of articles ) {
let gated _text = article . querySelector ( 'div > div.gated-text' ) ;
if ( gated _text ) {
let art _link = article . querySelector ( 'a[href^="mailto:"][href*="&body="]' ) ;
if ( art _link ) {
let url = decodeURIComponent ( art _link . href . split ( '&body=' ) [ 1 ] ) ;
let url _pathname = new URL ( url ) . pathname ;
let og _url = url _pathname . match ( /\/[\w-]+\// ) [ 0 ] + 'news-detail' + url _pathname . match ( /\/[\w-]+$/ ) [ 0 ] ;
let par = document . createElement ( 'p' ) ;
let weblink = document . createElement ( 'a' ) ;
weblink . href = og _url ;
weblink . innerText = 'BPC > full text' ;
par . appendChild ( weblink ) ;
gated _text . parentNode . replaceChild ( par , gated _text ) ;
}
}
}
}
2023-07-27 07:24:10 +02:00
else if ( matchDomain ( 'japantimes.co.jp' ) ) {
if ( ! window . location . pathname . endsWith ( '/amp' ) ) {
window . setTimeout ( function ( ) {
2023-12-11 12:15:33 +01:00
let paywall = document . querySelector ( 'div.subscribe' ) ;
2023-07-27 07:24:10 +02:00
if ( paywall ) {
2023-12-11 12:15:33 +01:00
let banner = document . querySelector ( 'div.blocker > div.tp-container-inner' ) ;
removeDOMElement ( paywall , banner ) ;
2023-11-26 14:04:06 +01:00
let article = document . querySelector ( 'div.article-body' ) ;
if ( article ) {
let url = window . location . href ;
article . firstChild . before ( nftLink ( url ) ) ;
2023-07-27 07:24:10 +02:00
}
}
2023-11-26 14:04:06 +01:00
} , 2000 ) ;
2023-07-27 07:24:10 +02:00
} else
ampToHtml ( ) ;
}
2023-11-24 08:23:36 +01:00
else if ( matchDomain ( 'jazziz.com' ) ) {
if ( dompurify _loaded ) {
let art _options = { } ;
if ( window . location . pathname . startsWith ( '/jazziz-discovery-' ) )
art _options = { art _append : true , art _hold : true } ;
getJsonUrl ( 'div.emoxie-pay-wall' , '' , 'div.restricted-content' , art _options ) ;
window . setTimeout ( function ( ) {
let slideshow = document . querySelector ( 'div[data-slider-id][style]' ) ;
if ( slideshow )
slideshow . removeAttribute ( 'style' ) ;
} , 1000 ) ;
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'jpost.com' ) ) {
let premium _banners = document . querySelectorAll ( '.hide-for-premium, #hiddenPremiumForm, #hiddenLink' ) ;
removeDOMElement ( ... premium _banners ) ;
}
2021-12-11 12:59:19 +01:00
else if ( matchDomain ( [ 'latimes.com' , 'sandiegouniontribune.com' ] ) ) {
2024-04-06 07:24:22 +02:00
let subscribers = pageContains ( 'div.infobox > p.infobox-title' , /subscribers/i ) ;
if ( subscribers . length )
removeDOMElement ( subscribers [ 0 ] . parentNode ) ;
let ads = 'div.google-dfp-ad-wrapper, div.revcontent' ;
hideDOMStyle ( ads ) ;
2021-12-11 12:59:19 +01:00
}
2022-07-22 18:39:59 +02:00
else if ( matchDomain ( 'ledevoir.com' ) ) {
let counter = document . querySelector ( '.paywall-breakpoint-wrapper' ) ;
removeDOMElement ( counter ) ;
}
2021-08-13 17:29:49 +02:00
else if ( matchDomain ( 'livelaw.in' ) ) {
2022-05-15 18:25:58 +02:00
let paywall = document . querySelector ( 'div#subscription_paid_message, div.subscribeNow' ) ;
2022-02-19 09:12:00 +01:00
if ( paywall ) {
2022-05-15 18:25:58 +02:00
let intro = document . querySelector ( 'div.story' ) ;
removeDOMElement ( paywall , intro ) ;
let restricted _message = document . querySelector ( 'div.restricted_message' ) ;
if ( restricted _message )
restricted _message . classList . remove ( 'restricted_message' ) ;
2021-08-13 17:29:49 +02:00
let paywall _content = document . querySelector ( 'div.paywall-content.hide' ) ;
if ( paywall _content )
paywall _content . classList . remove ( 'hide' ) ;
}
2024-04-07 10:39:17 +02:00
let ads = 'inside-post-ad, amp-ad' ;
hideDOMStyle ( ads ) ;
2021-08-13 17:29:49 +02:00
}
2021-12-12 09:38:17 +01:00
else if ( matchDomain ( 'livemint.com' ) ) {
if ( window . location . pathname . includes ( '/amp-' ) ) {
let paywall = document . querySelectorAll ( '[amp-access="NOT subscribed"]' ) ;
removeDOMElement ( ... paywall ) ;
2022-08-18 20:02:29 +02:00
} else {
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall )
paywall . classList . remove ( 'paywall' ) ;
2024-04-07 10:39:17 +02:00
let ads = '[class^="ad"], [id^="ad"], #subscribeAd, .taboolaHeight' ;
hideDOMStyle ( ads ) ;
2021-12-12 09:38:17 +01:00
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'magazine.atavist.com' ) ) {
let bottom _notification = document . querySelector ( 'div.bottom-notification' ) ;
let overlay = document . querySelector ( 'div.notification-overlay' ) ;
removeDOMElement ( bottom _notification , overlay ) ;
let paywall = document . querySelector ( 'body.paywall-notification-visible' ) ;
if ( paywall )
paywall . classList . remove ( 'paywall-notification-visible' ) ;
2021-01-23 18:13:24 +01:00
}
2021-01-24 10:25:55 +01:00
else if ( matchDomain ( 'marketwatch.com' ) ) {
2023-09-07 21:25:12 +02:00
if ( ! window . location . pathname . startsWith ( '/amp/' ) ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div#cx-snippet' ) ;
2021-04-10 08:46:50 +02:00
} else {
let meter = document . querySelector ( 'div.meter' ) ;
let container _sponsored = document . querySelector ( 'div.container--sponsored' ) ;
2021-11-30 17:36:15 +01:00
removeDOMElement ( meter , container _sponsored ) ;
amp _unhide _subscr _section ( '.display-ad' ) ;
2021-04-10 08:46:50 +02:00
}
2024-04-07 10:39:17 +02:00
let ads = 'div.element--ad, div.j-ad' ;
hideDOMStyle ( ads ) ;
2021-04-10 08:46:50 +02:00
}
2022-10-08 09:12:12 +02:00
else if ( matchDomain ( 'medscape.com' ) ) {
2024-04-07 10:39:17 +02:00
let ads = '.AdUnit, [id^="ads-"]' ;
hideDOMStyle ( ads ) ;
2022-10-08 09:12:12 +02:00
}
2023-09-26 08:24:14 +02:00
else if ( matchDomain ( 'mexiconewsdaily.com' ) ) {
let div _hidden = document . querySelector ( 'body.single div.td-post-content > div.tdb-block-inner' ) ;
if ( div _hidden )
div _hidden . classList . remove ( 'tdb-block-inner' ) ;
}
2022-03-16 18:48:58 +01:00
else if ( matchDomain ( 'mid-day.com' ) ) {
if ( window . location . pathname . startsWith ( '/amp/' ) ) {
2024-03-13 12:09:15 +01:00
amp _unhide _access _hide ( '="granted"' , '="NOT granted"' , 'amp-ad, amp-embed, [class*="BannerAd"], div.midday-wrapper' ) ;
2022-03-16 18:48:58 +01:00
} else {
2024-03-13 12:09:15 +01:00
amp _redirect ( 'div.modal.fade' ) ;
2023-09-30 13:08:32 +02:00
let read _more = document . querySelector ( '#read-more-my' ) ;
if ( read _more )
read _more . click ( ) ;
2022-03-16 18:48:58 +01:00
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'nationalgeographic.com' ) ) {
2022-11-05 15:09:46 +01:00
function natgeo _func ( node ) {
removeDOMElement ( node ) ;
let body = document . querySelector ( 'body[class]' ) ;
if ( body ) {
body . removeAttribute ( 'class' ) ;
body . removeAttribute ( 'style' ) ;
}
2021-04-10 08:46:50 +02:00
}
2023-12-09 17:47:04 +01:00
let paywall = document . querySelector ( 'div[id^="fittPortal"]' ) ;
if ( paywall )
natgeo _func ( paywall ) ;
2022-11-05 15:09:46 +01:00
waitDOMElement ( 'div[id^="fittPortal"]' , 'DIV' , natgeo _func , false ) ;
csDoneOnce = true ;
window . setTimeout ( function ( ) {
let url = window . location . href ;
2023-12-09 17:47:04 +01:00
let subscribed = document . querySelector ( 'div.Article__Content--gated' ) ;
2022-11-05 15:09:46 +01:00
let msg = document . querySelector ( 'div#bpc_archive' ) ;
if ( subscribed && ! msg ) {
subscribed . appendChild ( archiveLink ( url ) ) ;
subscribed . setAttribute ( 'style' , 'overflow: visible !important;' ) ;
}
2023-12-09 17:47:04 +01:00
let overlay = document . querySelector ( 'div.Article__Content__Overlay--gated' ) ;
if ( overlay )
overlay . classList . remove ( 'Article__Content__Overlay--gated' ) ;
2024-04-07 10:39:17 +02:00
let ads = 'div.ad-slot, div.InsertedAd' ;
hideDOMStyle ( ads ) ;
2023-12-09 17:47:04 +01:00
} , 2000 ) ;
2021-01-26 21:27:43 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'nationalreview.com' ) ) {
2022-09-04 09:13:36 +02:00
if ( ! window . location . pathname . endsWith ( '/amp/' ) ) {
2023-01-11 19:36:19 +01:00
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div.continue-reading' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
refreshCurrentTab ( ) ;
}
2023-12-16 18:08:30 +01:00
} , 5000 ) ;
2021-10-13 17:59:18 +02:00
}
2024-04-07 10:39:17 +02:00
let banners = 'div.zephr-wrapper, div#bc-root, div.cookie-text' ;
let ads = 'amp-ad, .ad-unit, .ad-skeleton, amp-connatix-player, div[class*="-connatix-"]' ;
hideDOMStyle ( banners + ', ' + ads ) ;
2021-01-28 17:34:00 +01:00
}
2022-06-24 20:57:28 +02:00
else if ( matchDomain ( 'nautil.us' ) ) {
2023-04-07 10:06:43 +02:00
let banners = document . querySelectorAll ( 'div[class^="a__sc-np"], div.subscibe-bar' ) ;
removeDOMElement ( ... banners ) ;
2022-06-24 20:57:28 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'newleftreview.org' ) ) {
2021-07-07 18:30:24 +02:00
window . setTimeout ( function ( ) {
let url = window . location . href ;
2023-12-06 19:19:00 +01:00
getGoogleWebcache ( url , 'div.promo-wrapper' , '' , 'div.article-page' ) ;
2022-03-08 19:04:50 +01:00
} , 500 ) ;
2021-04-10 08:46:50 +02:00
}
2021-09-29 20:43:21 +02:00
else if ( matchDomain ( 'newrepublic.com' ) ) {
2023-03-23 18:40:27 +01:00
let modal = document . querySelector ( 'div.article-scheduled-modal' ) ;
2021-11-09 17:18:34 +01:00
let pw _popups = document . querySelector ( 'div#pwPopups' ) ;
2023-09-03 07:20:22 +02:00
removeDOMElement ( modal , pw _popups ) ;
2024-04-07 10:39:17 +02:00
let ads = '.ad-unit' ;
hideDOMStyle ( ads ) ;
2021-09-29 20:43:21 +02:00
}
2022-08-24 20:28:54 +02:00
else if ( matchDomain ( 'newscientist.com' ) ) {
let url = window . location . href ;
2024-01-15 18:46:33 +01:00
func _post = function ( ) {
2023-04-01 14:00:23 +02:00
let lazy _images = document . querySelectorAll ( 'img.lazyload[data-src]:not([src])' ) ;
2022-08-24 20:28:54 +02:00
for ( let elem of lazy _images )
elem . src = elem . getAttribute ( 'data-src' ) . split ( '?' ) [ 0 ] + '?width=800' ;
2023-09-29 08:04:57 +02:00
let break _pre _array = pageContains ( 'div.non-paywall > p' , /…\s?$/ ) ;
if ( break _pre _array . length ) {
let break _pre = break _pre _array [ 0 ] ;
let break _post = document . querySelector ( 'div.paywall > p' ) ;
if ( break _post ) {
let parser = new DOMParser ( ) ;
2023-11-29 08:29:39 +01:00
let doc = parser . parseFromString ( '<p>' + DOMPurify . sanitize ( break _pre . innerHTML . replace ( /\s?…\s?/ , ' ' ) + break _post . innerHTML ) + '</p>' , 'text/html' ) ;
2023-09-29 08:04:57 +02:00
let content _new = doc . querySelector ( 'p' ) ;
break _pre . parentNode . replaceChild ( content _new , break _pre ) ;
removeDOMElement ( break _post ) ;
}
}
2023-12-06 19:19:00 +01:00
}
2024-01-15 18:46:33 +01:00
getGoogleWebcache ( url , 'section#subscription-barrier' , '' , 'div.article-body, article' ) ;
2024-04-02 18:01:01 +02:00
let ads = 'div[class*="Advert"]' ;
hideDOMStyle ( ads ) ;
2022-08-24 20:28:54 +02:00
}
2021-12-11 19:12:13 +01:00
else if ( matchDomain ( 'newsday.com' ) ) {
if ( window . location . pathname . startsWith ( '/amp/' ) ) {
2023-02-15 16:58:28 +01:00
amp _unhide _access _hide ( '="AccessLevel = \'Full Content Access\' OR Error = true"' , '="Error != true AND UserState != \'Subscribed\'"' ) ;
2023-02-26 13:11:15 +01:00
} else {
let nd _lock = document . querySelector ( 'html[class]' ) ;
if ( nd _lock )
nd _lock . removeAttribute ( 'class' ) ;
2024-04-07 10:39:17 +02:00
let ads = 'div[class^="ad_full-banner_"]' ;
hideDOMStyle ( ads ) ;
2021-12-11 19:12:13 +01:00
}
}
2024-03-23 11:57:15 +01:00
else if ( matchDomain ( 'newslaundry.com' ) ) {
let paywall = document . querySelector ( 'div > div > img[alt^="paywall"]' ) ;
if ( paywall && dompurify _loaded ) {
let banner = document . querySelector ( 'div.FrsvM' ) ;
removeDOMElement ( paywall . parentNode . parentNode , banner ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = parseHtmlEntities ( json . articleBody ) ;
let article = document . querySelector ( 'div.story-element-text' ) ;
if ( json _text && article ) {
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( json _text ) + '</div>' , 'text/html' ) ;
let article _new = doc . querySelector ( 'div' ) ;
article . innerHTML = '' ;
article . appendChild ( article _new ) ;
}
}
}
}
}
2023-11-27 18:26:40 +01:00
else if ( matchDomain ( 'newsweek.com' ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div#topad, div[id^="dfp-ad-"]' ;
hideDOMStyle ( ads ) ;
2023-11-27 18:26:40 +01:00
}
2021-12-08 17:45:19 +01:00
else if ( matchDomain ( [ 'nola.com' , 'theadvocate.com' ] ) ) {
if ( window . location . pathname . endsWith ( '.amp.html' ) ) {
let body _hidden = document . querySelector ( '.site-container' ) ;
if ( body _hidden )
body _hidden . setAttribute ( 'style' , 'display:block;' ) ;
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'nybooks.com' ) ) {
let paywall _article = document . querySelector ( '.paywall-article' ) ;
if ( paywall _article )
paywall _article . classList . remove ( 'paywall-article' ) ;
2024-04-07 10:39:17 +02:00
let banners = 'div.toast-cta, div.inline-ad' ;
hideDOMStyle ( banners ) ;
2021-04-10 08:46:50 +02:00
}
else if ( matchDomain ( 'nytimes.com' ) ) {
2023-12-12 12:00:46 +01:00
waitDOMElement ( 'div#dock-container' , 'DIV' , removeDOMElement , false ) ;
csDoneOnce = true ;
2024-04-07 10:39:17 +02:00
let banners = 'div[data-testid="inline-message"], div[id^="ad-"], div.pz-ad-box' ;
hideDOMStyle ( banners ) ;
2021-01-30 12:55:39 +01:00
}
2022-04-18 20:35:24 +02:00
else if ( matchDomain ( 'nzherald.co.nz' ) ) {
2023-01-31 22:36:41 +01:00
// plus code in contentScript_once_var.js (timing)
2024-04-07 10:39:17 +02:00
let premium _toaster = '#premium-toaster' ;
hideDOMStyle ( premium _toaster ) ;
2022-04-18 20:35:24 +02:00
}
2022-07-08 08:10:35 +02:00
else if ( matchDomain ( 'outlookbusiness.com' ) ) {
let paywall = document . querySelector ( 'div#csc-paywall' ) ;
2023-05-08 20:05:06 +02:00
if ( paywall && dompurify _loaded ) {
2022-07-08 08:10:35 +02:00
removeDOMElement ( paywall ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
2023-02-11 09:20:49 +01:00
if ( json _script ) {
2022-07-08 08:10:35 +02:00
let json = JSON . parse ( json _script . innerText ) ;
if ( json && json . props . initialState . dashboard . ARTICLE _POST _DETAIL _API . data . article _data . description ) {
let article _new = json . props . initialState . dashboard . ARTICLE _POST _DETAIL _API . data . article _data . description ;
let article = document . querySelector ( 'div.story-content' ) ;
if ( article ) {
article . innerHTML = '' ;
let parser = new DOMParser ( ) ;
2023-05-08 20:05:06 +02:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( article _new ) + '</div>' , 'text/html' ) ;
2022-07-08 08:10:35 +02:00
let content _new = doc . querySelector ( 'div' ) ;
article . appendChild ( content _new ) ;
}
}
}
}
}
2022-04-18 08:14:17 +02:00
else if ( matchDomain ( 'outlookindia.com' ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = parseHtmlEntities ( json . articleBody ) . replace ( /\n/g , "$&\r\n" ) ;
let content = document . querySelector ( 'div#articleBody' ) ;
if ( json _text && content ) {
content . innerHTML = '' ;
let article _new = document . createElement ( 'p' ) ;
article _new . innerText = json _text ;
content . appendChild ( article _new ) ;
}
}
}
}
}
2024-03-26 07:59:11 +01:00
else if ( matchDomain ( pl _ringier _domains ) ) {
if ( matchDomain ( 'businessinsider.com.pl' ) ) {
let paywall = document . querySelector ( 'div#content-premium-offer' ) ;
removeDOMElement ( paywall ) ;
} else if ( matchDomain ( 'newsweek.pl' ) ) {
let premium = document . querySelector ( 'div.contentPremium[style]' ) ;
if ( premium ) {
premium . removeAttribute ( 'class' ) ;
premium . removeAttribute ( 'style' ) ;
}
2024-03-31 17:22:18 +02:00
let premium _videos = document . querySelectorAll ( 'div.videoPremiumWrapper > div.embed__mainVideoWrapper' ) ;
for ( let video of premium _videos ) {
video . removeAttribute ( 'class' ) ;
video . parentNode . removeAttribute ( 'class' ) ;
}
2024-03-26 07:59:11 +01:00
let placeholder = document . querySelector ( 'div#contentPremiumPlaceholder[class]' ) ;
if ( placeholder )
placeholder . removeAttribute ( 'class' ) ;
} else if ( matchDomain ( 'onet.pl' ) ) {
function onet _main ( node ) {
removeDOMElement ( node ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let article = document . querySelector ( 'section[class^="Body_content__"] > div' ) || document . querySelector ( 'article section' ) ;
if ( article ) {
let parser = new DOMParser ( ) ;
let blocks = json . props . pageProps . story ? json . props . pageProps . story . blocks : json . props . pageProps . blocks ;
let pars = blocks . find ( x => x . type === 'contentPremium' ) . elements ;
for ( let par of pars ) {
let par _elem ;
if ( [ 'heading' , 'paragraph' ] . includes ( par . type ) ) {
if ( par . text ) {
let doc = parser . parseFromString ( '<div style="margin: 25px 0px;">' + DOMPurify . sanitize ( par . text , dompurify _options ) + '</div>' , 'text/html' ) ;
par _elem = doc . querySelector ( 'div' ) ;
}
} else if ( par . type === 'unordered_list' ) {
if ( par . entries ) {
par _elem = document . createElement ( 'ul' ) ;
par _elem . style = 'list-style-type: disc;' ;
for ( let item of par . entries ) {
let doc = parser . parseFromString ( '<li>' + DOMPurify . sanitize ( item , dompurify _options ) + '</li>' , 'text/html' ) ;
par _item = doc . querySelector ( 'li' ) ;
par _elem . appendChild ( par _item ) ;
}
}
} else if ( par . parameters ) {
if ( par . parameters . embedCode ) {
let doc = parser . parseFromString ( '<div style="margin: 25px 0px;">' + DOMPurify . sanitize ( par . parameters . embedCode , dompurify _options ) + '</div>' , 'text/html' ) ;
par _elem = doc . querySelector ( 'div' ) ;
}
} else if ( ! ( par . slotId || [ 'commentsButton' ] . includes ( par . type ) ) )
console . log ( par ) ;
if ( par _elem )
article . appendChild ( par _elem ) ;
}
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
let tp _container _sel = ' div.tp-container-inner' ;
waitDOMElement ( 'div#pianoOffer' + tp _container _sel + ', div.contentPremium' + tp _container _sel , 'DIV' , onet _main ) ;
} else {
function archive _main ( node ) {
removeDOMElement ( node ) ;
let article _sel ;
if ( matchDomain ( 'forbes.pl' ) )
article _sel = 'div[data-run-module="local/main_amd.premiumPlaceholder"]' ;
else if ( matchDomain ( 'auto-swiat.pl' ) )
article _sel = 'div[data-header="header#pageHeader"]' ;
else if ( matchDomain ( 'komputerswiat.pl' ) )
article _sel = 'div[data-run-module="local/main.adult"] > div:nth-last-of-type(1) article' ;
let url = window . location . href ;
let url _archive = 'https://' + archiveRandomDomain ( ) + '/' + url . split ( /[#\?]/ ) [ 0 ] ;
replaceDomElementExt ( url _archive , true , false , article _sel ) ;
}
waitDOMElement ( 'div.contentPremium div.tp-container-inner' , 'DIV' , archive _main ) ;
}
2024-04-02 18:01:01 +02:00
let ads = 'div[class^="AdPlaceholder_"], div[data-placeholder-caption], div[data-run-module$=".floatingAd"], aside[data-ad-container], [class^="pwAds"], .hide-for-paying, div.onet-ad, div.bottomBar' ;
hideDOMStyle ( ads ) ;
2024-03-26 07:59:11 +01:00
}
2024-02-22 16:40:34 +01:00
else if ( matchDomain ( 'polityka.pl' ) ) {
let paywall = document . querySelector ( 'div.cg-article-salebox' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let elem _hidden = document . querySelectorAll ( 'div.cg_article_meat > [style]' ) ;
for ( let elem of elem _hidden )
elem . removeAttribute ( 'style' ) ;
let fade = document . querySelector ( 'article.article_status-cut' ) ;
if ( fade )
fade . classList . remove ( 'article_status-cut' ) ;
}
}
2022-11-16 08:27:47 +01:00
else if ( matchDomain ( 'project-syndicate.org' ) ) {
let url = window . location . href ;
2024-02-27 21:01:10 +01:00
let paywall _sel = 'div.paywall--base' ;
let paywall = document . querySelector ( paywall _sel ) ;
if ( paywall ) {
let article _sel = 'div[data-page-area="article-body"]' ;
let article = document . querySelector ( article _sel ) ;
if ( article )
getArchive ( url , paywall _sel , '' , article _sel ) ;
else {
removeDOMElement ( paywall ) ;
let split _top = document . querySelector ( 'div.split-top' ) ;
if ( split _top )
split _top . after ( archiveLink ( url ) ) ;
}
}
2022-11-16 08:27:47 +01:00
}
2021-11-13 11:57:46 +01:00
else if ( matchDomain ( 'quora.com' ) ) {
2022-02-03 19:11:51 +01:00
let overlays = document . querySelectorAll ( 'div[class*="_overlay"]' ) ;
removeDOMElement ( ... overlays ) ;
2023-05-26 13:41:05 +02:00
let mask _image = document . querySelector ( 'div.jhqnqh' ) ;
2021-11-13 11:57:46 +01:00
if ( mask _image )
2023-05-26 13:41:05 +02:00
mask _image . classList . remove ( 'jhqnqh' ) ;
let read _more _buttons = document . querySelectorAll ( 'button.puppeteer_test_read_more_button.qu-bg--gray_ultralight' ) ;
2022-11-18 14:17:44 +01:00
for ( let elem of read _more _buttons )
elem . click ( ) ;
let overlay _cards = document . querySelectorAll ( 'div[class*="OverlayCard"]' ) ;
for ( let elem of overlay _cards )
elem . removeAttribute ( 'class' ) ;
window . setTimeout ( function ( ) {
let answers = document . querySelectorAll ( 'div[class*="dom_annotate_question_answer_item_"]' ) ;
for ( let answer of answers ) {
let wall = answer . querySelector ( 'div.content-monetization-wall' ) ;
if ( wall ) {
wall . classList . remove ( 'content-monetization-wall' ) ;
let timestamp _link = answer . querySelector ( 'a.answer_timestamp[href]' ) ;
if ( timestamp _link ) {
let answer _link = document . createElement ( 'a' ) ;
answer _link . innerText = 'BPC > open Quora+ answer' ;
answer _link . href = timestamp _link . href ;
wall . appendChild ( answer _link ) ;
}
}
}
} , 500 ) ;
2021-11-13 11:57:46 +01:00
}
2024-04-03 07:18:12 +02:00
else if ( matchDomain ( 'reuters.com' ) ) {
let ads = 'div[data-testid="ResponsiveAdSlot"], div[data-testid="Dianomi"]' ;
hideDOMStyle ( ads ) ;
}
2023-12-20 09:06:44 +01:00
else if ( matchDomain ( 'rp.pl' ) ) {
let url = window . location . href ;
getGoogleWebcache ( url , 'div.paywallComponentWrapper' , '' , 'div.main--content--body' ) ;
}
2022-03-06 17:43:38 +01:00
else if ( matchDomain ( 'rugbypass.com' ) ) {
if ( window . location . pathname . startsWith ( '/plus/' ) ) {
let paywall = document . querySelector ( '.premium-fold-bottom' ) ;
if ( paywall ) {
paywall . classList . remove ( 'premium-fold-bottom' ) ;
let offer = document . querySelector ( '.plus-article-offer' ) ;
removeDOMElement ( offer ) ;
let fade = document . querySelector ( '.fade' ) ;
if ( fade )
fade . classList . remove ( 'fade' ) ;
}
} else
csDoneOnce = true ;
2022-03-05 10:39:41 +01:00
}
2022-01-02 19:21:05 +01:00
else if ( matchDomain ( 'science.org' ) ) {
let paywall = document . querySelector ( 'div.alert-read-limit' ) ;
removeDOMElement ( paywall ) ;
let overlay = document . querySelector ( 'body.alert-read-limit__overlay' ) ;
if ( overlay )
overlay . classList . remove ( 'alert-read-limit__overlay' ) ;
}
2022-03-15 18:34:21 +01:00
else if ( matchDomain ( 'scmp.com' ) ) {
2023-09-11 18:19:26 +02:00
if ( window . location . hostname . startsWith ( 'amp.' ) ) {
amp _unhide _subscr _section ( 'amp-ad, div.ad-banner, div.advert-fly-carpet-container, div.inline-advert' ) ;
let default _meters = document . querySelectorAll ( 'div[id^="default-meter-page-views"]' ) ;
removeDOMElement ( ... default _meters ) ;
} else {
let section _hidden = document . querySelectorAll ( 'section[data-qa="ContentBody-ContentBodyContainer"][class]' ) ;
for ( let elem of section _hidden )
elem . removeAttribute ( 'class' ) ;
2023-11-15 19:25:27 +01:00
let paywalled = document . querySelector ( 'div.paywalled-content' ) ;
if ( paywalled )
paywalled . removeAttribute ( 'class' ) ;
2024-04-07 10:39:17 +02:00
let ads = 'div[data-qa*="AdSlot"], div.adblock-message' ;
hideDOMStyle ( ads ) ;
2023-09-11 18:19:26 +02:00
}
2021-05-10 18:12:59 +02:00
}
2023-01-06 17:41:41 +01:00
else if ( matchDomain ( 'seattletimes.com' ) ) {
2024-04-07 10:39:17 +02:00
let ads = '.top-ad-wrapper' ;
hideDOMStyle ( ads ) ;
2023-01-06 17:41:41 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'seekingalpha.com' ) ) {
2022-11-18 14:17:44 +01:00
if ( ! window . location . pathname . startsWith ( '/amp/' ) ) {
2023-09-30 13:08:32 +02:00
amp _redirect ( 'div[data-test-id="post-locked-banner"]' , { rm _attrib : "data-test-id" } ) ;
let read _more = document . querySelector ( 'button[id^="continueReadingButton"]' ) ;
if ( read _more )
read _more . click ( ) ;
2022-11-18 14:17:44 +01:00
} else {
2021-11-30 17:36:15 +01:00
amp _unhide _access _hide ( '*="premium_access OR"' , '' , '.ad-wrap' ) ;
2021-04-10 08:46:50 +02:00
let paywall = document . querySelector ( '[class*="paywall-container"]' ) ;
2021-11-30 17:36:15 +01:00
removeDOMElement ( paywall ) ;
2021-04-10 08:46:50 +02:00
}
2021-02-05 14:57:27 +01:00
}
2024-02-26 13:02:53 +01:00
else if ( matchDomain ( sg _sph _media _domains ) ) {
let url = window . location . href ;
getArchive ( url , 'div#nocx_paywall_area' , '' , 'main#content' ) ;
2024-04-07 10:39:17 +02:00
let ads = 'div.ads, div[id^="dfp-ad-"], div.cx_paywall_placeholder' ;
hideDOMStyle ( ads ) ;
2024-02-26 13:02:53 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'slate.com' ) ) {
2024-04-07 10:39:17 +02:00
let slate _roadblock = '.slate-roadblock' ;
let ads = 'section[class*="-ad"]' ;
hideDOMStyle ( slate _roadblock + ', ' + ads ) ;
2021-02-13 17:46:39 +01:00
}
2022-05-27 15:11:37 +02:00
else if ( matchDomain ( 'slideshare.net' ) ) {
let limit _overlay = document . querySelector ( '.limit-overlay' ) ;
if ( limit _overlay )
limit _overlay . classList . remove ( 'limit-overlay' ) ;
}
2024-03-10 18:10:33 +01:00
else if ( matchDomain ( 'sltrib.com' ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div.stickyAd, div[class^="sltrib_medrec"]' ;
hideDOMStyle ( ads ) ;
2024-03-10 18:10:33 +01:00
}
2022-01-23 10:13:35 +01:00
else if ( matchDomain ( 'sloanreview.mit.edu' ) ) {
2022-12-12 09:06:10 +01:00
let url = window . location . href ;
2024-02-11 17:31:22 +01:00
let article _sel = 'div.article-content' ;
func _post = function ( ) {
let pars = document . querySelectorAll ( article _sel + ' > p' ) ;
if ( pars . length < 5 ) {
let article = document . querySelector ( article _sel ) ;
if ( article )
article . firstChild . before ( archiveLink ( url ) ) ;
}
}
getGoogleWebcache ( url , 'body.is-paywall' , { rm _class : 'is-paywall' } , article _sel ) ;
2022-01-23 10:13:35 +01:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'sofrep.com' ) ) {
2023-01-26 09:08:35 +01:00
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall ) {
paywall . removeAttribute ( 'class' ) ;
let intro = document . querySelector ( 'div.non-paywall' ) ;
removeDOMElement ( intro ) ;
waitDOMElement ( 'div#paywall_wrap' , 'DIV' , node => removeDOMElement ( node . parentNode ) ) ;
2022-07-07 19:12:31 +02:00
}
2021-04-10 08:46:50 +02:00
let banners = document . querySelectorAll ( '#scrollerCTA, #botCta' ) ;
removeDOMElement ( ... banners ) ;
2021-02-13 18:11:58 +01:00
}
2022-03-27 18:25:09 +02:00
else if ( matchDomain ( 'spglobal.com' ) ) {
let overlay = document . querySelector ( '.article__overlay' ) ;
removeDOMElement ( overlay ) ;
let html _noscroll = document . querySelector ( 'html[class]' ) ;
if ( html _noscroll )
html _noscroll . removeAttribute ( 'class' ) ;
}
2023-05-05 07:26:10 +02:00
else if ( matchDomain ( 'sportico.com' ) ) {
if ( window . location . pathname . endsWith ( '/amp/' ) )
2024-01-29 12:41:35 +01:00
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
2023-05-05 07:26:10 +02:00
}
2021-05-27 20:22:45 +02:00
else if ( matchDomain ( 'staradvertiser.com' ) ) {
2023-04-29 09:51:38 +02:00
if ( window . location . pathname . endsWith ( '/amp/' ) ) {
2021-11-30 17:36:15 +01:00
amp _unhide _subscr _section ( ) ;
2021-05-27 20:22:45 +02:00
} else {
let paywall = document . querySelector ( 'div#hsa-paywall-overlay' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let div _hidden = document . querySelector ( 'div#hsa-paywall-content[style]' ) ;
if ( div _hidden )
div _hidden . removeAttribute ( 'style' ) ;
}
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'startribune.com' ) ) {
2023-08-28 08:56:53 +02:00
let noscroll = document . querySelector ( 'body[class]' ) ;
if ( noscroll )
noscroll . style = 'overflow: auto !important; position: static !important;' ;
let modal = document . querySelector ( 'div.modal-backdrop' ) ;
2023-09-03 07:20:22 +02:00
removeDOMElement ( modal ) ;
2021-02-18 19:47:12 +01:00
}
2023-01-18 17:19:26 +01:00
else if ( matchDomain ( 'statista.com' ) ) {
if ( window . location . pathname . startsWith ( '/outlook/' ) ) {
let promo = document . querySelector ( 'section#promotionElement' ) ;
let chartbox _paywall = document . querySelectorAll ( 'div.xmoChartBoxPaywall' ) ;
removeDOMElement ( promo , ... chartbox _paywall ) ;
let blurred = document . querySelectorAll ( '.blurred' ) ;
for ( let elem of blurred )
elem . removeAttribute ( 'class' ) ;
}
}
2023-07-28 19:40:02 +02:00
else if ( matchDomain ( 'stereogum.com' ) ) {
let paywall = document . querySelector ( 'div.members-only-overlay-wrapper' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
2023-09-30 13:28:40 +02:00
let json _url _dom = document . querySelector ( 'head > link[rel="alternate"][type="application/json"][href]' ) ;
2023-08-12 09:04:57 +02:00
if ( json _url _dom ) {
let json _url = json _url _dom . href ;
fetch ( json _url )
. then ( response => {
if ( response . ok ) {
response . json ( ) . then ( json => {
try {
let json _text = json . acf . article _modules [ 0 ] . copy . replace ( /data-src/g , 'src' ) ;
let content = document . querySelector ( 'div.article__content div.text-block__inner' ) ;
if ( json _text && content ) {
let parser = new DOMParser ( ) ;
2023-12-06 19:19:00 +01:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( json _text , dompurify _options ) + '</div>' , 'text/html' ) ;
2023-08-12 09:04:57 +02:00
let content _new = doc . querySelector ( 'div' ) ;
content . innerHTML = '' ;
content . appendChild ( content _new ) ;
}
} catch ( err ) {
console . log ( err ) ;
2023-07-28 19:40:02 +02:00
}
2023-08-12 09:04:57 +02:00
} ) ;
}
} ) ;
}
2023-07-28 19:40:02 +02:00
}
}
else if ( matchDomain ( 'stocknews.com' ) ) {
let hideme = document . querySelector ( 'div#hideme' ) ;
removeDOMElement ( hideme ) ;
let blurmes = document . querySelectorAll ( 'div[id^="blurme"]' ) ;
for ( let i = 0 ; i < blurmes . length ; i ++ )
blurmes [ i ] . setAttribute ( 'id' , 'blurmenot' + i ) ;
}
2022-07-19 21:26:00 +02:00
else if ( matchDomain ( 'studocu.com' ) ) {
window . setTimeout ( function ( ) {
2023-02-01 17:34:26 +01:00
let paywall = document . querySelector ( 'button[data-test-selector^="preview-banner-"]' ) ;
2022-07-19 21:26:00 +02:00
if ( paywall ) {
2023-04-17 20:25:35 +02:00
let paywall _banner = document . querySelector ( '#document-wrapper > div:not([style])' ) ;
2023-02-01 17:34:26 +01:00
let banners = document . querySelectorAll ( 'div.pf > :not(.page-content), div#premium-page-header' ) ;
removeDOMElement ( paywall _banner , ... banners ) ;
2023-01-25 18:46:53 +01:00
window . setTimeout ( function ( ) {
let blurred _pages = document . querySelectorAll ( 'div.page-content[style]' ) ;
for ( let blurred _page of blurred _pages ) {
let page = document . createElement ( 'span' ) ;
page . setAttribute ( 'class' , 'page-content' ) ;
page . appendChild ( blurred _page . firstChild ) ;
blurred _page . parentNode . replaceChild ( page , blurred _page ) ;
}
} , 2000 ) ;
2022-07-19 21:26:00 +02:00
}
} , 1000 ) ;
}
2024-01-28 10:55:09 +01:00
else if ( matchDomain ( 'study.com' ) ) {
let faded _content = document . querySelector ( 'div.faded-content' ) ;
if ( faded _content )
faded _content . removeAttribute ( 'class' ) ;
let div _hidden = document . querySelector ( 'div.hidden[ng-non-bindable]' ) ;
if ( div _hidden )
div _hidden . removeAttribute ( 'class' ) ;
let banners = document . querySelectorAll ( 'div.article-cutoff-div' ) ;
removeDOMElement ( ... banners ) ;
}
2023-08-05 17:49:39 +02:00
else if ( matchDomain ( 'swarajyamag.com' ) ) {
2024-02-11 08:59:35 +01:00
if ( ! window . location . pathname . startsWith ( '/amp/' ) ) {
let paywall = pageContains ( 'h2' , /Please Sign In To Continue Reading/ ) ;
let amphtml = document . querySelector ( 'head > link[rel="amphtml"]' ) ;
if ( paywall . length ) {
removeDOMElement ( ... paywall ) ;
if ( amphtml )
amp _redirect _not _loop ( amphtml ) ;
}
2023-08-05 17:49:39 +02:00
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'techinasia.com' ) ) {
2024-03-13 19:44:25 +01:00
let paywall = document . querySelector ( 'div.paywall-content' ) ;
if ( paywall && dompurify _loaded ) {
paywall . classList . remove ( 'paywall-content' ) ;
let url = window . location . href ;
let url _xhr = url . replace ( '.com/' , '.com/wp-json/techinasia/2.0/posts/' ) . replace ( '/visual-story/' , '/' ) ;
fetch ( url _xhr )
. then ( response => {
if ( response . ok ) {
response . json ( ) . then ( json => {
let json _text = json . posts [ 0 ] . content ;
json _text = json _text . replace ( /width\=\"(\d){3,}\"/g , 'width="100%"' ) . replace ( /height\=\"(\d){3,}\"/g , 'height="100%"' ) ;
let content = document . querySelector ( 'div.content' ) ;
if ( json _text && content ) {
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div class="jsx-1794864983 content">' + DOMPurify . sanitize ( json _text ) + '</div>' , 'text/html' ) ;
let content _new = doc . querySelector ( 'div.content' ) ;
content . parentNode . replaceChild ( content _new , content ) ;
2021-05-02 16:14:45 +02:00
}
} ) ;
}
2024-03-13 19:44:25 +01:00
} ) ;
}
let splash _subscribe = document . querySelector ( 'div.splash-subscribe' ) ;
let paywall _hard = document . querySelector ( 'div.paywall-hard' ) ;
removeDOMElement ( splash _subscribe , paywall _hard ) ;
2021-04-10 08:46:50 +02:00
}
2023-05-28 09:34:59 +02:00
else if ( matchDomain ( [ 'techtarget.com' , 'computerweekly.com' , 'lemagit.fr' ] ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall ) {
paywall . classList . remove ( 'paywall' ) ;
let banners = document . querySelectorAll ( 'p#firstP, div#inlineRegistrationWrapper' ) ;
removeDOMElement ( ... banners ) ;
}
}
2023-10-15 18:25:19 +02:00
else if ( matchDomain ( 'texasmonthly.com' ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div.promo-in-body' ;
hideDOMStyle ( ads ) ;
2023-10-15 18:25:19 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'the-american-interest.com' ) ) {
let counter = document . getElementById ( 'article-counter' ) ;
removeDOMElement ( counter ) ;
2021-03-01 18:04:43 +01:00
}
2023-09-03 08:41:57 +02:00
else if ( matchDomain ( 'the-scientist.com' ) ) {
let paywall = document . querySelector ( 'div.paywall' ) ;
if ( paywall ) {
paywall . classList . remove ( 'paywall' ) ;
let fader = document . querySelector ( 'div.gated-fader' ) ;
let modal = document . querySelector ( 'div#Modal' ) ;
removeDOMElement ( fader , modal ) ;
}
}
2023-08-11 19:10:11 +02:00
else if ( matchDomain ( 'theamericanconservative.com' ) ) {
2023-10-20 15:01:54 +02:00
let paywall _sel = 'section.c-blog-post__body--locked' ;
let paywall = document . querySelector ( paywall _sel ) ;
2023-08-11 19:10:11 +02:00
if ( paywall && dompurify _loaded ) {
2023-10-20 15:01:54 +02:00
let art _options = {
art _append : true ,
func _text : function ( json _text ) {
if ( json _text . includes ( '<p class="has-drop-cap">' ) ) {
let split = json _text . split ( /(<p class="has-drop-cap">)/ ) ;
json _text = split [ 1 ] + split [ 2 ] ;
} ;
return json _text ;
}
} ;
getJsonUrl ( paywall _sel , { rm _class : 'c-blog-post__body--locked' } , 'div.c-blog-post__content' , art _options ) ;
2023-08-11 19:10:11 +02:00
} else {
let img _dark = document . querySelector ( 'div.c-hero-article__image-img.o-image' ) ;
if ( img _dark )
img _dark . removeAttribute ( 'class' ) ;
}
let modal = document . querySelector ( 'div#emailsub-modal' ) ;
removeDOMElement ( modal ) ;
let noscroll = document . querySelector ( 'body.modal-open' ) ;
if ( noscroll )
noscroll . classList . remove ( 'modal-open' ) ;
}
2022-06-30 20:26:07 +02:00
else if ( matchDomain ( 'theathletic.com' ) ) {
2023-09-30 13:28:40 +02:00
if ( ! ( window . location . search . match ( /(\?|&)amp/ ) && ! document . querySelector ( 'head > link[rel="amphtml"]' ) ) ) {
2023-06-24 08:02:53 +02:00
function theathletic _func ( node ) {
removeDOMElement ( node ) ;
2024-04-07 10:39:17 +02:00
let overlays = 'div[id*="overlay"], div:empty:not([data-rjs])' ;
hideDOMStyle ( overlays ) ;
2022-10-21 08:03:16 +02:00
let body = document . querySelector ( 'body' ) ;
if ( body ) {
body . style . overflow = 'visible' ;
body . style . position = 'relative' ;
2024-03-18 13:35:34 +01:00
window . scrollTo ( 0 , 1000 ) ;
2022-10-21 08:03:16 +02:00
}
2022-06-30 20:26:07 +02:00
}
2023-06-24 08:02:53 +02:00
waitDOMElement ( 'div[id^="slideup-"]' , 'DIV' , theathletic _func ) ;
csDoneOnce = true ;
2022-06-30 20:26:07 +02:00
} else {
amp _unhide _subscr _section ( ) ;
2022-08-02 23:39:41 +02:00
amp _unhide _access _hide ( '' , '*="NOT granted"' ) ;
2022-06-30 20:26:07 +02:00
}
2022-08-04 12:38:00 +02:00
let apron = document . querySelector ( 'div#free-apron-cta, div.slideup-free-apron-container' ) ;
2024-03-12 12:05:27 +01:00
removeDOMElement ( apron ) ;
2022-06-30 20:26:07 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'theatlantic.com' ) ) {
2023-12-09 17:47:04 +01:00
let lazy _images = document . querySelectorAll ( 'img[class*="Image_lazy__"]' ) ;
for ( let elem of lazy _images )
removeClassesByPrefix ( elem , 'Image_lazy__' ) ;
let videos = document . querySelectorAll ( 'iframe[data-src]:not([src])' ) ;
for ( let video of videos )
video . src = video . getAttribute ( 'data-src' ) ;
2024-04-07 10:39:17 +02:00
let banners = 'aside#paywall, div[class^="LostInventoryMessage_"]' ;
hideDOMStyle ( banners ) ;
2021-03-07 14:03:22 +01:00
}
2022-12-27 12:51:47 +01:00
else if ( matchDomain ( 'thebulletin.org' ) ) {
2023-11-03 07:58:21 +01:00
if ( dompurify _loaded )
getJsonUrl ( 'div.article--cropped' , '' , 'div#body-copy' , { art _append : true } ) ;
2022-12-27 12:51:47 +01:00
}
2021-08-13 15:29:59 +02:00
else if ( matchDomain ( 'thedailybeast.com' ) ) {
let paywall = document . querySelector ( 'div.Body__paywall-container' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
let json _script = document . querySelector ( 'script[displayName="initialState"]' ) ;
if ( json _script ) {
2021-08-19 09:03:09 +02:00
let json _str = json _script . text . substring ( json _script . textContent . indexOf ( '{' ) ) ;
try {
let json = JSON . parse ( json _str ) ;
if ( json . body ) {
let pars = json . body . sections ;
let cards = json . body . cards ;
if ( pars ) {
let mobile _doc = document . querySelector ( 'div.Mobiledoc' ) ;
if ( mobile _doc ) {
let mobile _doc _text = mobile _doc . innerText . replace ( /(\r|\n)/g , '' ) ;
for ( let elem of pars ) {
let par _elem = '' ;
if ( elem [ 0 ] === 1 ) {
if ( elem [ 1 ] === 'p' ) {
let par = '' ;
for ( let part of elem [ 2 ] )
par += part [ 3 ] ;
if ( par && ! mobile _doc _text . includes ( par ) ) {
par _elem = document . createElement ( 'p' ) ;
par _elem . innerText = par ;
}
}
} else if ( elem [ 0 ] === 10 ) {
if ( cards && cards [ elem [ 1 ] ] ) {
let card = cards [ elem [ 1 ] ] ;
if ( card [ 0 ] === 'pt-image' ) {
par _elem = document . createElement ( 'p' ) ;
let par _fig = document . createElement ( 'figure' ) ;
let par _img = document . createElement ( 'img' ) ;
par _img . src = card [ 1 ] . url ;
par _fig . appendChild ( par _img ) ;
par _elem . appendChild ( par _fig ) ;
let par _cap = document . createElement ( 'figcaption' ) ;
par _cap . innerText = card [ 1 ] . title + ' ' + card [ 1 ] . credit ;
par _elem . appendChild ( par _cap ) ;
} else if ( card [ 0 ] === 'pt-fancy-links-card' ) {
par _elem = document . createElement ( 'p' ) ;
let par _link = document . createElement ( 'a' ) ;
par _link . href = card [ 1 ] . links ;
par _link . innerText = card [ 1 ] . linksData [ 0 ] . long _headline ;
par _elem . appendChild ( par _link ) ;
}
}
}
if ( par _elem )
mobile _doc . appendChild ( par _elem ) ;
2021-08-13 15:29:59 +02:00
}
2021-08-19 09:03:09 +02:00
}
2021-08-13 15:29:59 +02:00
}
}
2021-08-19 09:03:09 +02:00
csDoneOnce = true ;
} catch ( err ) {
console . log ( err ) ;
2021-08-13 15:29:59 +02:00
}
}
}
2024-04-04 19:02:20 +02:00
let ads = 'aside.AdSlot, div.FooterAd' ;
hideDOMStyle ( ads ) ;
2021-08-13 15:29:59 +02:00
}
2021-04-14 18:43:07 +02:00
else if ( matchDomain ( 'thediplomat.com' ) ) {
2023-09-05 22:30:20 +02:00
if ( matchDomain ( 'magazine.thediplomat.com' ) ) {
2024-01-02 08:58:14 +01:00
let preview = document . querySelector ( 'article.dpl-preview' ) ;
if ( preview )
preview . classList . remove ( 'dpl-preview' ) ;
2023-09-05 22:30:20 +02:00
}
2021-04-14 18:43:07 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'theglobeandmail.com' ) ) {
2023-02-01 17:34:26 +01:00
let lazy _images = document . querySelectorAll ( 'img[src^="data:image/"][data-src]' ) ;
for ( let elem of lazy _images )
elem . src = elem . getAttribute ( 'data-src' ) ;
2024-04-07 10:39:17 +02:00
let ads = 'div.c-ad, div[class^="BaseAd__"]' ;
hideDOMStyle ( ads ) ;
2021-04-10 08:46:50 +02:00
}
else if ( matchDomain ( [ 'thehindu.com' , 'thehindubusinessline.com' ] ) ) {
2022-11-24 17:30:56 +01:00
if ( ! window . location . pathname . endsWith ( '/amp/' ) ) {
2024-04-07 10:39:17 +02:00
let counter = '#test' ;
let ads = 'div.article-ad, div.dfp-ad, div#paywallbox, div[id^="piano-art-"]' ;
hideDOMStyle ( counter + ', ' + ads ) ;
2022-11-24 17:30:56 +01:00
} else {
2024-04-07 10:39:17 +02:00
let ads = 'amp-ad, amp-embed, [class^="height"], [class^="advt"], [id^="piano"]' ;
hideDOMStyle ( ads ) ;
2022-11-24 17:30:56 +01:00
}
2021-04-10 08:46:50 +02:00
function hindu _main ( ) {
2022-11-24 17:30:56 +01:00
if ( window ) {
window . Adblock = false ;
window . isNonSubcribed = false ;
}
2021-04-10 08:46:50 +02:00
}
insert _script ( hindu _main ) ;
2021-03-13 15:58:27 +01:00
}
2023-10-31 07:25:02 +01:00
else if ( matchDomain ( 'theimpression.com' ) ) {
let paywall = document . querySelector ( 'div#modalpostsubscribe' ) ;
if ( paywall ) {
let blureffect = document . querySelectorAll ( 'div.blureffect' ) ;
for ( let elem of blureffect )
elem . classList . remove ( 'blureffect' ) ;
}
}
2023-03-18 10:09:53 +01:00
else if ( matchDomain ( [ 'thejuggernaut.com' , 'jgnt.co' ] ) ) {
2023-12-28 21:58:27 +01:00
let paywall = pageContains ( 'div.font-mono' , /(Read this article and many more by subscribing today|Join today to read the full story)/ ) ;
2023-03-18 10:09:53 +01:00
if ( paywall . length ) {
removeDOMElement ( paywall [ 0 ] . parentNode ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
if ( json _script ) {
try {
2023-12-28 21:58:27 +01:00
let json = JSON . parse ( json _script . text ) ;
2023-03-18 10:09:53 +01:00
if ( json && json . props . pageProps . post ) {
let url _next = json . query . slug ;
if ( url _next && ! window . location . pathname . includes ( url _next ) )
refreshCurrentTab ( ) ;
let pars = json . props . pageProps . post . fields . textEssay . fields . body . content ;
2023-12-28 21:58:27 +01:00
window . setTimeout ( function ( ) {
let article = document . querySelector ( 'div[class*="opacity-"]' ) ;
2023-03-18 10:09:53 +01:00
if ( article ) {
article . innerHTML = '' ;
article . removeAttribute ( 'class' ) ;
2023-12-28 21:58:27 +01:00
let fade = document . querySelectorAll ( 'div.bg-gradient-to-b' ) ;
for ( let elem of fade )
elem . removeAttribute ( 'class' ) ;
let modal = document . querySelector ( 'div#headlessui-portal-root' ) ;
removeDOMElement ( modal ) ;
2023-03-18 10:09:53 +01:00
let par _first = true ;
function attach _text ( sub _item , elem ) {
if ( sub _item . value ) {
let sub _elem = document . createElement ( 'span' ) ;
sub _elem . innerText = sub _item . value ;
if ( sub _item . marks && sub _item . marks . length ) {
let style = '' ;
for ( let mark of sub _item . marks ) {
if ( mark . type === 'bold' )
style += 'font-weight: bold;' ;
else if ( mark . type === 'italic' )
style += 'font-style: italic;' ;
else if ( mark . type === 'underline' )
style += 'text-decoration: underline;' ;
}
sub _elem . style = style ;
}
elem . appendChild ( sub _elem ) ;
}
}
function attach _hyperlink ( sub _item , elem ) {
if ( sub _item . content && sub _item . content [ 0 ] && sub _item . content [ 0 ] . value && sub _item . data && sub _item . data . uri ) {
let sub _elem = document . createElement ( 'a' ) ;
sub _elem . href = sub _item . data . uri ;
sub _elem . innerText = sub _item . content [ 0 ] . value ;
if ( ! matchUrlDomain ( [ 'thejuggernaut.com' , 'jgnt.co' ] , sub _item . data . uri ) )
sub _elem . target = '_blank' ;
sub _elem . style = 'text-decoration: underline;' ;
elem . appendChild ( sub _elem ) ;
}
}
function attach _paragraph ( par , elem ) {
if ( par . content && par . content . length ) {
let span _elem = document . createElement ( 'span' ) ;
for ( let item of par . content ) {
if ( item . nodeType === 'text' ) {
attach _text ( item , span _elem ) ;
} else if ( item . nodeType === 'hyperlink' ) {
attach _hyperlink ( item , span _elem ) ;
} else
console . log ( item ) ;
}
elem . appendChild ( span _elem ) ;
}
}
for ( let par of pars ) {
let elem = document . createElement ( 'p' ) ;
2023-12-28 21:58:27 +01:00
if ( par . nodeType . match ( /^(paragraph|heading-\d)$/ ) ) {
2023-03-18 10:09:53 +01:00
attach _paragraph ( par , elem ) ;
} else if ( [ 'blockquote' ] . includes ( par . nodeType ) ) {
if ( par . content && par . content . length ) {
for ( let item of par . content ) {
if ( item . nodeType === 'paragraph' ) {
elem . style = 'margin: 0px 20px; font-style: italic;' ;
attach _paragraph ( item , elem ) ;
} else
console . log ( item ) ;
}
}
} else if ( par . nodeType === 'hr' ) {
elem . appendChild ( document . createElement ( 'hr' ) ) ;
} else if ( par . nodeType === 'embedded-asset-block' ) {
if ( ! par _first ) {
if ( par . data && par . data . target && par . data . target . fields ) {
if ( par . data . target . fields . file && par . data . target . fields . file . url ) {
let figure = document . createElement ( 'figure' ) ;
let img = document . createElement ( 'img' ) ;
img . src = par . data . target . fields . file . url ;
figure . appendChild ( img ) ;
if ( par . data . target . fields . description ) {
let caption = document . createElement ( 'figcaption' ) ;
caption . innerText = par . data . target . fields . description ;
figure . appendChild ( caption ) ;
}
elem . appendChild ( figure ) ;
}
}
} else
par _first = false ;
} else if ( par . nodeType === 'unordered-list' ) {
if ( par . content && par . content . length ) {
let ul = document . createElement ( 'ul' ) ;
for ( let item of par . content ) {
if ( item . nodeType === 'list-item' ) {
if ( item . content ) {
for ( let sub _item _par of item . content ) {
if ( sub _item _par . nodeType === 'paragraph' ) {
let li = document . createElement ( 'li' ) ;
attach _paragraph ( sub _item _par , li ) ;
ul . appendChild ( li ) ;
}
}
}
} else
console . log ( item ) ;
}
elem . appendChild ( ul ) ;
}
} else {
console . log ( par ) ;
}
2023-11-08 22:40:46 +01:00
if ( elem . hasChildNodes ( ) ) {
2023-03-18 10:09:53 +01:00
article . appendChild ( document . createElement ( 'br' ) ) ;
article . appendChild ( elem ) ;
}
}
}
2023-12-28 21:58:27 +01:00
} , 1000 ) ;
2023-03-18 10:09:53 +01:00
} else
refreshCurrentTab ( ) ;
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
2024-02-01 17:14:36 +01:00
else if ( matchDomain ( 'thelampmagazine.com' ) ) {
let paywall = document . querySelector ( 'div.paywall-gradient' ) ;
if ( paywall ) {
paywall . removeAttribute ( 'class' ) ;
let banner = document . querySelector ( 'section.p-8' ) ;
removeDOMElement ( banner ) ;
}
let login = document . querySelectorAll ( 'a.js-login-modal-trigger' ) ;
for ( let elem of login ) {
elem . removeAttribute ( 'class' ) ;
let url _search = '/search?q=' + elem . innerText . replace ( /\s/g , '+' ) ;
elem . href = url _search ;
elem . onclick = x => window . location . href = url _search ;
}
}
2022-05-19 07:56:10 +02:00
else if ( matchDomain ( 'thelawyersdaily.ca' ) ) {
2022-08-26 19:50:25 +02:00
if ( window . location . pathname . startsWith ( '/amp/' ) ) {
ampToHtml ( ) ;
} else {
let modal = document . querySelectorAll ( '#NewsletterModal, .modal-backdrop' ) ;
removeDOMElement ( ... modal ) ;
}
2022-05-19 07:56:10 +02:00
}
2021-04-28 09:14:47 +02:00
else if ( matchDomain ( 'thenewatlantis.com' ) ) {
let article _gated = document . querySelector ( '.article-gated' ) ;
if ( article _gated )
article _gated . classList . remove ( 'article-gated' ) ;
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'thepointmag.com' ) ) {
let overlay = document . querySelectorAll ( 'div.overlay, div#tpopup-' ) ;
2023-04-08 19:19:49 +02:00
removeDOMElement ( ... overlay ) ;
2021-03-16 18:10:55 +01:00
}
2023-01-06 18:13:16 +01:00
else if ( matchDomain ( 'thequint.com' ) ) {
2024-03-23 11:57:15 +01:00
let lock = document . querySelector ( 'div > img[alt^="lock"]' ) ;
if ( lock && dompurify _loaded ) {
lock . removeAttribute ( 'alt' ) ;
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div#paywall-widget' ) ;
if ( paywall ) {
removeDOMElement ( paywall ) ;
2024-02-21 12:59:46 +01:00
let article = document . querySelector ( 'div.story-element' ) ;
2024-03-23 11:57:15 +01:00
if ( article ) {
let article _new = getArticleQuintype ( ) ;
if ( article _new && article . parentNode )
article . parentNode . replaceChild ( article _new , article ) ;
2024-02-21 12:59:46 +01:00
}
}
2024-03-23 11:57:15 +01:00
let body _hidden = document . querySelector ( 'div#story-body-wrapper' ) ;
if ( body _hidden ) {
body _hidden . removeAttribute ( 'class' ) ;
body _hidden . removeAttribute ( 'style' ) ;
}
} , 4000 ) ;
2023-01-06 18:13:16 +01:00
function thequint _unhide ( node ) {
2024-02-21 12:59:46 +01:00
node . removeAttribute ( 'style' ) ;
2023-01-06 18:13:16 +01:00
}
2024-02-21 12:59:46 +01:00
waitDOMAttribute ( 'div#story-body-wrapper' , 'DIV' , 'style' , thequint _unhide , true ) ;
2023-01-06 18:13:16 +01:00
}
}
2023-07-30 10:02:19 +02:00
else if ( matchDomain ( 'theverge.com' ) ) {
let paywall = document . querySelector ( 'div.bg-paywall-fade' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
if ( json _script ) {
try {
let json = JSON . parse ( json _script . text ) ;
let article = document . querySelector ( 'div.duet--article--article-body-component-container' ) ;
if ( json && article ) {
let json _pars = json . props . pageProps . hydration . responses [ 0 ] . data . entryRevision . body . components ;
article . innerHTML = '' ;
let parser = new DOMParser ( ) ;
for ( let par of json _pars ) {
let elem = document . createElement ( 'p' ) ;
elem . style = 'margin: 20px 0px;' ;
let type = par . _ _typename ;
if ( [ 'EntryBodyParagraph' , 'EntryBodyHeading' ] . includes ( type ) ) {
if ( par . contents && par . contents . html ) {
if ( type === 'EntryBodyHeading' )
elem . style = 'font-weight: bold;' ;
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( par . contents . html ) + '</div>' , 'text/html' ) ;
elem . appendChild ( doc . querySelector ( 'div' ) ) ;
}
} else if ( type === 'EntryBodyHorizontalRule' ) {
elem . appendChild ( document . createElement ( 'hr' ) ) ;
} else if ( type === 'EntryBodyImage' ) {
if ( par . image && par . image . url ) {
let figure = document . createElement ( 'figure' ) ;
if ( par . image . asset && par . image . asset . title )
figure . appendChild ( document . createTextNode ( par . image . asset . title ) ) ;
let img = document . createElement ( 'img' ) ;
img . src = par . image . url ;
figure . appendChild ( img ) ;
if ( par . image . caption && par . image . caption . html ) {
let caption = document . createElement ( 'figcaption' ) ;
caption . innerText = par . image . caption . html ;
if ( par . image . credit && par . image . credit . html )
caption . innerText += ' - ' + par . image . credit . html ;
figure . appendChild ( caption ) ;
}
elem . appendChild ( figure ) ;
}
} else if ( type === 'EntryBodyPullquote' ) {
if ( par . quote && par . quote . html ) {
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( par . quote . html ) + '</div>' , 'text/html' ) ;
elem . appendChild ( doc . querySelector ( 'div' ) ) ;
}
} else if ( type === 'EntryBodyBlockquote' ) {
if ( par . paragraphs ) {
for ( let quote _par of par . paragraphs ) {
if ( quote _par . contents && quote _par . contents . html ) {
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( quote _par . contents . html ) + '</div>' , 'text/html' ) ;
elem . appendChild ( doc . querySelector ( 'div' ) ) ;
}
}
}
} else if ( type === 'EntryBodyList' ) {
if ( par . items ) {
let ul = document . createElement ( 'ul' ) ;
for ( let item of par . items ) {
if ( item . line && item . line . html ) {
let li = document . createElement ( 'li' ) ;
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( item . line . html ) + '</div>' , 'text/html' ) ;
li . appendChild ( doc . querySelector ( 'div' ) ) ;
ul . appendChild ( li ) ;
}
}
elem . appendChild ( ul ) ;
}
} else
console . log ( par ) ;
2023-11-08 22:40:46 +01:00
if ( elem . hasChildNodes ( ) )
2023-07-30 10:02:19 +02:00
article . appendChild ( elem ) ;
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
}
2023-09-18 08:20:00 +02:00
else if ( matchDomain ( 'theweek.com' ) ) {
let paywall = document . querySelector ( 'div.kiosq-main-layer' ) ;
removeDOMElement ( paywall ) ;
let locker = document . querySelector ( 'div.paywall-locker' ) ;
if ( locker )
locker . classList . remove ( 'paywall-locker' ) ;
}
2021-06-12 18:19:48 +02:00
else if ( matchDomain ( 'thewrap.com' ) ) {
2023-10-20 15:01:54 +02:00
if ( dompurify _loaded )
getJsonUrl ( 'div#zephr-payment-form-root' , '' , 'div.entry-content' , { art _append : true } ) ;
let fade = document . querySelector ( 'div.content-area div[style*="background-image: linear-gradient"]' ) ;
removeDOMElement ( fade ) ;
2021-06-12 18:19:48 +02:00
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'timeshighereducation.com' ) ) {
let paywall _cta = document . querySelector ( 'div.paywall-cta' ) ;
if ( paywall _cta ) {
paywall _cta . removeAttribute ( 'style' ) ;
let hidden _divs = document . querySelectorAll ( 'div[style="display: none;"]' ) ;
for ( let hidden _div of hidden _divs )
hidden _div . removeAttribute ( 'style' ) ;
let paywall _fade = document . querySelector ( 'div.paywall-fade' ) ;
if ( paywall _fade )
paywall _fade . classList . remove ( 'paywall-fade' ) ;
}
2021-10-05 18:20:00 +02:00
let hidden _images = document . querySelectorAll ( 'img.b-lazy[src^="data:image/"][data-src]' ) ;
for ( let hidden _image of hidden _images ) {
hidden _image . setAttribute ( 'src' , hidden _image . getAttribute ( 'data-src' ) ) ;
hidden _image . classList . remove ( 'b-lazy' ) ;
hidden _image . parentElement . classList . remove ( 'media--loading' ) ;
}
2024-04-07 10:39:17 +02:00
let ads = 'div[id^="div-gpt-in-article-ad-"], div[class^="the-dfp__in-article-ATD"]' ;
hideDOMStyle ( ads ) ;
2021-03-20 17:16:30 +01:00
}
2021-07-23 17:47:39 +02:00
else if ( matchDomain ( timesofindia _domains ) ) {
2024-01-03 16:41:46 +01:00
if ( matchDomain ( 'epaper.indiatimes.com' ) ) {
2024-02-28 08:59:35 +01:00
let blocker = document . querySelector ( 'div.epaperBlockerWrap' ) ;
2024-01-03 16:41:46 +01:00
removeDOMElement ( blocker ) ;
if ( window . location . pathname . startsWith ( '/english-news-paper-today-toi-print-edition/' ) ) {
let paywall = document . querySelector ( 'section#blocker' ) ;
if ( paywall ) {
let fq = document . querySelector ( 'section#fq' ) ;
removeDOMElement ( paywall , fq ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = json . articleBody ;
let content = document . querySelector ( 'section[type="synopsis"]' ) ;
if ( json _text && content ) {
let article _new = document . createElement ( 'p' ) ;
article _new . innerText = breakText ( json _text ) ;
content . innerHTML = '' ;
let sheet = document . createElement ( 'style' ) ;
sheet . innerText = '[type="synopsis"]::after {background: none !important;}' ;
2024-01-22 17:51:00 +01:00
document . head . appendChild ( sheet ) ;
2024-01-03 16:41:46 +01:00
content . appendChild ( article _new ) ;
}
}
}
}
}
2023-06-24 09:49:26 +02:00
} else {
2024-01-03 16:41:46 +01:00
let url = window . location . href ;
let region _block = document . querySelector ( 'div.plan-popup.active' ) ;
if ( region _block ) {
removeDOMElement ( region _block ) ;
let overflow = document . querySelector ( 'html[style]' ) ;
if ( overflow )
overflow . removeAttribute ( 'style' ) ;
}
if ( ! window . location . pathname . includes ( '/amp_' ) ) {
2024-02-24 10:23:36 +01:00
amp _redirect ( 'div[id^="story-blocker"]' , '' , url . replace ( '/articleshow/' , '/amp_articleshow/' ) ) ;
2024-01-03 16:41:46 +01:00
} else {
let amp _images = document . querySelectorAll ( 'div.inline-image > div.inline-imgecontent > amp-img[src]' ) ;
for ( let amp _image of amp _images ) {
amp _image . parentNode . removeAttribute ( 'class' ) ;
amp _image . parentNode . parentNode . removeAttribute ( 'class' ) ;
let elem = document . createElement ( 'img' ) ;
Object . assign ( elem , {
src : amp _image . getAttribute ( 'src' ) ,
alt : amp _image . getAttribute ( 'alt' )
} ) ;
amp _image . parentNode . replaceChild ( elem , amp _image ) ;
2024-03-02 12:07:22 +01:00
}
2023-06-24 09:49:26 +02:00
}
2021-12-21 17:38:17 +01:00
}
2021-07-23 17:47:39 +02:00
}
2022-11-09 18:14:23 +01:00
else if ( matchDomain ( no _nhst _media _domains ) ) {
let url = window . location . href ;
if ( url . includes ( '.tradewindsnews.com/markets/' ) ) {
2021-07-11 11:21:13 +02:00
let paywall = document . querySelector ( 'iframe[src]' ) ;
removeDOMElement ( paywall ) ;
let overflow = document . querySelector ( 'body[style]' ) ;
if ( overflow )
overflow . removeAttribute ( 'style' ) ;
let blurred = document . querySelector ( 'body > div[style]' ) ;
if ( blurred )
blurred . removeAttribute ( 'style' ) ;
2024-03-03 15:09:20 +01:00
} else if ( matchDomain ( 'upstreamonline.com' ) ) {
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div.dn-paywall > div#sub-paywall-container' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall . parentNode ) ;
let article = document . querySelector ( 'div#dn-content' ) ;
let json _script = document . querySelector ( 'script#__NUXT_DATA__' ) ;
if ( json _script ) {
try {
let pars = JSON . parse ( json _script . text ) ;
let article _id _index = pars . indexOf ( 'global-article' ) + 1 ;
if ( article _id _index ) {
let article _id = pars [ article _id _index ] ;
if ( article _id && ! window . location . pathname . endsWith ( article _id ) ) {
refreshCurrentTab ( ) ;
return ;
}
}
article . innerHTML = '' ;
article . classList . remove ( 'shadow' ) ;
let img _first = true ;
let parser = new DOMParser ( ) ;
for ( let par of pars ) {
let elem ;
if ( par . type ) {
let type = pars [ par . type ] ;
if ( [ 'text' , 'subhead' ] . includes ( type ) ) {
if ( par . html || par . value ) {
let index = par . html || par . value ;
let json _text = pars [ index ] ;
let content _new = parser . parseFromString ( '<p class="dn-text">' + DOMPurify . sanitize ( json _text ) + '</p>' , 'text/html' ) ;
elem = content _new . querySelector ( 'p' ) ;
if ( par . value )
elem . style = 'font-weight: bold;' ;
}
} else if ( type === 'picture' ) {
if ( img _first )
img _first = false ;
else {
elem = document . createElement ( 'figure' ) ;
elem . className = 'dn-image' ;
let img = document . createElement ( 'img' ) ;
img . src = pars [ par . src ] ;
elem . appendChild ( img ) ;
if ( par . caption ) {
let caption = document . createElement ( 'p' ) ;
caption . innerText = pars [ par . caption ] ;
if ( par . credit )
caption . innerText += ' (' + pars [ par . credit ] + ')' ;
elem . appendChild ( caption ) ;
}
}
} else if ( type === 'news' && par . title && par . url ) {
elem = document . createElement ( 'a' ) ;
elem . href = pars [ par . url ] ;
elem . innerText = 'Related: ' + pars [ par . title ] ;
elem . style = 'font-weight: bold;' ;
} else if ( ! [ 'ad' , 'author' , 'break' , 'Location' , 'news' , 'Organisation' , 'promobox' , 'Person' , 'Region' , 'Regions' , 'related' , 'Sectors' ] . includes ( type ) ) {
for ( let item in par ) {
console . log ( item ) ;
console . log ( pars [ par [ item ] ] ) ;
}
}
if ( elem )
article . appendChild ( elem ) ;
}
}
} catch ( err ) {
console . log ( err ) ;
}
}
}
} , 1000 ) ;
2022-11-09 18:14:23 +01:00
} else {
2023-10-04 09:04:32 +02:00
let fade = document . querySelector ( 'div[style*="background-image: linear-gradient"]' ) ;
if ( fade ) {
removeDOMElement ( fade ) ;
let header = document . querySelector ( 'div.article-body > div' ) ;
header _nofix ( header ) ;
}
2021-07-11 11:21:13 +02:00
}
}
2023-09-21 20:55:33 +02:00
else if ( matchDomain ( uk _incisive _media _domains ) ) {
let url = window . location . href ;
2023-12-06 19:19:00 +01:00
let paywall _sel = 'div#d-wrapper' ;
let paywall = document . querySelector ( paywall _sel ) ;
2023-09-21 20:55:33 +02:00
if ( paywall ) {
2023-09-30 13:08:32 +02:00
let live _blog = document . querySelector ( 'head > meta[name="description"][content^="In this live blog"]' ) ;
2023-09-21 20:55:33 +02:00
let article _sel = 'div.article-content' ;
2023-11-02 18:33:03 +01:00
let article = document . querySelector ( article _sel ) ;
2023-09-21 20:55:33 +02:00
if ( article ) {
if ( live _blog ) {
2023-12-06 19:19:00 +01:00
removeDOMElement ( paywall ) ;
2023-09-21 20:55:33 +02:00
article . firstChild . before ( googleWebcacheLink ( url ) ) ;
} else {
2023-12-06 19:19:00 +01:00
getGoogleWebcache ( url , 'div#d-wrapper' , '' , article _sel ) ;
2023-09-21 20:55:33 +02:00
}
}
}
}
2022-02-10 18:18:04 +01:00
else if ( matchDomain ( usa _conde _nast _domains ) ) {
2024-02-19 08:41:18 +01:00
let banners = document . querySelectorAll ( 'aside.paywall-bar, div[class^="MessageBannerWrapper-"], div.ad-stickyhero' ) ;
removeDOMElement ( ... banners ) ;
2022-02-10 18:18:04 +01:00
}
2021-08-17 22:45:11 +02:00
else if ( matchDomain ( usa _craincomm _domains ) ) {
2023-11-16 17:27:17 +01:00
if ( matchDomain ( 'european-rubber-journal.com' ) ) {
let paywall = document . querySelector ( 'div.article-overlay' ) ;
if ( paywall ) {
let fade = document . querySelector ( 'div.gradient' ) ;
removeDOMElement ( paywall , fade ) ;
let truncated = document . querySelector ( 'div.truncated' ) ;
if ( truncated )
truncated . classList . remove ( 'truncated' ) ;
}
} else {
let body _hidden = document . querySelector ( 'body[class]' ) ;
if ( body _hidden )
body _hidden . removeAttribute ( 'class' ) ;
let lazy _images = document . querySelectorAll ( 'img.lazy[data-src]' ) ;
for ( let lazy _image of lazy _images ) {
lazy _image . src = lazy _image . getAttribute ( 'data-src' ) ;
lazy _image . removeAttribute ( 'class' ) ;
}
let lazy _sources = document . querySelectorAll ( 'source[srcset^="data:image"]' ) ;
removeDOMElement ( ... lazy _sources ) ;
let sponsored _article = document . querySelector ( 'div.sponsored-article' ) ;
if ( sponsored _article )
sponsored _article . classList . remove ( 'sponsored-article' ) ;
}
2024-04-03 18:15:08 +02:00
let ads = 'div.footer__ads-footer' ;
hideDOMStyle ( ads ) ;
2022-07-31 08:59:34 +02:00
}
2023-12-19 16:49:33 +01:00
else if ( matchDomain ( usa _nymag _domains ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div.m-ad' ;
hideDOMStyle ( ads ) ;
2023-12-19 16:49:33 +01:00
}
2022-01-28 16:05:29 +01:00
else if ( matchDomain ( usa _outside _mag _domains ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div.js-ad' ;
hideDOMStyle ( ads ) ;
2022-01-28 16:05:29 +01:00
}
2021-06-20 20:32:12 +02:00
else if ( matchDomain ( usa _tribune _domains ) ) {
let overlay = document . querySelector ( 'div#zephr-overlay' ) ;
removeDOMElement ( overlay ) ;
}
2021-05-06 19:50:12 +02:00
else if ( matchDomain ( 'usatoday.com' ) ) {
2021-12-09 17:47:00 +01:00
if ( window . location . hostname . startsWith ( 'amp.' ) ) {
amp _unhide _access _hide ( '="gup.hasAssetAccess"' , '' , 'div[class*="ad-"]' ) ;
} else {
let roadblock = document . querySelector ( '.roadblock-container' ) ;
if ( roadblock ) {
removeDOMElement ( roadblock ) ;
article _next = document . querySelector ( 'article.next-in-depth-story > div.article-inner' ) ;
if ( article _next ) {
let url = article _next . getAttribute ( 'data-url' ) ;
let weblink = document . createElement ( 'a' ) ;
weblink . href = url ;
weblink . innerText = 'open next in-depth story' ;
article _next . appendChild ( weblink ) ;
}
2021-05-06 19:50:12 +02:00
}
}
}
2023-09-17 18:43:44 +02:00
else if ( matchDomain ( 'vikatan.com' ) ) {
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div#paywallDisplay' ) ;
if ( paywall && dompurify _loaded ) {
removeDOMElement ( paywall ) ;
let json _script = getArticleJsonScript ( ) ;
if ( json _script ) {
let json = JSON . parse ( json _script . text ) ;
if ( json ) {
let json _text = parseHtmlEntities ( json . articleBody ) ;
let content = document . querySelector ( 'div.story-element > div' ) ;
if ( json _text && content ) {
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( json _text ) + '</div>' , 'text/html' ) ;
let content _new = doc . querySelector ( 'div' ) ;
content . parentNode . replaceChild ( content _new , content ) ;
}
}
}
}
let story _hidden = document . querySelector ( 'div[class^="styles-m__story-card-wrapper_"]' ) ;
if ( story _hidden )
story _hidden . removeAttribute ( 'class' ) ;
} , 500 ) ;
}
2024-02-07 17:35:01 +01:00
else if ( matchDomain ( 'voguebusiness.com' ) ) {
2024-02-09 12:18:03 +01:00
let article _sel = 'div[data-testid="ArticlePageChunks"]' ;
let article = document . querySelector ( article _sel ) ;
2024-02-07 17:35:01 +01:00
if ( article ) {
let pars = article . querySelectorAll ( 'p' ) ;
if ( pars . length < 5 ) {
2024-02-09 12:18:03 +01:00
let url = window . location . href ;
let url _archive = 'https://' + archiveRandomDomain ( ) + '/' + url . split ( /[#\?]/ ) [ 0 ] ;
csDoneOnce = true ;
replaceDomElementExt ( url _archive , true , false , article _sel ) ;
2024-02-07 17:35:01 +01:00
}
}
}
2021-04-10 08:46:50 +02:00
else if ( matchDomain ( 'washingtonpost.com' ) ) {
2024-04-07 10:39:17 +02:00
let leaderboard = '#leaderboard-wrapper' ;
let ads = 'div[data-qa$="-ad"]' ;
hideDOMStyle ( leaderboard + ', ' + ads ) ;
2021-04-05 19:56:50 +02:00
}
2022-03-19 17:24:47 +01:00
else if ( matchDomain ( 'winnipegfreepress.com' ) ) {
2024-04-07 10:39:17 +02:00
let ads = '.billboard-ad-space, .article-ad, .fixed-sky' ;
hideDOMStyle ( ads ) ;
2022-03-19 17:24:47 +01:00
}
2021-10-06 08:46:58 +02:00
else if ( matchDomain ( 'wsj.com' ) ) {
2023-08-30 08:45:08 +02:00
if ( window . location . pathname . startsWith ( '/livecoverage/' ) ) {
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div#cx-lc-snippet' ) ;
2023-09-30 13:08:32 +02:00
let amphtml = document . querySelector ( 'head > link[rel="amphtml"]' ) ;
2023-08-30 08:45:08 +02:00
if ( paywall ) {
removeDOMElement ( paywall ) ;
if ( amphtml ) {
2023-09-30 13:08:32 +02:00
amp _redirect _not _loop ( amphtml ) ;
2023-10-31 17:55:19 +01:00
} else {
let fade = document . querySelectorAll ( 'div[class*="-CardWrapper"]' ) ;
for ( let elem of fade )
elem . removeAttribute ( 'class' ) ;
2023-08-30 08:45:08 +02:00
}
}
} , 1000 ) ;
} else {
let url _article = window . location . pathname . includes ( '/articles/' ) ;
let path _article = window . location . pathname . match ( /((\w)+(\-)+){3,}\w+/ ) ;
if ( url _article || path _article ) {
if ( window . location . pathname . startsWith ( '/amp/' ) ) {
amp _unhide _subscr _section ( ) ;
} else {
2024-01-28 18:20:04 +01:00
let paywall _sel = '.snippet-promotion, div#cx-snippet-overlay' ;
let paywall = document . querySelector ( paywall _sel ) ;
if ( paywall ) {
2023-09-13 16:51:52 +02:00
if ( ! matchDomain ( 'www.wsj.com' ) ) {
2024-01-28 18:20:04 +01:00
removeDOMElement ( paywall ) ;
2023-09-13 16:51:52 +02:00
if ( url _article )
window . location . href = window . location . href . replace ( 'wsj.com' , 'wsj.com/amp' ) ;
else
window . location . href = '/amp/articles/' + path _article [ 0 ] ;
2024-01-28 18:20:04 +01:00
} else if ( dompurify _loaded ) {
let url = window . location . href ;
let article _sel = 'article section' ;
let wsj _pro = paywall . querySelector ( 'a[href^="https://wsjpro.com/"]' ) ;
if ( wsj _pro )
article _sel = 'article' ;
2024-03-29 07:39:42 +01:00
let video _sel = 'div[data-type="video"]' ;
let video = document . querySelector ( video _sel ) ;
2024-03-22 07:26:08 +01:00
func _post = function ( ) {
2024-03-29 07:39:42 +01:00
if ( video ) {
let video _new = document . querySelector ( video _sel ) ;
if ( video _new && video _new . parentNode )
video _new . parentNode . replaceChild ( video , video _new ) ;
}
2024-03-22 07:26:08 +01:00
if ( mobile ) {
let inline _images = document . querySelectorAll ( 'div[style] > figure > picture > img' ) ;
for ( let elem of inline _images ) {
elem . style = 'width: 100%;' ;
elem . removeAttribute ( 'height' ) ;
elem . removeAttribute ( 'width' ) ;
elem . parentNode . removeAttribute ( 'style' ) ;
elem . parentNode . parentNode . parentNode . removeAttribute ( 'style' ) ;
}
let inline _data = document . querySelectorAll ( 'div[data-layout="inline"][style]' ) ;
for ( let elem of inline _data )
elem . removeAttribute ( 'style' ) ;
}
let read _next = document . querySelector ( 'div#cx-what-to-read-next' ) ;
removeDOMElement ( read _next ) ;
let inline _wrappers = document . querySelectorAll ( 'div[style*="background-position"] > div[id^="wrapper-INLINEIMM_"]' ) ;
for ( let elem of inline _wrappers )
removeDOMElement ( elem . parentNode ) ;
}
2024-01-28 18:20:04 +01:00
getArchive ( url , paywall _sel , '' , article _sel ) ;
2023-09-13 16:51:52 +02:00
}
2023-08-30 08:45:08 +02:00
}
2023-08-22 19:46:22 +02:00
}
2021-11-02 19:00:40 +01:00
}
2021-08-01 10:30:10 +02:00
}
2024-04-07 10:39:17 +02:00
let ads = 'div.wsj-ad, div.adWrapper, div.css-xgokil-Box' ;
hideDOMStyle ( ads ) ;
2021-04-07 22:24:53 +02:00
}
2022-12-30 12:35:13 +01:00
else if ( matchDomain ( 'zerohedge.com' ) ) {
2023-03-29 18:05:49 +02:00
window . setTimeout ( function ( ) {
let paywall = document . querySelector ( 'div[class^="PremiumOverlay_container__"]' ) ;
2023-05-08 20:05:06 +02:00
if ( paywall && dompurify _loaded ) {
2023-03-29 18:05:49 +02:00
removeDOMElement ( paywall ) ;
let json _script = document . querySelector ( 'script#__NEXT_DATA__' ) ;
if ( json _script ) {
try {
let json = JSON . parse ( json _script . innerText ) ;
if ( json && json . props . pageProps . node . body ) {
let article _new = parseHtmlEntities ( decode _utf8 ( atob ( json . props . pageProps . node . body . substring ( 21 ) ) ) ) ;
let article = document . querySelector ( 'div[class^="NodeContent_mainContent__"' ) ;
if ( article ) {
article . innerHTML = '' ;
let parser = new DOMParser ( ) ;
2023-05-08 20:05:06 +02:00
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( article _new ) + '</div>' , 'text/html' ) ;
2023-03-29 18:05:49 +02:00
let content _new = doc . querySelector ( 'div' ) ;
article . appendChild ( content _new ) ;
}
2022-12-30 12:35:13 +01:00
}
2023-03-29 18:05:49 +02:00
} catch ( err ) {
console . log ( err ) ;
2022-12-30 12:35:13 +01:00
}
}
}
2023-03-29 18:05:49 +02:00
} , 1000 ) ;
2022-12-30 12:35:13 +01:00
}
2024-02-16 08:46:26 +01:00
else if ( matchDomain ( usa _gannett _domains ) || document . querySelector ( 'head > link[href*=".gannettdigital.com/"], head > link[href*=".gannett-cdn.com/"]' ) ) {
2023-04-30 07:38:33 +02:00
if ( window . location . pathname . endsWith ( '/restricted/' ) && window . location . search . startsWith ( '?return=' ) )
window . location . href = decodeURIComponent ( window . location . href . split ( '?return=' ) [ 1 ] ) ;
}
2024-03-16 12:35:07 +01:00
else if ( matchDomain ( usa _hearst _comm _domains ) || document . querySelector ( 'head > script[src*="/treg.hearstnp.com/"]' ) ) {
2024-03-08 12:11:32 +01:00
let overlay = document . querySelector ( 'div > div#modalOuter' ) ;
if ( overlay ) {
hideDOMElement ( overlay . parentNode ) ;
let noscroll = document . querySelector ( 'body[style]' ) ;
if ( noscroll )
noscroll . removeAttribute ( 'style' ) ;
}
let ads = pageContains ( 'div > div > p' , 'Article continues below this ad' ) ;
for ( let elem of ads )
hideDOMElement ( elem . parentNode . parentNode ) ;
}
2024-03-16 12:35:07 +01:00
else if ( ( domain = matchDomain ( usa _lee _ent _domains ) ) || matchDomain ( ca _torstar _domains . concat ( [ 'abqjournal.com' ] ) ) || document . querySelector ( 'head > meta[name="tncms-access-version"]' ) ) {
2022-04-06 17:17:13 +02:00
if ( window . location . pathname . endsWith ( '.amp.html' ) ) {
2022-07-31 10:43:57 +02:00
amp _unhide _access _hide ( '="hasAccess"' , '="NOT hasAccess"' , 'amp-ad, amp-embed, .amp-ads-container' ) ;
2022-04-06 17:17:13 +02:00
let elem _hidden = document . querySelectorAll ( 'html[class], body[class]' ) ;
for ( let elem of elem _hidden )
elem . removeAttribute ( 'class' ) ;
2023-07-20 22:15:51 +02:00
let amp _images = document . querySelectorAll ( 'div.main-content amp-img[src^="https://"]' ) ;
for ( let amp _image of amp _images ) {
let elem = document . createElement ( 'img' ) ;
Object . assign ( elem , {
src : amp _image . getAttribute ( 'src' ) ,
alt : amp _image . getAttribute ( 'alt' ) ,
height : '400'
} ) ;
amp _image . parentNode . replaceChild ( elem , amp _image ) ;
}
2023-03-01 08:46:00 +01:00
} else {
if ( ! domain ) {
2023-05-24 20:13:55 +02:00
function unscramble ( t ) {
for ( var n = "" , i = 0 , r = t . length ; i < r ; i ++ ) {
var s = t . charCodeAt ( i ) ;
if ( s >= 33 && s <= 126 ) {
var sTmp = String . fromCharCode ( 33 + ( s - 33 + 47 ) % 94 ) ;
n += sTmp ;
} else
n += t . charAt ( i ) ;
}
return n ;
}
2023-08-10 07:28:11 +02:00
let paywall = document . querySelector ( 'div.subscriber-offers' ) ;
removeDOMElement ( paywall ) ;
2023-05-24 20:13:55 +02:00
let subscriber _only = document . querySelectorAll ( 'div.subscriber-only' ) ;
2023-03-01 08:46:00 +01:00
for ( let elem of subscriber _only ) {
2023-05-24 20:13:55 +02:00
if ( elem . classList . contains ( 'encrypted-content' ) && dompurify _loaded ) {
let parser = new DOMParser ( ) ;
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( unscramble ( elem . innerText ) ) + '</div>' , 'text/html' ) ;
let content _new = doc . querySelector ( 'div' ) ;
elem . parentNode . replaceChild ( content _new , elem ) ;
}
2023-03-01 08:46:00 +01:00
elem . removeAttribute ( 'style' ) ;
elem . removeAttribute ( 'class' ) ;
}
let banners = document . querySelectorAll ( 'div.subscription-required, div.redacted-overlay' ) ;
removeDOMElement ( ... banners ) ;
2022-09-08 07:46:32 +02:00
}
2024-04-07 10:39:17 +02:00
let ads = 'div.tnt-ads-container, div[class*="adLabelWrapper"]' ;
hideDOMStyle ( ads ) ;
2022-04-06 17:17:13 +02:00
}
2021-12-12 09:38:17 +01:00
}
2022-07-26 18:20:19 +02:00
else if ( ( domain = matchDomain ( usa _mcc _domains ) ) ||
( window . location . hostname . startsWith ( 'account.' ) && document . querySelector ( 'script[src*=".mcclatchyinteractive.com/"]' ) ) ||
( window . location . href . match ( /\/\/amp\..+\.com\/(.+\/)?article(\d){8,}\.html/ ) && document . querySelector ( 'a[href^="https://classifieds.mcclatchy.com/"]' ) ) ) {
2021-04-10 08:46:50 +02:00
let url = window . location . href ;
2023-02-07 17:37:15 +01:00
let hostname = window . location . hostname ;
if ( ! domain )
2024-01-26 13:25:09 +01:00
domain = hostname . replace ( /^(www|account|amp)\./ , '' ) ;
2023-02-07 17:37:15 +01:00
if ( hostname . startsWith ( 'account.' ) && window . location . search . startsWith ( '?resume=' ) ) {
2021-04-10 08:46:50 +02:00
window . setTimeout ( function ( ) {
2022-01-13 21:03:56 +01:00
window . location . href = 'https://amp.' + domain + '/article' + url . split ( 'resume=' ) [ 1 ] . split ( /[#&]/ ) [ 0 ] + '.html' ;
2022-03-08 19:04:50 +01:00
} , 500 ) ;
2024-01-26 13:25:09 +01:00
} else if ( hostname . startsWith ( 'amp.' ) ) {
amp _unhide _subscr _section ( 'amp-ad, amp-embed' ) ;
2023-02-23 12:46:03 +01:00
let subscriptions _action = document . querySelector ( 'div[subscriptions-action][subscriptions-display="NOT data.hasError"]' ) ;
if ( subscriptions _action )
subscriptions _action . removeAttribute ( 'subscriptions-action' ) ;
2021-04-10 08:46:50 +02:00
let subscr _tag = document . querySelector ( 'div#subscriber-exclusive-tag' ) ;
2024-01-26 13:25:09 +01:00
let amp _players = document . querySelectorAll ( 'amp-connatix-player, amp-iframe.trinity-player' ) ;
2021-04-10 08:46:50 +02:00
removeDOMElement ( subscr _tag , ... amp _players ) ;
2024-01-26 13:25:09 +01:00
let amp _images = document . querySelectorAll ( 'amp-img[srcset]:not([src])' ) ;
for ( let elem of amp _images ) {
let img = document . createElement ( 'img' ) ;
img . src = elem . getAttribute ( 'srcset' ) . split ( ' ' ) [ 0 ] ,
img . alt = elem . getAttribute ( 'alt' ) ,
img . style = 'width: 100%;' ;
elem . parentNode . replaceChild ( img , elem ) ;
}
2021-04-10 08:46:50 +02:00
}
let premium _svgs = document . querySelectorAll ( 'h3 > a > svg' ) ;
let premium _link ;
for ( let premium _svg of premium _svgs ) {
premium _link = premium _svg . parentElement ;
if ( premium _link . href . includes ( 'www.' ) )
premium _link . href = premium _link . href . replace ( 'www.' , 'amp.' ) ;
}
2024-04-07 10:39:17 +02:00
let ads = 'div[id^="zone-el-"]' ;
hideDOMStyle ( ads ) ;
2021-03-27 11:53:38 +01:00
}
2024-04-02 19:47:30 +02:00
else if ( matchDomain ( usa _mng _domains ) || document . querySelector ( 'head > link[rel="stylesheet"][id^="dfm-accuweather-"], footer li > a[href^="https://www.medianewsgroup.com"]' ) ) {
if ( window . location . pathname . endsWith ( '/amp/' ) )
2024-01-10 11:02:03 +01:00
amp _unhide _subscr _section ( 'amp-ad, amp-embed, div.ampWrapperInside, div#paywall' ) ;
2024-04-02 19:47:30 +02:00
else if ( dompurify _loaded )
getJsonUrl ( '#server-paywall' , '' , 'div.body-copy' , { art _append : 1 } ) ;
2021-08-16 22:49:58 +02:00
}
2022-12-23 15:48:26 +01:00
else if ( document . querySelector ( 'script[src*=".axate.io/"]' ) ) {
let premium = document . querySelector ( '.premium, div[class*="-premium"]' ) ;
if ( premium )
premium . removeAttribute ( 'class' ) ;
}
2024-02-16 19:28:06 +01:00
else if ( document . querySelector ( 'head > meta[property][content^="https://cdn.forumcomm.com/"]' ) ) {
2024-04-07 10:39:17 +02:00
let ads = 'div.GoogleDfpAd-Content' ;
hideDOMStyle ( ads ) ;
2024-02-16 19:28:06 +01:00
}
2023-12-28 13:09:10 +01:00
else if ( document . querySelector ( 'head > link[href*="/leaky-paywall"], script[src*="/leaky-paywall"], div[id^="issuem-leaky-paywall-"]' ) ) {
let js _cookie = document . querySelector ( 'script#leaky_paywall_cookie_js-js-extra' ) ;
if ( js _cookie && js _cookie . text . includes ( '"post_container":"' ) ) {
let post _sel = js _cookie . text . split ( '"post_container":"' ) [ 1 ] . split ( '"' ) [ 0 ] ;
if ( post _sel ) {
let post = document . querySelector ( post _sel ) ;
if ( post )
post . removeAttribute ( 'class' ) ;
}
}
}
2021-04-10 08:46:50 +02:00
else
csDone = true ;
}
2023-07-23 09:14:39 +02:00
} // end bpc_done
2021-04-07 22:24:53 +02:00
2020-01-28 23:06:25 +01:00
// General Functions
2019-11-23 05:53:56 +01:00
function removeDOMElement ( ... elements ) {
2021-04-10 08:46:50 +02:00
for ( let element of elements ) {
if ( element )
element . remove ( ) ;
}
2019-10-06 19:28:18 +02:00
}
2019-10-08 17:41:09 +02:00
2022-10-19 21:28:47 +02:00
function hideDOMElement ( ... elements ) {
for ( let element of elements ) {
if ( element )
element . style = 'display:none !important;' ;
}
}
2024-04-02 17:45:00 +02:00
function hideDOMStyle ( selector , id = 1 ) {
let style = document . querySelector ( 'head > style#ext' + id ) ;
if ( ! style && document . head ) {
let sheet = document . createElement ( 'style' ) ;
sheet . id = 'ext' + id ;
sheet . innerText = selector + ' {display: none !important;}' ;
document . head . appendChild ( sheet ) ;
}
}
2021-04-07 22:24:53 +02:00
function waitDOMElement ( selector , tagName = '' , callback , multiple = false ) {
2021-04-10 08:46:50 +02:00
new window . MutationObserver ( function ( mutations ) {
for ( let mutation of mutations ) {
for ( let node of mutation . addedNodes ) {
if ( ! tagName || ( node . tagName === tagName ) ) {
if ( node . matches ( selector ) ) {
callback ( node ) ;
if ( ! multiple )
this . disconnect ( ) ;
}
2021-04-07 22:24:53 +02:00
}
2021-04-10 08:46:50 +02:00
}
}
} ) . observe ( document , {
subtree : true ,
childList : true
} ) ;
2021-04-07 22:24:53 +02:00
}
2021-07-10 19:02:46 +02:00
function waitDOMAttribute ( selector , tagName = '' , attributeName = '' , callback , multiple = false ) {
let targetNode = document . querySelector ( selector ) ;
if ( ! targetNode )
2021-12-12 09:38:17 +01:00
return ;
2021-07-10 19:02:46 +02:00
new window . MutationObserver ( function ( mutations ) {
for ( let mutation of mutations ) {
if ( mutation . target . attributes [ attributeName ] ) {
callback ( mutation . target ) ;
if ( ! multiple )
this . disconnect ( ) ;
}
}
} ) . observe ( targetNode , {
attributes : true ,
attributeFilter : [ attributeName ]
} ) ;
}
2021-12-23 08:43:19 +01:00
function matchDomain ( domains , hostname = window . location . hostname ) {
2021-08-17 18:37:06 +02:00
let matched _domain = false ;
2021-04-10 08:46:50 +02:00
if ( typeof domains === 'string' )
domains = [ domains ] ;
domains . some ( domain => ( hostname === domain || hostname . endsWith ( '.' + domain ) ) && ( matched _domain = domain ) ) ;
return matched _domain ;
2020-03-27 21:13:28 +01:00
}
2023-03-18 10:09:53 +01:00
function urlHost ( url ) {
if ( /^http/ . test ( url ) ) {
try {
return new URL ( url ) . hostname ;
} catch ( e ) {
console . log ( ` url not valid: ${ url } error: ${ e } ` ) ;
}
}
return url ;
}
function matchUrlDomain ( domains , url ) {
return matchDomain ( domains , urlHost ( url ) ) ;
}
2023-09-30 13:08:32 +02:00
function header _nofix ( header , msg = 'BPC > no fix' ) {
2023-11-06 19:48:18 +01:00
if ( header && ! document . querySelector ( 'div#bpc_nofix' ) ) {
2023-07-30 10:02:19 +02:00
let nofix _div = document . createElement ( 'div' ) ;
2023-11-06 19:48:18 +01:00
nofix _div . id = 'bpc_nofix' ;
nofix _div . style = 'margin: 20px; font-size: 20px; font-weight: bold; color: red;' ;
2023-09-30 13:08:32 +02:00
nofix _div . innerText = msg ;
header . before ( nofix _div ) ;
2023-07-30 10:02:19 +02:00
}
}
2023-10-31 17:55:19 +01:00
function blockJsReferrer ( ) {
if ( document . head && ! document . querySelector ( 'head > meta[name="referrer"][content="no-referrer"]' ) ) {
var meta = document . createElement ( 'meta' ) ;
meta . name = "referrer" ;
meta . content = "no-referrer" ;
document . head . appendChild ( meta ) ;
}
}
2023-12-06 19:19:00 +01:00
function clearPaywall ( paywall , paywall _action ) {
if ( paywall ) {
if ( ! paywall _action )
removeDOMElement ( ... paywall ) ;
else {
for ( let elem of paywall ) {
if ( paywall _action . rm _class )
elem . classList . remove ( paywall _action . rm _class ) ;
else if ( paywall _action . rm _attrib )
elem . removeAttribute ( paywall _action . rm _attrib ) ;
}
}
}
}
2024-01-15 18:46:33 +01:00
function getGoogleWebcache ( url , paywall _sel , paywall _action = '' , selector , selector _source = selector ) {
2023-12-09 17:47:04 +01:00
let url _cache = 'https://webcache.googleusercontent.com/search?q=cache:' + url . split ( /[#\?]/ ) [ 0 ] ;
2023-12-06 19:19:00 +01:00
let paywall = document . querySelectorAll ( paywall _sel ) ;
2024-03-21 12:04:35 +01:00
if ( paywall . length && dompurify _loaded ) {
2023-12-06 19:19:00 +01:00
clearPaywall ( paywall , paywall _action ) ;
csDoneOnce = true ;
2024-01-02 08:58:14 +01:00
replaceDomElementExt ( url _cache , true , false , selector , '' , selector _source ) ;
2023-12-06 19:19:00 +01:00
}
}
2024-01-15 18:46:33 +01:00
function getArchive ( url , paywall _sel , paywall _action = '' , selector , text _fail = '' , selector _source = selector , selector _archive = selector ) {
2023-12-09 17:47:04 +01:00
let url _archive = 'https://' + archiveRandomDomain ( ) + '/' + url . split ( /[#\?]/ ) [ 0 ] ;
2024-01-14 11:37:30 +01:00
let paywall = document . querySelectorAll ( paywall _sel ) ;
2024-03-21 12:04:35 +01:00
if ( paywall . length && dompurify _loaded ) {
2024-01-14 11:37:30 +01:00
clearPaywall ( paywall , paywall _action ) ;
csDoneOnce = true ;
replaceDomElementExt ( url _archive , true , false , selector , text _fail , selector _source , selector _archive ) ;
}
2023-12-09 17:47:04 +01:00
}
function replaceDomElementExt ( url , proxy , base64 , selector , text _fail = '' , selector _source = selector , selector _archive = selector ) {
2024-01-02 08:58:14 +01:00
let article = document . querySelector ( selector ) ;
if ( ! article )
return ;
2022-04-09 17:07:30 +02:00
if ( proxy ) {
if ( ! text _fail ) {
2023-12-06 19:19:00 +01:00
if ( url . startsWith ( 'https://webcache.googleusercontent.com' ) )
text _fail = 'BPC > failed to load from Google webcache:\r\n' ;
else if ( url . startsWith ( 'https://archive.' ) )
text _fail = 'BPC > Try for full article text (no need to report issue for external site):\r\n' ;
2022-04-09 17:07:30 +02:00
}
2023-12-09 17:47:04 +01:00
ext _api . runtime . sendMessage ( { request : 'getExtSrc' , data : { url : url , selector : selector , selector _source : selector _source , selector _archive : selector _archive , base64 : base64 , text _fail : text _fail } } ) ;
2022-04-09 17:07:30 +02:00
} else {
2023-04-20 20:56:23 +02:00
let options = { } ;
if ( matchUrlDomain ( 'espn.com' , url ) )
options . headers = {
'X-Forwarded-For' : randomIP ( 185 , 185 )
} ;
fetch ( url , options )
2022-04-09 17:07:30 +02:00
. then ( response => {
let article = document . querySelector ( selector ) ;
if ( response . ok ) {
response . text ( ) . then ( html => {
2023-12-14 09:36:46 +01:00
replaceDomElementExtSrc ( url , '' , html , false , base64 , selector , text _fail , selector _source ) ;
2022-04-09 17:07:30 +02:00
} ) ;
} else {
2023-05-30 19:27:56 +02:00
replaceTextFail ( url , article , proxy , text _fail ) ;
2021-12-24 08:32:45 +01:00
}
2022-04-09 17:07:30 +02:00
} ) . catch ( function ( err ) {
false ;
} ) ;
}
}
2023-12-30 11:28:14 +01:00
function getSelectorLevel ( selector ) {
if ( selector . replace ( /,\s+/g , ',' ) . match ( /[>\s]+/ ) )
selector = selector . replace ( /,\s+/g , ',' ) . split ( ',' ) . map ( x => x . match ( /[>\s]+/ ) ? x + ', ' + x . split ( /[>\s]+/ ) . pop ( ) : x ) . join ( ', ' ) ;
return selector ;
}
2023-12-09 17:47:04 +01:00
function replaceDomElementExtSrc ( url , url _src , html , proxy , base64 , selector , text _fail = '' , selector _source = selector , selector _archive = selector ) {
2022-04-09 17:07:30 +02:00
let article = document . querySelector ( selector ) ;
2024-03-26 17:31:50 +01:00
let no _content _msg = ' | no article content found! | :' ;
2022-04-09 17:07:30 +02:00
if ( html ) {
2024-01-02 08:58:14 +01:00
if ( ! proxy && base64 ) {
2022-04-09 17:07:30 +02:00
html = decode _utf8 ( atob ( html ) ) ;
selector _source = 'body' ;
}
let parser = new DOMParser ( ) ;
window . setTimeout ( function ( ) {
2023-12-09 17:47:04 +01:00
if ( url . startsWith ( 'https://archive.' ) && url _src ) {
let domain _archive = url . match ( /^https:\/\/(archive\.\w{2})/ ) [ 1 ] ;
let pathname = new URL ( url _src ) . pathname ;
html = html . replace ( new RegExp ( 'https:\\/\\/' + domain _archive . replace ( '.' , '\\.' ) + '\\/o\\/\\w+\\/' , 'g' ) , '' ) . replace ( new RegExp ( "(src=\"|background-image:url\\(')" + pathname . replace ( '/' , '\\/' ) , 'g' ) , "$1" + 'https://' + domain _archive + pathname ) ;
}
let doc = parser . parseFromString ( DOMPurify . sanitize ( html , dompurify _options ) , 'text/html' ) ;
//console.log(DOMPurify.removed);
2023-12-30 11:28:14 +01:00
let article _new = doc . querySelector ( getSelectorLevel ( selector _source ) ) ;
2023-12-09 17:47:04 +01:00
if ( article _new ) {
if ( article && article . parentNode ) {
if ( url . startsWith ( 'https://archive.' ) ) {
2024-01-17 17:45:06 +01:00
let arch _dom = ( selector _archive !== selector ) ? ( article _new . querySelector ( selector _archive ) || document . querySelector ( selector _archive ) ) : article _new ;
2023-12-09 17:47:04 +01:00
if ( arch _dom ) {
2024-01-28 10:55:09 +01:00
if ( arch _dom . firstChild )
arch _dom = arch _dom . firstChild ;
2024-02-27 18:10:17 +01:00
let arch _div = document . createElement ( 'div' ) ;
2024-04-05 08:28:55 +02:00
//arch_div.appendChild(archiveLink_renew(window.location.href));
arch _div . appendChild ( archiveLink ( window . location . href , 'BPC > Full article text fetched from (no need to report issue for external site):\r\n' ) ) ;
2024-02-27 18:10:17 +01:00
arch _div . style = 'margin: 0px 0px 50px;' ;
arch _dom . before ( arch _div ) ;
2023-12-09 17:47:04 +01:00
}
2024-01-02 16:59:00 +01:00
let targets = article _new . querySelectorAll ( 'a[target="_blank"][href^="' + window . location . origin + '"]' ) ;
2023-12-30 11:28:14 +01:00
for ( let elem of targets )
elem . removeAttribute ( 'target' ) ;
let invalid _links = article _new . querySelectorAll ( 'link[rel="preload"]:not([href]' ) ;
removeDOMElement ( ... invalid _links ) ;
2023-12-09 17:47:04 +01:00
}
2023-12-30 11:28:14 +01:00
window . setTimeout ( function ( ) {
2024-01-15 18:46:33 +01:00
if ( article . parentNode ) {
article . parentNode . replaceChild ( article _new , article ) ;
if ( func _post )
func _post ( ) ;
}
2023-12-30 11:28:14 +01:00
} , 200 ) ;
2023-12-09 17:47:04 +01:00
}
} else
2024-03-26 17:31:50 +01:00
replaceTextFail ( url , article , proxy , text _fail . replace ( ':' , no _content _msg ) ) ;
2022-04-09 17:07:30 +02:00
} , 200 ) ;
} else {
2024-03-26 17:31:50 +01:00
replaceTextFail ( url , article , proxy , url _src ? text _fail . replace ( ':' , no _content _msg ) : text _fail ) ;
2022-04-09 17:07:30 +02:00
}
}
function replaceTextFail ( url , article , proxy , text _fail ) {
if ( text _fail && article ) {
let text _fail _div = document . createElement ( 'div' ) ;
text _fail _div . setAttribute ( 'style' , 'margin: 0px 50px; font-weight: bold; color: red;' ) ;
text _fail _div . appendChild ( document . createTextNode ( text _fail ) ) ;
if ( proxy ) {
2023-12-09 17:47:04 +01:00
if ( url . startsWith ( 'https://archive.' ) ) {
2024-03-26 17:31:50 +01:00
text _fail _div = archiveLink ( url . replace ( /^https:\/\/archive\.\w{2}\// , '' ) , text _fail ) ;
2023-12-09 17:47:04 +01:00
} else {
let a _link = document . createElement ( 'a' ) ;
a _link . innerText = url ;
a _link . href = url ;
a _link . target = '_blank' ;
text _fail _div . appendChild ( a _link ) ;
}
2021-04-10 08:46:50 +02:00
}
2024-01-18 18:53:00 +01:00
if ( article . firstChild )
article . firstChild . before ( text _fail _div ) ;
else
article . appendChild ( text _fail _div ) ;
2022-04-09 17:07:30 +02:00
}
2021-01-11 21:00:41 +01:00
}
2024-02-22 16:40:34 +01:00
function amp _images _replace ( ) {
window . setTimeout ( function ( ) {
let amp _images = document . querySelectorAll ( 'figure amp-img[src^="http"]' ) ;
for ( let amp _image of amp _images ) {
let elem = document . createElement ( 'img' ) ;
elem . src = amp _image . getAttribute ( 'src' ) ;
elem . alt = amp _image . getAttribute ( 'alt' ) ;
elem . style = 'width: 100%;' ;
amp _image . parentNode . replaceChild ( elem , amp _image ) ;
}
} , 1000 ) ;
}
2022-12-16 12:31:29 +01:00
function amp _iframes _replace ( weblink = false , source = '' ) {
2024-01-29 12:41:35 +01:00
let amp _iframes = document . querySelectorAll ( 'amp-iframe' + ( source ? '[src*="' + source + '"]' : '' ) ) ;
2022-12-16 12:31:29 +01:00
let par , elem ;
for ( let amp _iframe of amp _iframes ) {
if ( ! weblink ) {
2024-01-29 12:41:35 +01:00
if ( amp _iframe . offsetHeight > 10 ) {
elem = document . createElement ( 'iframe' ) ;
elem . src = amp _iframe . getAttribute ( 'src' ) ,
elem . style = 'height: ' + amp _iframe . offsetHeight + 'px; width: 100%; border: 0px;' ;
if ( amp _iframe . getAttribute ( 'sandbox' ) )
elem . sandbox = amp _iframe . getAttribute ( 'sandbox' ) ;
amp _iframe . parentNode . replaceChild ( elem , amp _iframe ) ;
}
2022-12-16 12:31:29 +01:00
} else {
par = document . createElement ( 'p' ) ;
2023-11-16 17:27:17 +01:00
par . style = 'margin: 20px 0px;' ;
2022-12-16 12:31:29 +01:00
elem = document . createElement ( 'a' ) ;
elem . innerText = 'Media-link' ;
elem . setAttribute ( 'href' , amp _iframe . getAttribute ( 'src' ) ) ;
elem . setAttribute ( 'target' , '_blank' ) ;
par . appendChild ( elem ) ;
amp _iframe . parentNode . replaceChild ( par , amp _iframe ) ;
}
}
}
2023-09-30 13:08:32 +02:00
function amp _redirect _not _loop ( amphtml ) {
let amp _redirect _date = Number ( sessionStorage . getItem ( '###_amp_redirect' ) ) ;
if ( ! ( amp _redirect _date && Date . now ( ) - amp _redirect _date < 2000 ) ) {
sessionStorage . setItem ( '###_amp_redirect' , Date . now ( ) ) ;
window . location . href = amphtml . href ;
} else {
let header = ( document . body && document . body . firstChild ) || document . documentElement ;
header _nofix ( header , 'BPC > redirect to amp failed (disable amp-to-html extension/add-on or browser setting)' ) ;
}
}
function amp _redirect ( paywall _sel , paywall _action = '' , amp _url = '' ) {
2023-12-09 17:47:04 +01:00
let paywall = document . querySelectorAll ( paywall _sel ) ;
2023-09-30 13:08:32 +02:00
let amphtml = document . querySelector ( 'head > link[rel="amphtml"]' ) ;
if ( ! amphtml && amp _url )
amphtml = { href : amp _url } ;
2023-12-09 17:47:04 +01:00
if ( paywall . length && amphtml ) {
2023-12-06 19:19:00 +01:00
clearPaywall ( paywall , paywall _action ) ;
2023-09-30 13:08:32 +02:00
amp _redirect _not _loop ( amphtml ) ;
}
}
2024-03-12 18:22:08 +01:00
function amp _unhide _subscr _section ( amp _ads _sel = 'amp-ad' , replace _iframes = true , amp _iframe _link = false , source = '' ) {
2023-02-23 12:46:03 +01:00
let preview = document . querySelectorAll ( '[subscriptions-section="content-not-granted"]' ) ;
removeDOMElement ( ... preview ) ;
2022-12-16 12:31:29 +01:00
let subscr _section = document . querySelectorAll ( '[subscriptions-section="content"]' ) ;
for ( let elem of subscr _section )
elem . removeAttribute ( 'subscriptions-section' ) ;
2024-04-07 10:31:08 +02:00
hideDOMStyle ( amp _ads _sel , 5 ) ;
2022-12-16 12:31:29 +01:00
if ( replace _iframes )
amp _iframes _replace ( amp _iframe _link , source ) ;
}
2024-03-12 18:22:08 +01:00
function amp _unhide _access _hide ( amp _access = '' , amp _access _not = '' , amp _ads _sel = 'amp-ad' , replace _iframes = true , amp _iframe _link = false , source = '' ) {
2023-04-13 19:00:16 +02:00
let access _hide = document . querySelectorAll ( '[amp-access' + amp _access + '][amp-access-hide]:not([amp-access="error"], [amp-access^="message"], .piano)' ) ;
2022-12-16 12:31:29 +01:00
for ( let elem of access _hide )
elem . removeAttribute ( 'amp-access-hide' ) ;
if ( amp _access _not ) {
let amp _access _not _dom = document . querySelectorAll ( '[amp-access' + amp _access _not + ']' ) ;
removeDOMElement ( ... amp _access _not _dom ) ;
}
2024-04-07 10:31:08 +02:00
hideDOMStyle ( amp _ads _sel , 6 ) ;
2022-12-16 12:31:29 +01:00
if ( replace _iframes )
amp _iframes _replace ( amp _iframe _link , source ) ;
}
2022-08-26 19:50:25 +02:00
function ampToHtml ( ) {
window . setTimeout ( function ( ) {
2024-01-26 13:25:09 +01:00
let canonical = document . querySelector ( 'head > link[rel="canonical"][href]' ) ;
if ( canonical )
window . location . href = canonical . href ;
2022-11-14 17:10:40 +01:00
} , 1000 ) ;
2022-08-26 19:50:25 +02:00
}
2023-01-11 19:36:19 +01:00
function refreshCurrentTab ( ) {
2023-08-31 06:51:24 +02:00
window . setTimeout ( function ( ) {
window . location . reload ( true ) ;
} , 500 ) ;
}
function refreshCurrentTab _bg ( ) {
2023-01-11 19:36:19 +01:00
ext _api . runtime . sendMessage ( { request : 'refreshCurrentTab' } ) ;
}
2023-12-06 19:19:00 +01:00
function archiveRandomDomain ( ) {
let tld _array = [ 'fo' , 'is' , 'li' , 'md' , 'ph' , 'vn' ] ;
let tld = tld _array [ randomInt ( 6 ) ] ;
return 'archive.' + tld ;
}
2023-10-24 08:08:45 +02:00
function archiveLink ( url , text _fail = 'BPC > Try for full article text (no need to report issue for external site):\r\n' ) {
2023-12-06 19:19:00 +01:00
return externalLink ( [ 'archive.today' , archiveRandomDomain ( ) ] , 'https://{domain}?run=1&url={url}' , url , text _fail ) ;
}
function archiveLink _renew ( url , text _fail = 'BPC > Only use to renew if text is incomplete or updated:\r\n' ) {
return externalLink ( [ archiveRandomDomain ( ) ] , 'https://{domain}?renew=1&url={url}' , url , text _fail ) ;
2022-12-02 13:36:27 +01:00
}
2023-07-14 11:10:22 +02:00
function googleWebcacheLink ( url , text _fail = 'BPC > Try for full article text:\r\n' ) {
2023-09-23 10:58:31 +02:00
if ( ! matchUrlDomain ( [ 'hbrchina.org' ] , url ) )
url = url . split ( '?' ) [ 0 ] ;
2022-12-02 13:36:27 +01:00
return externalLink ( [ 'webcache.googleusercontent.com' ] , 'https://{domain}/search?q=cache:{url}' , url , text _fail ) ;
}
2024-03-05 12:40:14 +01:00
function googleSearchToolLink ( url , text _fail = 'BPC > Full article text (test url & copy html (tab) code to [https://codebeautify.org/htmlviewer]):\r\n' ) {
2023-08-19 07:42:37 +02:00
return externalLink ( [ 'search.google.com' ] , 'https://search.google.com/test/rich-results?url={url}' , encodeURIComponent ( url ) , text _fail ) ;
}
2023-10-30 07:48:49 +01:00
function nftLink ( url , text _fail = 'BPC > Full article text:\r\n' ) {
return externalLink ( [ '1ft.io' ] , 'https://{domain}/{url}' , url , text _fail ) ;
2022-12-02 13:36:27 +01:00
}
2023-10-22 15:37:11 +02:00
function freediumLink ( url , text _fail = 'BPC > Try for full article text:\r\n' ) {
return externalLink ( [ 'freedium.cfd' ] , 'https://{domain}/{url}' , url , text _fail ) ;
}
2022-12-02 13:36:27 +01:00
function externalLink ( domains , ext _url _templ , url , text _fail = 'BPC > Full article text:\r\n' ) {
2021-06-29 21:13:53 +02:00
let text _fail _div = document . createElement ( 'div' ) ;
text _fail _div . id = 'bpc_archive' ;
2023-10-04 09:04:32 +02:00
text _fail _div . setAttribute ( 'style' , 'margin: 20px; font-size: 20px; font-weight: bold; color: red;' ) ;
2023-05-03 17:38:21 +02:00
let parser = new DOMParser ( ) ;
2024-01-02 08:58:14 +01:00
text _fail = text _fail . replace ( /\[(?<url>[^\]]+)\]/g , function ( match , url ) {
return "<a href='" + url + "' target='_blank' style='color: red'>" + new URL ( url ) . hostname + "</a>" ;
} ) ;
2023-05-03 17:38:21 +02:00
let doc = parser . parseFromString ( '<span>' + text _fail + '</span>' , 'text/html' ) ;
let elem = doc . querySelector ( 'span' ) ;
text _fail _div . appendChild ( elem ) ;
2022-12-02 13:36:27 +01:00
for ( let domain of domains ) {
let ext _url = ext _url _templ . replace ( '{domain}' , domain ) . replace ( '{url}' , url . split ( '?' ) [ 0 ] ) ;
let a _link = document . createElement ( 'a' ) ;
a _link . innerText = domain ;
a _link . href = ext _url ;
a _link . target = '_blank' ;
text _fail _div . appendChild ( document . createTextNode ( ' | ' ) ) ;
text _fail _div . appendChild ( a _link ) ;
2022-02-08 19:41:59 +01:00
}
2021-06-29 21:13:53 +02:00
return text _fail _div ;
}
2019-11-23 05:53:56 +01:00
function removeClassesByPrefix ( el , prefix ) {
2021-04-10 08:46:50 +02:00
let el _classes = el . classList ;
for ( let el _class of el _classes ) {
if ( el _class . startsWith ( prefix ) )
el _classes . remove ( el _class ) ;
}
2019-11-21 03:19:36 +01:00
}
2019-11-11 01:37:41 +01:00
2022-10-26 08:48:51 +02:00
function removeClassesList ( list ) {
for ( let class _item of list ) {
let elems = document . querySelectorAll ( '.' + class _item ) ;
for ( let elem of elems )
elem . classList . remove ( class _item ) ;
}
}
2020-06-08 16:44:46 +02:00
function cookieExists ( name ) {
2021-04-10 08:46:50 +02:00
return document . cookie . split ( ';' ) . some ( function ( item ) {
return item . trim ( ) . indexOf ( name + '=' ) === 0
} )
2020-06-08 16:44:46 +02:00
}
function setCookie ( name , value , domain , path , days ) {
2021-08-17 18:37:06 +02:00
let max _age = days * 24 * 60 * 60 ;
2021-04-10 08:46:50 +02:00
document . cookie = name + "=" + ( value || "" ) + "; domain=" + domain + "; path=" + path + "; max-age=" + max _age ;
2020-06-08 16:44:46 +02:00
}
2020-09-12 15:40:50 +02:00
function insert _script ( func , insertAfterDom ) {
2021-04-10 08:46:50 +02:00
let bpc _script = document . querySelector ( 'script#bpc_script' ) ;
if ( ! bpc _script ) {
let script = document . createElement ( 'script' ) ;
script . setAttribute ( 'id' , 'bpc_script' ) ;
script . appendChild ( document . createTextNode ( '(' + func + ')();' ) ) ;
let insertAfter = insertAfterDom ? insertAfterDom : ( document . body || document . head || document . documentElement ) ;
insertAfter . appendChild ( script ) ;
}
2020-07-15 18:45:37 +02:00
}
2022-12-16 12:31:29 +01:00
function getArticleJsonScript ( ) {
let scripts = document . querySelectorAll ( 'script[type="application/ld+json"]' ) ;
let json _script ;
for ( let script of scripts ) {
2023-01-02 12:04:51 +01:00
if ( script . innerText . match ( /"(articlebody|text)":/i ) ) {
2022-12-16 12:31:29 +01:00
json _script = script ;
break ;
}
}
return json _script ;
}
2024-03-21 20:32:49 +01:00
function getArticleQuintype ( ) {
let article _new ;
let json _script = document . querySelector ( 'script#static-page' ) ;
if ( json _script ) {
try {
article _new = document . createElement ( 'div' ) ;
let parser = new DOMParser ( ) ;
let json = JSON . parse ( json _script . text ) ;
let pars = json . qt . data . story . cards ;
for ( let par of pars ) {
let story _elements = par [ 'story-elements' ] ;
for ( let elem of story _elements ) {
let par _elem ;
2024-03-23 11:57:15 +01:00
if ( [ 'text' , 'title' ] . includes ( elem . type ) && elem . text ) {
2024-03-21 20:32:49 +01:00
let doc = parser . parseFromString ( '<div style="margin: 25px 0px">' + DOMPurify . sanitize ( elem . text , dompurify _options ) + '</div>' , 'text/html' ) ;
par _elem = doc . querySelector ( 'div' ) ;
} else if ( elem . type === 'image' ) {
if ( elem [ 'image-s3-key' ] ) {
par _elem = document . createElement ( 'figure' ) ;
let img = document . createElement ( 'img' ) ;
img . src = 'https://media.assettype.com/' + elem [ 'image-s3-key' ] ;
par _elem . appendChild ( img ) ;
if ( elem . title ) {
let caption = document . createElement ( 'figcaption' ) ;
2024-03-23 11:57:15 +01:00
if ( elem . title . includes ( '</' ) ) {
let doc = parser . parseFromString ( '<div>' + DOMPurify . sanitize ( elem . title , dompurify _options ) + '</div>' , 'text/html' ) ;
caption . appendChild ( doc . querySelector ( 'div' ) ) ;
} else
caption . innerText = elem . title ;
2024-03-21 20:32:49 +01:00
par _elem . appendChild ( caption ) ;
}
}
} else if ( elem . type === 'jsembed' ) {
if ( elem . subtype === 'tweet' ) {
if ( elem . metadata && elem . metadata [ 'tweet-url' ] ) {
par _elem = document . createElement ( 'a' ) ;
par _elem . href = par _elem . innerText = elem . metadata [ 'tweet-url' ] ;
par _elem . target = '_blank' ;
} else
console . log ( elem ) ;
}
} else if ( elem . type === 'youtube-video' ) {
if ( elem [ 'embed-url' ] ) {
par _elem = document . createElement ( 'iframe' ) ;
par _elem . src = elem [ 'embed-url' ] ;
par _elem . style = 'width: 100%; height: 400px;' ;
}
} else if ( ! [ 'widget' ] . includes ( elem . type ) )
console . log ( elem ) ;
if ( par _elem )
article _new . appendChild ( par _elem ) ;
}
}
if ( ! article _new . hasChildNodes ( ) )
article _new = '' ;
} catch ( err ) {
console . log ( err ) ;
}
}
return article _new ;
}
2023-05-07 13:13:41 +02:00
function findKeyJson ( json , keys , min _val _len = 0 ) {
2023-07-24 18:33:33 +02:00
let source = '' ;
2023-05-07 13:13:41 +02:00
if ( Array . isArray ( json ) ) {
for ( let elem of json )
source = source || findKeyJson ( json [ elem ] , keys , min _val _len ) ;
} else if ( typeof json === 'object' ) {
for ( let elem in json ) {
let json _elem = json [ elem ] ;
if ( typeof json _elem === 'string' && keys . includes ( elem ) ) {
if ( json _elem . length > min _val _len )
return json _elem ;
} else
source = source || findKeyJson ( json _elem , keys , min _val _len ) ;
}
}
return source ;
}
2023-12-20 09:06:44 +01:00
function getJsonUrlText ( article , callback , article _id = '' ) {
2023-10-20 15:01:54 +02:00
let json _url _dom = document . querySelector ( 'head > link[rel="alternate"][type="application/json"][href]' ) ;
2024-03-02 12:07:22 +01:00
let json _url ;
if ( json _url _dom )
json _url = json _url _dom . href ;
2023-12-20 09:06:44 +01:00
if ( ! json _url && article _id )
2024-01-02 16:59:00 +01:00
json _url = window . location . origin + '/wp-json/wp/v2/posts/' + article _id ;
2023-12-20 09:06:44 +01:00
if ( json _url ) {
fetch ( json _url )
. then ( response => {
if ( response . ok ) {
response . json ( ) . then ( json => {
try {
let json _text = parseHtmlEntities ( json . content . rendered ) ;
callback ( json _text , article ) ;
} catch ( err ) {
console . log ( err ) ;
}
} ) ;
}
} ) ;
}
2023-10-20 15:01:54 +02:00
}
function getJsonUrlAdd ( json _text , article , art _options = { } ) {
let art _type = 'div' ;
let art _attrib = '' ;
if ( Object . keys ( art _options ) . length ) {
if ( art _options . art _type )
art _type = art _options . art _type ;
if ( art _options . art _class )
art _attrib += ' class="' + art _options . art _class + '"' ;
2023-11-03 07:58:21 +01:00
if ( art _options . art _id )
art _attrib += ' id="' + art _options . art _id + '"' ;
2023-10-20 15:01:54 +02:00
if ( art _options . art _style )
art _attrib += ' style="' + art _options . art _style + '"' ;
if ( art _options . func _text )
json _text = art _options . func _text ( json _text ) ;
}
let parser = new DOMParser ( ) ;
2023-12-06 19:19:00 +01:00
let doc = parser . parseFromString ( '<' + art _type + art _attrib + '>' + DOMPurify . sanitize ( json _text , dompurify _options ) + '</' + art _type + '>' , 'text/html' ) ;
2023-10-20 15:01:54 +02:00
let article _new = doc . querySelector ( art _type ) ;
if ( art _options . art _append || ! article . parentNode ) {
if ( ! art _options . art _hold )
article . innerHTML = '' ;
article . appendChild ( article _new ) ;
} else
article . parentNode . replaceChild ( article _new , article ) ;
}
2023-12-20 09:06:44 +01:00
function getJsonUrl ( paywall _sel , paywall _action = '' , article _sel , art _options = { } , article _id = '' ) {
2023-10-20 15:01:54 +02:00
let paywall = document . querySelectorAll ( paywall _sel ) ;
let article = document . querySelector ( article _sel ) ;
if ( paywall . length && article && dompurify _loaded ) {
2023-12-06 19:19:00 +01:00
clearPaywall ( paywall , paywall _action ) ;
2023-10-20 15:01:54 +02:00
getJsonUrlText ( article , ( json _text , article ) => {
if ( json _text && article )
getJsonUrlAdd ( json _text , article , art _options ) ;
2023-12-20 09:06:44 +01:00
} , article _id ) ;
2023-10-20 15:01:54 +02:00
}
}
2020-05-29 15:34:02 +02:00
function genHexString ( len ) {
2021-04-10 08:46:50 +02:00
let output = '' ;
for ( let i = 0 ; i < len ; i ++ )
output += ( Math . floor ( Math . random ( ) * 16 ) ) . toString ( 16 ) ;
return output ;
2020-05-29 15:34:02 +02:00
}
2020-10-04 19:08:36 +02:00
function makeRandomNumber ( len ) {
2021-04-10 08:46:50 +02:00
let result = '' ;
2021-08-17 18:37:06 +02:00
let characters = '123456789' ;
let charactersLength = characters . length ;
for ( let i = 0 ; i < len ; i ++ )
2021-04-10 08:46:50 +02:00
result += characters . charAt ( Math . floor ( Math . random ( ) * charactersLength ) ) ;
return result ;
2020-10-04 19:08:36 +02:00
}
2023-04-20 20:56:23 +02:00
function randomInt ( max ) {
return Math . floor ( Math . random ( ) * Math . floor ( max ) ) ;
}
function randomIP ( range _low = 0 , range _high = 223 ) {
let rndmIP = [ ] ;
for ( let n = 0 ; n < 4 ; n ++ ) {
if ( n === 0 )
rndmIP . push ( range _low + randomInt ( range _high - range _low + 1 ) ) ;
else
rndmIP . push ( randomInt ( 255 ) + 1 ) ;
}
return rndmIP . join ( '.' ) ;
}
2020-01-28 23:06:25 +01:00
function pageContains ( selector , text ) {
2021-04-10 08:46:50 +02:00
let elements = document . querySelectorAll ( selector ) ;
return Array . prototype . filter . call ( elements , function ( element ) {
return RegExp ( text ) . test ( element . textContent ) ;
} ) ;
2020-01-28 23:06:25 +01:00
}
2020-07-04 13:33:25 +02:00
2023-11-27 18:26:40 +01:00
function findOverlap ( a , b ) {
if ( b . length === 0 )
return "" ;
if ( a . endsWith ( b ) )
return b ;
return findOverlap ( a , b . substring ( 0 , b . length - 1 ) ) ;
}
2023-12-03 11:44:13 +01:00
function breakText ( str , headers = false ) {
2024-03-21 20:32:49 +01:00
str = str . replace ( /(?:^|[A-Za-z\"\“\)])(\.+|\?|!)(?=[A-ZÖÜ\„\d][A-Za-zÀ-ÿ\„\d]{1,})/gm , "$&\n\n" ) ;
2023-12-03 11:44:13 +01:00
if ( headers )
str = str . replace ( /(([a-z]{2,}|[\"\“]))(?=[A-Z](?=[A-Za-zÀ-ÿ]+))/gm , "$&\n\n" ) ;
2023-11-12 08:46:17 +01:00
return str ;
}
2023-12-03 11:44:13 +01:00
function breakText _headers ( str ) {
str = breakText ( str , true ) ;
2021-12-07 19:25:48 +01:00
// exceptions: names with alternating lower/uppercase (no general fix)
2023-12-03 11:44:13 +01:00
let str _rep _arr = [ 'AstraZeneca' , 'BaFin' , 'BerlHG' , 'BfArM' , 'BilMoG' , 'BioNTech' , 'ChatGPT' , 'DiGA' , 'EuGH' , 'FinTechRat' , 'GlaxoSmithKline' , 'IfSG' , 'medRxiv' , 'mmHg' , 'OpenAI' , 'PlosOne' , 'StVO' , 'TikTok' ] ;
2023-11-12 08:46:17 +01:00
let str _rep _split ;
let str _rep _src ;
2021-12-07 19:25:48 +01:00
for ( let str _rep of str _rep _arr ) {
str _rep _split = str _rep . split ( /([a-z]+)(?=[A-Z](?=[A-Za-z]+))/ ) ;
str _rep _src = str _rep _split . reduce ( function ( accumulator , currentValue ) {
return accumulator + currentValue + ( ( currentValue !== currentValue . toUpperCase ( ) ) ? '\n\n' : '' ) ;
} ) ;
if ( str _rep _src . endsWith ( '\n\n' ) )
str _rep _src = str _rep _src . slice ( 0 , - 2 ) ;
str = str . replace ( new RegExp ( str _rep _src , "g" ) , str _rep ) ;
}
str = str . replace ( /De\n\n([A-Z])/g , "De$1" ) ;
str = str . replace ( /La\n\n([A-Z])/g , "La$1" ) ;
str = str . replace ( /Le\n\n([A-Z])/g , "Le$1" ) ;
str = str . replace ( /Mc\n\n([A-Z])/g , "Mc$1" ) ;
return str ;
2023-07-23 17:39:05 +02:00
}
2021-12-07 19:25:48 +01:00
2020-08-17 23:04:51 +02:00
function parseHtmlEntities ( encodedString ) {
2022-09-30 17:40:10 +02:00
let parser = new DOMParser ( ) ;
2022-10-09 20:20:19 +02:00
let doc = parser . parseFromString ( '<textarea>' + encodedString + '</textarea>' , 'text/html' ) ;
2022-09-30 17:40:10 +02:00
let dom = doc . querySelector ( 'textarea' ) ;
return dom . value ;
}
2021-02-05 19:07:38 +01:00
function encode _utf8 ( str ) {
2021-04-10 08:46:50 +02:00
return unescape ( encodeURIComponent ( str ) ) ;
2021-02-05 19:07:38 +01:00
}
function decode _utf8 ( str ) {
2021-04-10 08:46:50 +02:00
return decodeURIComponent ( escape ( str ) ) ;
2021-02-05 19:07:38 +01:00
}