37 lines
1.0 KiB
JavaScript
37 lines
1.0 KiB
JavaScript
import { Readability, isProbablyReaderable } from '@mozilla/readability';
|
|
import TurndownService from 'turndown';
|
|
|
|
const removeMarkdown = require('remove-markdown');
|
|
|
|
const turndownService = new TurndownService();
|
|
|
|
function parseReaderable(document, options) {
|
|
const clonedDoc = document.cloneNode(true);
|
|
const readable = isProbablyReaderable(clonedDoc);
|
|
|
|
const fullMarkdown = turndownService.turndown(clonedDoc.body.innerHTML);
|
|
|
|
let response = {
|
|
fullContentMarkdown: fullMarkdown,
|
|
fullContentPlain: removeMarkdown(fullMarkdown),
|
|
}
|
|
|
|
const reader = new Readability(clonedDoc, options);
|
|
const article = reader.parse();
|
|
|
|
if(article != null) {
|
|
const extractedMarkdown = turndownService.turndown(article.content);
|
|
|
|
response = {
|
|
...response,
|
|
isProbablyReaderable: readable ? 1 : 0,
|
|
extractedContentMarkdown: extractedMarkdown,
|
|
extractedContentPlain: removeMarkdown(extractedMarkdown)
|
|
};
|
|
}
|
|
|
|
return response;
|
|
}
|
|
|
|
window.parseReaderable = parseReaderable;
|
|
export { parseReaderable }; |