[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdeplasma-addons/plasma/sreich/duckduckgo-runner] runners/duckduckgo: full duckduckgo related topic
From:       Shaun Reich <shaun.reich () kdemail ! net>
Date:       2012-02-25 19:03:47
Message-ID: 20120225190347.349D5A60A6 () git ! kde ! org
[Download RAW message or body]

Git commit 93b1d702a83af1d54f4a07c6baa6005ba4ca50ef by Shaun Reich.
Committed on 25/02/2012 at 20:03.
Pushed by sreich into branch 'plasma/sreich/duckduckgo-runner'.

full duckduckgo related topics support now

retrieves the icon, the first url for each entry, the text for each
entry..everything one could want for searching duckduckgo.com with e.g.
"futurama characters"

M  +17   -6    runners/duckduckgo/duckduckgo.cpp

http://commits.kde.org/kdeplasma-addons/93b1d702a83af1d54f4a07c6baa6005ba4ca50ef

diff --git a/runners/duckduckgo/duckduckgo.cpp b/runners/duckduckgo/duckduckgo.cpp
index 9f01f7e..e917419 100644
--- a/runners/duckduckgo/duckduckgo.cpp
+++ b/runners/duckduckgo/duckduckgo.cpp
@@ -47,8 +47,8 @@ DuckDuckGo::DuckDuckGo(QObject *parent, const QVariantList& args)
 
     qRegisterMetaType<Plasma::RunnerContext*>();
 
-    KUrl url = KUrl("http://api.duckduckgo.com/?q=define+ostensibly&format=json&pretty=1");
-    //"http://api.duckduckgo.com/?q=simpsons+characters&format=json&pretty=1";
+    KUrl url = KUrl("http://api.duckduckgo.com/?q=futurama+characters&format=json&pretty=1");
+       // "http://api.duckduckgo.com/?q=define+ostensibly&format=json&pretty=1");
 
     m_job = KIO::storedGet(url, KIO::NoReload, KIO::HideProgressInfo);
     connect(m_job, SIGNAL(result(KJob*)), this, SLOT(jobFinished(KJob*)));
@@ -126,17 +126,28 @@ void DuckDuckGo::parseJson(const QByteArray& data)
     kDebug() << "JSON PARSER ONLINE";
     QJson::Parser parser;
     const QVariantMap resultsMap = parser.parse(data).toMap();
-//    QVariantList resultList;
-    kDebug() << resultsMap.keys();
 
-    const QString& match = "define";
+    const QString& match = "duckduckgo";
 
     if (match == "define") {
         //dictionary mode
-        kDebug() << "HEADING:" << resultsMap.value("Heading");
+        kDebug() << "Heading:" << resultsMap.value("Heading");
         kDebug() << "AbstractSource:" << resultsMap.value("AbstractSource");
         kDebug() << "Abstract:" << resultsMap.value("Abstract");
         kDebug() << "AbstractURL:" << resultsMap.value("AbstractURL");
+    } else if (match == "wolfram") {
+        //wolfram mode (simple redirection, because web search providers are assholes)
+        kDebug() << "Redirect:" << resultsMap.value("Redirect");
+    } else if (match == "duckduckgo") {
+        QList<QVariant> related = resultsMap.value("RelatedTopics").toList();
+
+        foreach (const QVariant& variant, related) {
+            QVariantMap submap = variant.toMap();
+
+            kDebug() << "FirstURL:" << submap.value("FirstURL");
+            kDebug() << "Text:" << submap.value("Text");
+            kDebug() << "Icon:" << submap.value("Icon").toMap().value("URL");
+        }
     }
 }
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic