Fix Telegraaf.nl (images)

This commit is contained in:
magnolia1234 2023-06-29 15:41:00 +02:00
parent b2c44d8200
commit a7b7eed217
2 changed files with 89 additions and 26 deletions

View file

@ -8,6 +8,7 @@ Add Zeit.de (link to archive.is)
Remove LePoint.fr (fix obsolete) Remove LePoint.fr (fix obsolete)
Fix Beobachter.ch & Handelszeitung.ch Fix Beobachter.ch & Handelszeitung.ch
Fix Foreign Policy (Insider) Fix Foreign Policy (Insider)
Fix Telegraaf.nl (images)
* v3.2.2.0 (2023-06-25) * v3.2.2.0 (2023-06-25)
Add Follow the Money (Ftm.eu) Add Follow the Money (Ftm.eu)

View file

@ -176,7 +176,6 @@ if (bg2csData.add_ext_link) {
article.firstChild.before(ext_12ftLink(url)); article.firstChild.before(ext_12ftLink(url));
break; break;
} }
} }
} }
}, 1000); }, 1000);
@ -2411,42 +2410,105 @@ else if (matchDomain('telegraaf.nl')) {
}, 500); }, 500);
} }
let paywall = document.querySelector('div.MeteringNotification__backdrop, data-hydrate[data-name="SubscriptionCard"]'); let paywall = document.querySelector('div.MeteringNotification__backdrop, data-hydrate[data-name="SubscriptionCard"]');
if (paywall) { let article_body = document.querySelector('section.TextArticlePage__imageWrapper, section > div.DetailArticleImage');
let json_script = getArticleJsonScript(); if (paywall && article_body) {
if (json_script) { 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;';
let scripts = document.querySelectorAll('script:not([src], [type])');
let apollo_script;
for (let script of scripts) {
if (script.text.includes('window.__APOLLO_STATE__=')) {
apollo_script = script;
break;
}
}
if (apollo_script) {
removeDOMElement(paywall); removeDOMElement(paywall);
try { try {
let json = JSON.parse(json_script.text); let apollo_json = JSON.parse(apollo_script.text.replace(/(^window.__APOLLO_STATE__=|;$)/g, ''));
if (json) { let start = false;
let json_text = json.articleBody; for (let key in apollo_json) {
if (json_text) { let elem = apollo_json[key];
let intro = document.querySelector('span[id^="articleIntro"], p.Article__intro > span'); if (!start) {
if (intro) if (key.includes('.introBlocks.'))
json_text = json_text.replace(intro.innerText + '\n\n', ''); start = true;
let article_body = document.querySelector('section.TextArticlePage__imageWrapper, section > div.DetailArticleImage'); } else {
if (article_body) { let typename = elem.__typename;
let div_main = document.createElement('div'); if (key.startsWith('Article:') || ['ArticleAuthorBiography'].includes(typename))
div_main.style = 'margin: 20px 0px;'; break;
let div_elem = document.createElement('div'); else {
let text_array = json_text.split('\\n'); let par = document.createElement('p');
text_array.forEach(p_text => { if (typename === 'HtmlBlock') {
let p_div = document.createElement('p'); let item = document.createElement('p');
p_div.innerText = p_text; item.innerText = elem.contentHTML.replace(/((<|\\u003c)([^>]+)(>|\\u003e))/gi, '');
p_div.style = 'font-weight: normal; font-size: 16px; line-height: 1.5;'; item.style = par_style;
div_elem.appendChild(p_div); par.appendChild(item);
}); } else if (typename === 'SubheadBlock') {
div_main.appendChild(div_elem); let item = document.createElement('p');
article_body.after(div_main); item.innerText = elem.text.replace(/((<|\\u003c)([^>]+)(>|\\u003e))/gi, '');
item.style = par_style;
par.appendChild(item);
} else if (typename === 'Image') {
let figure = document.createElement('figure');
let img = document.createElement('img');
img.src = elem.url.startsWith('https:') ? elem.url : 'https:' + elem.url;
img.width = !mobile ? 640 : 320;
figure.appendChild(img);
if (elem.description) {
let caption = document.createElement('figcaption');
caption.innerText = elem.description + (elem.copyright ? ' | ' + elem.copyright : '');
figure.appendChild(caption);
}
par.appendChild(figure);
} else if (typename === 'Article') {
let item = document.createElement('a');
item.href = elem.url.startsWith('https:') ? elem.url : 'https:' + elem.url;
item.innerText = elem.title;
par.appendChild(item);
} else if (!['ImageBlock', 'InlineRelatedArticlesBlock', 'Video', 'Webshop'].includes(typename))
console.log(elem);
if (par.childNodes) {
div_main.appendChild(par); ;
}
} }
} }
} }
} catch (err) { } catch (err) {
console.log(err); console.log(err);
} }
} else {
let json_script = getArticleJsonScript();
if (json_script) {
removeDOMElement(paywall);
try {
let json = JSON.parse(json_script.text);
if (json) {
let json_text = json.articleBody;
if (json_text) {
let intro = document.querySelector('span[id^="articleIntro"], p.Article__intro > span');
if (intro)
json_text = json_text.replace(intro.innerText + '\n\n', '');
let text_array = json_text.split('\\n');
text_array.forEach(p_text => {
let p_div = document.createElement('p');
p_div.innerText = p_text;
p_div.style = par_style;
div_elem.appendChild(p_div);
});
div_main.appendChild(div_elem);
}
}
} catch (err) {
console.log(err);
}
}
} }
article_body.after(div_main);
} }
let banners = document.querySelectorAll('.ArticleBodyBlocks__inlineArticleSpotXBanner, .WebpushOptin'); let banners = document.querySelectorAll('.ArticleBodyBlocks__inlineArticleSpotXBanner, .WebpushOptin');
removeDOMElement(paywall, ...banners); removeDOMElement(...banners);
} }
else if (matchDomain('vn.nl')) { else if (matchDomain('vn.nl')) {