mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2025-08-04 10:04:54 +02:00
new page entrance + new dedicated dir for bridges + some fixe, optimizations
This commit is contained in:
parent
2797336bbe
commit
50b87448c6
6 changed files with 250 additions and 90 deletions
29
bridges/flickr-explore.php
Normal file
29
bridges/flickr-explore.php
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* RssBridgeFlickrExplore
|
||||
* Returns the newest interesting images from http://www.flickr.com/explore
|
||||
*
|
||||
* @name Flickr Explore
|
||||
* @description Returns the latest interesting images from Flickr
|
||||
*/
|
||||
class RssBridgeFlickrExplore extends RssBridgeAbstractClass
|
||||
{
|
||||
protected $bridgeName = 'Flickr Explore';
|
||||
protected $bridgeURI = 'http://www.flickr.com/explore';
|
||||
protected $bridgeDescription = 'Returns the latest interesting images from Flickr';
|
||||
protected $cacheDuration = 360; // 6 hours. No need to get more.
|
||||
protected function collectData($request) {
|
||||
$html = file_get_html('http://www.flickr.com/explore') or $this->returnError(404, 'could not request Flickr.');
|
||||
$this->items = Array();
|
||||
foreach($html->find('span.photo_container') as $element) {
|
||||
$item['uri'] = 'http://flickr.com'.$element->find('a',0)->href;
|
||||
$item['thumbnailUri'] = $element->find('img',0)->getAttribute('data-defer-src');
|
||||
$item['content'] = '<a href="'.$item['uri'].'"><img src="'.$item['thumbnailUri'].'" /></a>'; // FIXME: Filter javascript ?
|
||||
$item['title'] = $element->find('a',0)->title;
|
||||
$this->items[] = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$bridge = new RssBridgeFlickrExplore();
|
||||
$bridge->process();
|
41
bridges/googlesearch.php
Normal file
41
bridges/googlesearch.php
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
/**
|
||||
* RssBridgeGoogleMostRecent
|
||||
* Search Google for most recent pages regarding a specific topic.
|
||||
* 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)
|
||||
*
|
||||
* @name Google search
|
||||
* @description Returns most recent results from Google search.
|
||||
* @use1(q="keyword search")
|
||||
*/
|
||||
|
||||
class RssBridgeGoogleSearch extends RssBridgeAbstractClass
|
||||
{
|
||||
protected $bridgeName = 'Google search';
|
||||
protected $bridgeURI = 'http://google.com';
|
||||
protected $bridgeDescription = 'Returns most recent results from Google search.';
|
||||
protected $cacheDuration = 30; // 30 minutes, otherwise you could get banned by Google, or stumblr upon their captcha.
|
||||
protected function collectData($request) {
|
||||
$html = '';
|
||||
if (isset($request['q'])) { /* keyword search mode */
|
||||
$html = file_get_html('http://www.google.com/search?q='.urlencode($request['q']).'&num=100&complete=0&tbs=qdr:y,sbd:1') or $this->returnError(404, 'no results for this query.');
|
||||
} else {
|
||||
$this->returnError(400, 'You must specify a keyword (?q=...).');
|
||||
}
|
||||
$this->items = Array();
|
||||
foreach($html->find('div[id=ires]',0)->find('li[class=g]') as $element) {
|
||||
$item['uri'] = $element->find('a[href]',0)->href;
|
||||
$item['title'] = $element->find('h3',0)->plaintext;
|
||||
$item['content'] = $element->find('span[class=st]',0)->plaintext;
|
||||
$this->items[] = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$bridge = new RssBridgeGoogleSearch();
|
||||
$bridge->process();
|
42
bridges/twitter.php
Normal file
42
bridges/twitter.php
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
/**
|
||||
* RssBridgeTwitter
|
||||
* Based on https://github.com/mitsukarenai/twitterbridge-noapi
|
||||
*
|
||||
* @name Twitter Bridge
|
||||
* @description Returns user timelines or keyword search from http://twitter.com without using their API.
|
||||
* @use1(q="keyword search")
|
||||
* @use2(u="user timeline mode")
|
||||
*/
|
||||
class RssBridgeTwitter extends RssBridgeAbstractClass
|
||||
{
|
||||
protected $bridgeName = 'Twitter Bridge';
|
||||
protected $bridgeURI = 'http://twitter.com';
|
||||
protected $bridgeDescription = 'Returns user timelines or keyword search from http://twitter.com without using their API.';
|
||||
protected $cacheDuration = 5; // 5 minutes
|
||||
protected function collectData($request) {
|
||||
$html = '';
|
||||
if (isset($request['q'])) { /* keyword search mode */
|
||||
$html = file_get_html('http://twitter.com/search/realtime?q='.urlencode($request['q']).'+include:retweets&src=typd') or $this->returnError(404, 'no results for this query.');
|
||||
} elseif (isset($request['u'])) { /* user timeline mode */
|
||||
$html = file_get_html('http://twitter.com/'.urlencode($request['u'])) or $this->returnError(404, 'requested username can\'t be found.');
|
||||
} else {
|
||||
$this->returnError(400, 'You must specify a keyword (?q=...) or a Twitter username (?u=...).');
|
||||
}
|
||||
$this->items = Array();
|
||||
foreach($html->find('div.tweet') as $tweet) {
|
||||
$item['username'] = trim(substr($tweet->find('span.username', 0)->plaintext, 1)); // extract username and sanitize
|
||||
$item['fullname'] = $tweet->getAttribute('data-name'); // extract fullname (pseudonym)
|
||||
$item['avatar'] = $tweet->find('img', 0)->src; // get avatar link
|
||||
$item['id'] = $tweet->getAttribute('data-tweet-id'); // get TweetID
|
||||
$item['uri'] = 'https://twitter.com'.$tweet->find('a.details', 0)->getAttribute('href'); // get tweet link
|
||||
$item['timestamp'] = $tweet->find('span._timestamp', 0)->getAttribute('data-time'); // extract tweet timestamp
|
||||
$item['content'] = str_replace('href="/', 'href="https://twitter.com/', strip_tags($tweet->find('p.tweet-text', 0)->innertext, '<a>')); // extract tweet text
|
||||
$item['title'] = $item['fullname'] . ' (@'.$item['username'] . ') | ' . $item['content'];
|
||||
$this->items[] = $item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$bridge = new RssBridgeTwitter();
|
||||
$bridge->process();
|
Loading…
Add table
Add a link
Reference in a new issue