diff --git a/.gitignore b/.gitignore index a482319..2359a6d 100644 --- a/.gitignore +++ b/.gitignore @@ -166,6 +166,11 @@ UpgradeLog*.htm App_Data/*.mdf App_Data/*.ldf +################# +## Other ide stuff +################# +.idea/* + ############# ## Windows detritus ############# @@ -219,3 +224,4 @@ pip-log.txt ## RSS-Bridge ############## /cache +/whitelist.txt diff --git a/README.md b/README.md index e922f58..173a6f6 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,31 @@ rss-bridge === -rss-bridge is a php script capable of generating ATOM feed for specific pages which don't have one. +rss-bridge is a PHP project capable of generating ATOM feeds for websites which don't have one. -Supported sites/pages +Supported sites/pages (main) === - * `FlickrExplore` : [Latest interesting images](http://www.flickr.com/explore) from Flickr. - * `GoogleSearch` : Most recent results from Google Search. - * `Twitter` : Can return keyword/hashtag search or user timeline. - * `Identi.ca` : Identica user timeline (Should be compatible with other Pump.io instances). - * `YouTube` : YouTube user channel feed. - * `Cryptome` : Returns the most recent documents from Cryptome.org. + * `FlickrExplore` : [Latest interesting images](http://www.flickr.com/explore) from Flickr + * `GoogleSearch` : Most recent results from Google Search + * `GooglePlus` : Most recent posts of user timeline + * `Twitter` : Return keyword/hashtag search or user timeline + * `Identi.ca` : Identica user timeline (Should be compatible with other Pump.io instances) + * `YouTube` : YouTube user channel, playlist or search + * `Cryptome` : Returns the most recent documents from [Cryptome.org](http://cryptome.org/) + * `DansTonChat`: Most recent quotes from [danstonchat.com](http://danstonchat.com/) + * `DuckDuckGo`: Most recent results from [DuckDuckGo.com](https://duckduckgo.com/) + * `Instagram`: Most recent photos from an Instagram user + * `OpenClassrooms`: Lastest tutorials from [fr.openclassrooms.com](http://fr.openclassrooms.com/) + * `Pinterest`: Most recent photos from user or search + * `ScmbBridge`: Newest stories from [secouchermoinsbete.fr](http://secouchermoinsbete.fr/) + * `WikipediaENLatest`: highlighted articles from Wikipedia in English + * `WikipediaFRLatest`: highlighted articles from Wikipedia in French + * `WikipediaEOLatest`: highlighted articles from Wikipedia in Esperanto + * `Bandcamp` : Returns last release from [bandcamp](https://bandcamp.com/) for a tag + * `ThePirateBay` : Returns the newest indexed torrents from [The Pirate Bay](https://thepiratebay.se/) with keywords +Plus [many other bridges](bridges/) to enable, thanks to the community Output format === @@ -37,10 +50,17 @@ Minecraft hashtag (#Minecraft) search on Twitter, in ATOM format (as displayed b Requirements === - * php 5.3 - * [PHP Simple HTML DOM Parser](http://simplehtmldom.sourceforge.net). (Put `simple_html_dom.php` in `vendor/simplehtmldom/`). - * Ssl lib activated in PHP config + * PHP 5.3 + * `openssl` extension enabled in PHP config (`php.ini`) +Enabling/Disabling bridges +=== + +By default, the script creates `whitelist.txt` and adds the main bridges (see above). `whitelist.txt` is ignored by git, you can edit it: + * to enable extra bridges (one bridge per line) + * to disable main bridges (remove the line) + +New bridges are disabled by default, so make sure to check regularly what's new and whitelist what you want ! Author === @@ -49,19 +69,40 @@ I'm sebsauvage, webmaster of [sebsauvage.net](http://sebsauvage.net), author of Patch/contributors : * Yves ASTIER ([Draeli](https://github.com/Draeli)) : PHP optimizations, fixes, dynamic brigde/format list with all stuff behind and extend cache system. Mail : contact@yves-astier.com - * [Mitsukarenai](https://github.com/Mitsukarenai) : Initial inspiration, TwitterBridge, IdenticaBridge, YoutubeBridge. + * [Mitsukarenai](https://github.com/Mitsukarenai) : Initial inspiration, collaborator * [ArthurHoaro](https://github.com/ArthurHoaro) * [BoboTiG](https://github.com/BoboTiG) + * [Astalaseven](https://github.com/Astalaseven) + * [qwertygc](https://github.com/qwertygc) + * [Djuuu](https://github.com/Djuuu) + * [Anadrark](https://github.com/Anadrark]) + * [Grummfy](https://github.com/Grummfy) + * [Polopollo](https://github.com/Polopollo) + * [16mhz](https://github.com/16mhz) + * [kranack](https://github.com/kranack) -Licence +License === -Code is public domain. +Code is [Public Domain](UNLICENSE). + +Including `PHP Simple HTML DOM Parser` under the [MIT License](http://opensource.org/licenses/MIT) Technical notes === * There is a cache so that source services won't ban you even if you hammer the rss-bridge with requests. Each bridge has a different duration for the cache. The `cache` subdirectory will be automatically created. You can purge it whenever you want. - * To implement a new rss-bridge, create a new class in `bridges` subdirectory. Look at existing bridges for examples. For items you generate in `$this->items`, only `uri` and `title` are mandatory in each item. `timestamp` and `content` are optional but recommended. Any additional key will be ignored by ATOM feed (but outputed to jSon). + * To implement a new rss-bridge, create a new class in `bridges` subdirectory. Look at existing bridges for examples and the guidelines below. For items you generate in `$this->items`, only `uri` and `title` are mandatory in each item. `timestamp` and `content` are optional but recommended. Any additional key will be ignored by ATOM feed (but outputed to json). + +### Bridge guidelines + + * metatags: `@name` {Name of service}, `@homepage` {URL to homepage}, `@description`, `@update` {YYYY-MM-DD}, `@maintainer` {Github username or nickname} + * scripts (eg. Javascript) must be stripped out. Make good use of `strip_tags()` and `preg_replace()` + * bridge must present data within 8 seconds (adjust iterators accordingly) + * cache timeout must be fine-tuned so that each refresh can provide 1 or 2 new elements on busy periods + * `