/usr/share/rss-bridge/bridges/DuckDuckGoBridge.php is in rss-bridge 2017-08-03-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42  | <?php
class DuckDuckGoBridge extends BridgeAbstract {
	const MAINTAINER = 'Astalaseven';
	const NAME = 'DuckDuckGo';
	const URI = 'https://duckduckgo.com/';
	const CACHE_TIMEOUT = 21600; // 6h
	const DESCRIPTION = 'Returns results from DuckDuckGo.';
	const SORT_DATE = '+sort:date';
	const SORT_RELEVANCE = '';
	const PARAMETERS = array( array(
		'u' => array(
			'name' => 'keyword',
			'required' => true
		),
		'sort' => array(
			'name' => 'sort by',
			'type' => 'list',
			'required' => false,
			'values' => array(
				'date' => self::SORT_DATE,
				'relevance' => self::SORT_RELEVANCE
			),
			'defaultValue' => self::SORT_DATE
		)
	));
	public function collectData(){
		$html = getSimpleHTMLDOM(self::URI . 'html/?kd=-1&q=' . $this->getInput('u') . $this->getInput('sort'))
			or returnServerError('Could not request DuckDuckGo.');
		foreach($html->find('div.results_links') as $element) {
			$item = array();
			$item['uri'] = $element->find('a', 0)->href;
			$item['title'] = $element->find('a', 1)->innertext;
			$item['content'] = $element->find('div.snippet', 0)->plaintext;
			$this->items[] = $item;
		}
	}
}
 |