DuckDuckGoBridge.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. class DuckDuckGoBridge extends BridgeAbstract {
  3. const MAINTAINER = 'Astalaseven';
  4. const NAME = 'DuckDuckGo';
  5. const URI = 'https://duckduckgo.com/';
  6. const CACHE_TIMEOUT = 21600; // 6h
  7. const DESCRIPTION = 'Returns results from DuckDuckGo.';
  8. const SORT_DATE = '+sort:date';
  9. const SORT_RELEVANCE = '';
  10. const PARAMETERS = array( array(
  11. 'u' => array(
  12. 'name' => 'keyword',
  13. 'required' => true
  14. ),
  15. 'sort' => array(
  16. 'name' => 'sort by',
  17. 'type' => 'list',
  18. 'required' => false,
  19. 'values' => array(
  20. 'date' => self::SORT_DATE,
  21. 'relevance' => self::SORT_RELEVANCE
  22. ),
  23. 'defaultValue' => self::SORT_DATE
  24. )
  25. ));
  26. public function collectData(){
  27. $html = getSimpleHTMLDOM(self::URI . 'html/?kd=-1&q=' . $this->getInput('u') . $this->getInput('sort'))
  28. or returnServerError('Could not request DuckDuckGo.');
  29. foreach($html->find('div.results_links') as $element) {
  30. $item = array();
  31. $item['uri'] = $element->find('a', 0)->href;
  32. $item['title'] = $element->find('a', 1)->innertext;
  33. $item['content'] = $element->find('div.snippet', 0)->plaintext;
  34. $this->items[] = $item;
  35. }
  36. }
  37. }