forked from tanner/qotnews
basically add declutter like capabilities.
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
const { JSDOM } = require("jsdom");
|
||||
const { firefox } = require("playwright");
|
||||
const { getUserAgent } = require('../../utils/user-agent');
|
||||
const { disqusThread } = require('../../utils/disqus-thread');
|
||||
|
||||
const DISQUS_EMBED = 'https://disqus.com/embed/comments/';
|
||||
|
||||
module.exports.getComments = async (url) => {
|
||||
const { userAgent, headers } = getUserAgent(url);
|
||||
|
||||
const browser = await firefox.launch({ args: [], headless: true });
|
||||
const tab = await browser.newPage({
|
||||
extraHTTPHeaders: headers,
|
||||
userAgent,
|
||||
viewport: { width: 2000, height: 10000 },
|
||||
});
|
||||
|
||||
try {
|
||||
await tab.goto(url, { timeout: 60000, waitUntil: "domcontentloaded" });
|
||||
|
||||
const response = await tab.waitForResponse(response => response.url().includes(DISQUS_EMBED));
|
||||
const text = await response.text();
|
||||
const dom = new JSDOM(text, response.url());
|
||||
const script = dom.window.document.querySelector('#disqus-threadData')
|
||||
const data = JSON.parse(script.innerHTML);
|
||||
|
||||
return disqusThread(data);
|
||||
} catch (e) {
|
||||
throw e;
|
||||
} finally {
|
||||
await tab.close();
|
||||
await browser.close();
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user