2013-08-11 15:30:41 +04:00
< ? php
/**
* Returns the 100 most recent links in results in past year , sorting by date ( most recent first ) .
* Example :
* http :// www . google . com / search ? q = sebsauvage & num = 100 & complete = 0 & tbs = qdr : y , sbd : 1
* complete = 0 & num = 100 : get 100 results
* qdr : y : in past year
* sbd : 1 : sort by date ( will only work if qdr : is specified )
*/
class GoogleSearchBridge extends BridgeAbstract {
2015-11-05 18:50:18 +03:00
2016-08-27 22:03:26 +03:00
public $maintainer = " sebsauvage " ;
public $name = " Google search " ;
public $uri = " https://www.google.com/ " ;
public $description = " Returns most recent results from Google search. " ;
2015-11-05 18:50:18 +03:00
2016-08-27 22:03:26 +03:00
public $parameters = array ( array (
'q' => array (
'name' => " keyword " ,
'required' => true
)
));
2015-11-05 18:50:18 +03:00
2016-08-25 02:24:53 +03:00
public function collectData (){
2013-08-11 15:30:41 +04:00
$html = '' ;
2016-08-28 02:25:33 +03:00
$html = $this -> getSimpleHTMLDOM ( 'https://www.google.com/search?q=' . urlencode ( $this -> getInput ( 'q' )) . '&num=100&complete=0&tbs=qdr:y,sbd:1' ) or $this -> returnServerError ( 'No results for this query.' );
2013-08-11 15:30:41 +04:00
$emIsRes = $html -> find ( 'div[id=ires]' , 0 );
if ( ! is_null ( $emIsRes ) ){
foreach ( $emIsRes -> find ( 'li[class=g]' ) as $element ) {
2016-08-22 19:55:59 +03:00
$item = array ();
2016-07-08 20:06:35 +03:00
2013-08-13 00:37:19 +04:00
// Extract direct URL from google href (eg. /url?q=...)
$t = $element -> find ( 'a[href]' , 0 ) -> href ;
2016-08-22 19:55:59 +03:00
$item [ 'uri' ] = '' . $t ;
2013-08-13 00:37:19 +04:00
parse_str ( parse_url ( $t , PHP_URL_QUERY ), $parameters );
2016-08-22 19:55:59 +03:00
if ( isset ( $parameters [ 'q' ])) { $item [ 'uri' ] = $parameters [ 'q' ]; }
$item [ 'title' ] = $element -> find ( 'h3' , 0 ) -> plaintext ;
$item [ 'content' ] = $element -> find ( 'span[class=st]' , 0 ) -> plaintext ;
2013-08-11 15:30:41 +04:00
$this -> items [] = $item ;
}
}
}
public function getName (){
2016-08-28 02:25:33 +03:00
return $this -> getInput ( 'q' ) . ' - Google search' ;
2013-08-11 15:30:41 +04:00
}
public function getCacheDuration (){
return 1800 ; // 30 minutes
}
2014-05-21 21:15:52 +04:00
}