diff --git a/resources/rssguard.qrc b/resources/rssguard.qrc
index 132537cdd..512b2ec25 100644
--- a/resources/rssguard.qrc
+++ b/resources/rssguard.qrc
@@ -16,6 +16,7 @@
sounds/goodresult.wav
scripts/adblock/adblock-server.js
+ scripts/readability/readabilize-article.js
graphics/rssguard.ico
diff --git a/resources/scripts/readability/readabilize-article.js b/resources/scripts/readability/readabilize-article.js
new file mode 100755
index 000000000..3dbae8d8d
--- /dev/null
+++ b/resources/scripts/readability/readabilize-article.js
@@ -0,0 +1,10 @@
+var rd = require('@mozilla/readability');
+var fs = require('fs');
+var jsd = require('jsdom');
+var iconvlite = require('iconv-lite');
+var data = fs.readFileSync(0);
+var encData = iconvlite.decode(data, "utf-8");
+var doc = new jsd.JSDOM(encData);
+
+var article = new rd.Readability(doc.window.document).parse();
+console.log(article['content']);
\ No newline at end of file
diff --git a/src/librssguard/network-web/readability.cpp b/src/librssguard/network-web/readability.cpp
index b721a9b03..a16b87f76 100644
--- a/src/librssguard/network-web/readability.cpp
+++ b/src/librssguard/network-web/readability.cpp
@@ -7,9 +7,14 @@
#include "gui/messagebox.h"
#include "miscellaneous/application.h"
+#include
+
#define READABILITY_PACKAGE "@mozilla/readability"
#define READABILITY_VERSION "0.4.2"
+#define JSDOM_PACKAGE "jsdom"
+#define JSDOM_VERSION "19.0.0"
+
Readability::Readability(QObject* parent) : QObject{parent}, m_modulesInstalling(false), m_modulesInstalled(false) {
connect(qApp->nodejs(), &NodeJs::packageInstalledUpdated, this, &Readability::onPackageReady);
connect(qApp->nodejs(), &NodeJs::packageError, this, &Readability::onPackageError);
@@ -63,9 +68,13 @@ void Readability::onPackageError(const QList& pkgs, con
void Readability::makeHtmlReadable(const QString& html, const QString& base_url) {
if (!m_modulesInstalled) {
try {
- NodeJs::PackageStatus st = qApp->nodejs()->packageStatus({ QSL(READABILITY_PACKAGE), QSL(READABILITY_VERSION) });
+ NodeJs::PackageStatus stReadability = qApp->nodejs()->packageStatus({ QSL(READABILITY_PACKAGE),
+ QSL(READABILITY_VERSION) });
+ NodeJs::PackageStatus stJsdom = qApp->nodejs()->packageStatus({ QSL(READABILITY_PACKAGE),
+ QSL(READABILITY_VERSION) });
- if (st != NodeJs::PackageStatus::UpToDate) {
+ if (stReadability != NodeJs::PackageStatus::UpToDate ||
+ stJsdom != NodeJs::PackageStatus::UpToDate) {
if (!m_modulesInstalling) {
// We make sure to update modules.
m_modulesInstalling = true;
@@ -100,13 +109,20 @@ void Readability::makeHtmlReadable(const QString& html, const QString& base_url)
}
}
+ QString temp_script = QDir::toNativeSeparators(IOFactory::getSystemFolder(QStandardPaths::StandardLocation::TempLocation)) +
+ QDir::separator() +
+ QSL("readabilize-article.js");
+
+ if (!IOFactory::copyFile(QSL(":/scripts/readability/readabilize-article.js"), temp_script)) {
+ qWarningNN << LOGSEC_ADBLOCK << "Failed to copy Readability script to TEMP.";
+ }
+
QProcess* proc = new QProcess(this);
connect(proc, QOverload::of(&QProcess::finished), this, &Readability::onReadabilityFinished);
qApp->nodejs()->runScript(proc,
- QSL("c:\\Projekty\\Moje\\build-rssguard-Desktop_Qt_6_2_3_MSVC2017_64bit-Debug\\"
- "src\\rssguard\\data4\\node-packages-windows\\article-to-readable.js"),
+ temp_script,
{ base_url });
proc->write(html.toUtf8());