diff --git a/android/gradle.properties b/android/gradle.properties index 41fdacc..e2fc078 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,9 +1,9 @@ ## This file is automatically generated by QtCreator. # # This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. androidBuildToolsVersion=26.0.2 -androidCompileSdkVersion=26 +androidCompileSdkVersion=27 buildDir=.build -qt5AndroidDir=/home/camilo/Qt/5.10.1/android_armv7/src/android/java +qt5AndroidDir=/home/camilo/Qt/5.11.1/android_armv7/src/android/java diff --git a/android/gradle.properties b/android/gradle.properties~ similarity index 72% copy from android/gradle.properties copy to android/gradle.properties~ index 41fdacc..e2fc078 100644 --- a/android/gradle.properties +++ b/android/gradle.properties~ @@ -1,9 +1,9 @@ ## This file is automatically generated by QtCreator. # # This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. androidBuildToolsVersion=26.0.2 -androidCompileSdkVersion=26 +androidCompileSdkVersion=27 buildDir=.build -qt5AndroidDir=/home/camilo/Qt/5.10.1/android_armv7/src/android/java +qt5AndroidDir=/home/camilo/Qt/5.11.1/android_armv7/src/android/java diff --git a/android/local.properties b/android/local.properties index f73784e..24e25cc 100644 --- a/android/local.properties +++ b/android/local.properties @@ -1,6 +1,6 @@ ## This file is automatically generated by QtCreator. # # This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. -sdk.dir=/opt/android-sdk +sdk.dir=/home/camilo/Android/Sdk diff --git a/android/local.properties b/android/local.properties~ similarity index 85% copy from android/local.properties copy to android/local.properties~ index f73784e..24e25cc 100644 --- a/android/local.properties +++ b/android/local.properties~ @@ -1,6 +1,6 @@ ## This file is automatically generated by QtCreator. # # This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. -sdk.dir=/opt/android-sdk +sdk.dir=/home/camilo/Android/Sdk diff --git a/src/linker.cpp b/src/linker.cpp index ee43845..26fa99b 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -1,93 +1,133 @@ #include "linker.h" #include +<<<<<<< Updated upstream #include "owl.h" +======= +//#include +>>>>>>> Stashed changes Linker::Linker(QObject *parent) : QObject(parent) { } /* extract needs to extract from a url the title, the body and a preview image*/ void Linker::extract(const QString &url) { auto data = this->getUrl(url); auto titles = query(data, HtmlTag::TITLE); QStringList imgs ; for(auto img : query(data, HtmlTag::IMG, "src")) { if(imgs.contains(img) || img.isEmpty()) continue; if(url.at(url.length()-1) == "/") { if(img.startsWith("http")) imgs << img; else imgs << url+img; }else { if(img.startsWith("http")) imgs << img; else imgs << url+"/"+img; } } LINK link_data {{OWL::KEYMAP[OWL::KEY::TITLE], titles}, {OWL::KEYMAP[OWL::KEY::BODY], data}, {OWL::KEYMAP[OWL::KEY::IMAGE], imgs}}; emit previewReady(link_data); } QByteArray Linker::getUrl(const QString &url) { QUrl mURL(url); QNetworkAccessManager manager; QNetworkRequest request (mURL); QNetworkReply *reply = manager.get(request); QEventLoop loop; connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), &loop, SLOT(quit())); loop.exec(); if(reply->error()) { qDebug() << reply->error(); return QByteArray(); } if(reply->bytesAvailable()) { auto data = reply->readAll(); reply->deleteLater(); return data; } return QByteArray(); } QStringList Linker::query(const QByteArray &array, const HtmlTag &tag, const QString &attribute) { +<<<<<<< Updated upstream QStringList res; auto doc = QGumboDocument::parse(array); auto root = doc.rootNode(); +======= +// auto frame = new QWebPage(this); + +// QWebSettings::setObjectCacheCapacities(0,0,0); +// frame->settings()->setAttribute(QWebSettings::LocalContentCanAccessFileUrls,false); +// frame->settings()->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls,false); + +// connect(frame->mainFrame(), &QWebFrame::loadFinished, [qq, this](bool ok) +// { +// this->parsingWork(qq); +// }); +>>>>>>> Stashed changes auto node = root.getElementsByTagName(tag); +<<<<<<< Updated upstream for(const auto &i : node) { if(attribute.isEmpty()) res << i.innerText(); else res << i.getAttribute(attribute); } return res; +======= +// qDebug() << "Count Chars :: " << array.count(); +// frame->mainFrame()->setHtml(array); + +// doc = frame->mainFrame()->documentElement(); + +} + +void Linker::parsingWork(QString query) +{ +// qDebug() << "Start parsing content ....."; + +// QWebElementCollection linkCollection = doc.findAll(query); +// qDebug() << "Found " << linkCollection.count() << " links"; + +// foreach (QWebElement link, linkCollection) +// { +// qDebug() << "found link " << link.toPlainText(); +// } + +// qDebug() << "stop parsing content ....."; +>>>>>>> Stashed changes } diff --git a/src/linker.cpp b/src/linker.cpp.autosave similarity index 96% copy from src/linker.cpp copy to src/linker.cpp.autosave index ee43845..37dab2b 100644 --- a/src/linker.cpp +++ b/src/linker.cpp.autosave @@ -1,93 +1,97 @@ #include "linker.h" #include +<<<<<<< Updated upstream #include "owl.h" +======= +//#include +>>>>>>> Stashed changes Linker::Linker(QObject *parent) : QObject(parent) { } /* extract needs to extract from a url the title, the body and a preview image*/ void Linker::extract(const QString &url) { auto data = this->getUrl(url); auto titles = query(data, HtmlTag::TITLE); QStringList imgs ; for(auto img : query(data, HtmlTag::IMG, "src")) { if(imgs.contains(img) || img.isEmpty()) continue; if(url.at(url.length()-1) == "/") { if(img.startsWith("http")) imgs << img; else imgs << url+img; }else { if(img.startsWith("http")) imgs << img; else imgs << url+"/"+img; } } LINK link_data {{OWL::KEYMAP[OWL::KEY::TITLE], titles}, {OWL::KEYMAP[OWL::KEY::BODY], data}, {OWL::KEYMAP[OWL::KEY::IMAGE], imgs}}; emit previewReady(link_data); } QByteArray Linker::getUrl(const QString &url) { QUrl mURL(url); QNetworkAccessManager manager; QNetworkRequest request (mURL); QNetworkReply *reply = manager.get(request); QEventLoop loop; connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), &loop, SLOT(quit())); loop.exec(); if(reply->error()) { qDebug() << reply->error(); return QByteArray(); } if(reply->bytesAvailable()) { auto data = reply->readAll(); reply->deleteLater(); return data; } return QByteArray(); } QStringList Linker::query(const QByteArray &array, const HtmlTag &tag, const QString &attribute) { QStringList res; auto doc = QGumboDocument::parse(array); auto root = doc.rootNode(); auto node = root.getElementsByTagName(tag); - for(const auto &i : node) { if(attribute.isEmpty()) res << i.innerText(); else res << i.getAttribute(attribute); } return res; } + diff --git a/src/linker.h b/src/linker.h index a8957ab..823f429 100644 --- a/src/linker.h +++ b/src/linker.h @@ -1,35 +1,32 @@ #ifndef LINKER_H #define LINKER_H #include #include #include #include - #include "qgumbodocument.h" #include "qgumbonode.h" typedef QVariantMap LINK; class Linker : public QObject { Q_OBJECT public: explicit Linker(QObject *parent = nullptr); Q_INVOKABLE void extract(const QString &url); private: QByteArray getUrl(const QString &url); QStringList query(const QByteArray &array, const HtmlTag &tag, const QString &attribute = QString()); - QGumboNodes nodes; - signals: void previewReady(QVariantMap link); public slots: }; #endif // LINKER_H