Browse Source

the text result api returns special results as well (currency conversion, wikipedia result etc.)

hnh.mtf 3 years ago
parent
commit
c355792964

+ 1 - 1
api.php

@@ -17,7 +17,7 @@
     {
         case 0:
             require "engines/google/text.php";
-            $results = get_text_results($query_encoded, $page, true);
+            $results = get_text_results($query_encoded, $page);
             break;
         case 1:
             require "engines/google/image.php";

+ 27 - 9
engines/google/text.php

@@ -37,7 +37,7 @@
         $special_search = $page == 0 ? check_for_special_search($query) : 0;
         $special_ch = null;
         $url = null;
-        if ($special_search != 0 && $api == false)
+        if ($special_search != 0)
         {
             switch ($special_search)
             {
@@ -72,15 +72,15 @@
             {
                 case 1:
                     require "engines/special/currency.php";
-                    currency_results($query, curl_multi_getcontent($special_ch));
+                    array_push($results, currency_results($query, curl_multi_getcontent($special_ch)));
                     break;
                 case 2:
                     require "engines/special/definition.php";
-                    definition_results($query, curl_multi_getcontent($special_ch));
+                    array_push($results, definition_results($query, curl_multi_getcontent($special_ch)));
                     break;
                 case 3:
                     require "engines/special/wikipedia.php";
-                    wikipedia_results($query, curl_multi_getcontent($special_ch));
+                    array_push($results, wikipedia_results($query, curl_multi_getcontent($special_ch)));
                     break;
             }
         }
@@ -94,9 +94,13 @@
             if ($url == null)
                 continue;
 
-            if (!empty($results)) // filter duplicate results
-                if (end($results)["url"] == $url->textContent)
-                    continue;
+            if (!empty($results)) // filter duplicate results, ignore special result
+            {
+                if (!array_key_exists("special_response", end($results)))
+                    if (end($results)["url"] == $url->textContent)
+                        continue;
+            }
+               
 
             $url = $url->textContent;
             $url = check_for_privacy_friendly_alternative($url);
@@ -121,9 +125,22 @@
 
     function print_text_results($results) 
     {
-        global $query , $page;
-        
         echo "<div class=\"text-result-container\">";
+
+        $special = $results[0];
+        if (array_key_exists("special_response", $special))
+        {
+            $response = $special["special_response"]["response"];
+            $source = $special["special_response"]["source"];
+
+            echo "<p class=\"special-result-container\">";
+            echo $response;
+            echo "<a href=\"$source\" target=\"_blank\">$source</a>";
+            echo "</p>";
+
+            array_shift($results);
+        }
+
         foreach($results as $result)
         {
             $title = $result["title"];
@@ -139,6 +156,7 @@
             echo "<span>$description</span>";
             echo "</div>";
         }
+
         echo "</div>";
     }
 ?>

+ 8 - 4
engines/special/currency.php

@@ -21,10 +21,14 @@
 
             $conversion_result = ($currency_to_convert_response / $base_currency_response) * $amount_to_convert;
 
-            echo "<p class=\"special-result-container\">";
-            echo  "$amount_to_convert $base_currency = $conversion_result $currency_to_convert";
-            echo "<a href=\"https://moneyconvert.net/\" target=\"_blank\">moneyconvert.net</a>";
-            echo "</p>";
+            $formatted_response = "$amount_to_convert $base_currency = $conversion_result $currency_to_convert";
+            $source = "https://moneyconvert.net/";
+            return array(
+                "special_response" => array(
+                    "response" => $formatted_response,
+                    "source" => $source
+                )
+            );
         }                    
     }
 ?>

+ 7 - 5
engines/special/definition.php

@@ -14,11 +14,13 @@
             {
                 $definition = $json_response[0]["meanings"][0]["definitions"][0]["definition"];
 
-                echo "<p class=\"special-result-container\">";
-                echo "$word_to_define meaning<br/>";
-                echo "<br/>" . $definition . "<br/>";
-                echo "<a href=\"https://dictionaryapi.dev/\" target=\"_blank\">dictionaryapi.dev</a>";
-                echo "</p>";
+                $source = "https://en.wikipedia.org/wiki/$query";
+                return array(
+                    "special_response" => array(
+                        "response" => $definition,
+                        "source" => $source
+                    )
+                );
             }
         
     }

+ 7 - 8
engines/special/wikipedia.php

@@ -13,15 +13,14 @@
         if (!array_key_exists("missing", $first_page))
         {
             $description = substr($first_page["extract"], 0, 250) . "...";
-            
-            if (strpos($description, "may refer to"))
-                return;
 
-            echo "<p class=\"special-result-container\">";
-            echo "$description";
-            echo "<a href=\"https://en.wikipedia.org/wiki/$query\">wikipedia.org</a>";
-
-            echo "</p>";
+            $source = "https://en.wikipedia.org/wiki/$query";
+            return array(
+                "special_response" => array(
+                    "response" => $description,
+                    "source" => $source
+                )
+            );
         }
     }
 ?>

+ 0 - 1
static/styles.css

@@ -101,7 +101,6 @@ a:hover, .text-result-wrapper h2:hover {
 }
 
 .text-result-container,
-.special-result-container,
 #time,
 .next-page-button-wrapper {
     margin-left:10%;