1![RSS-Bridge](static/logo_600px.png) 2=== 3[![LICENSE](https://img.shields.io/badge/license-UNLICENSE-blue.svg)](UNLICENSE) [![GitHub release](https://img.shields.io/github/release/rss-bridge/rss-bridge.svg?logo=github)](https://github.com/rss-bridge/rss-bridge/releases/latest) [![Debian Release](https://img.shields.io/badge/dynamic/json.svg?logo=debian&label=debian%20release&url=https%3A%2F%2Fsources.debian.org%2Fapi%2Fsrc%2Frss-bridge%2F&query=%24.versions%5B0%5D.version&colorB=blue)](https://tracker.debian.org/pkg/rss-bridge) [![Guix Release](https://img.shields.io/badge/guix%20release-unknown-blue.svg)](https://www.gnu.org/software/guix/packages/R/) [![Actions Status](https://img.shields.io/github/workflow/status/RSS-Bridge/rss-bridge/Tests/master?label=GitHub%20Actions&logo=github)](https://github.com/RSS-Bridge/rss-bridge/actions) [![Docker Build Status](https://img.shields.io/docker/cloud/build/rssbridge/rss-bridge?logo=docker)](https://hub.docker.com/r/rssbridge/rss-bridge/) 4 5RSS-Bridge is a PHP project capable of generating RSS and Atom feeds for websites that don't have one. It can be used on webservers or as a stand-alone application in CLI mode. 6 7**Important**: RSS-Bridge is __not__ a feed reader or feed aggregator, but a tool to generate feeds that are consumed by feed readers and feed aggregators. Find a list of feed aggregators on [Wikipedia](https://en.wikipedia.org/wiki/Comparison_of_feed_aggregators). 8 9Supported sites/pages (examples) 10=== 11 12* `Bandcamp` : Returns last release from [bandcamp](https://bandcamp.com/) for a tag 13* `Cryptome` : Returns the most recent documents from [Cryptome.org](http://cryptome.org/) 14* `DansTonChat`: Most recent quotes from [danstonchat.com](http://danstonchat.com/) 15* `DuckDuckGo`: Most recent results from [DuckDuckGo.com](https://duckduckgo.com/) 16* `Facebook` : Returns the latest posts on a page or profile on [Facebook](https://facebook.com/) 17* `FlickrExplore` : [Latest interesting images](http://www.flickr.com/explore) from Flickr 18* `GoogleSearch` : Most recent results from Google Search 19* `Identi.ca` : Identica user timeline (Should be compatible with other Pump.io instances) 20* `Instagram`: Most recent photos from an Instagram user 21* `OpenClassrooms`: Lastest tutorials from [fr.openclassrooms.com](http://fr.openclassrooms.com/) 22* `Pinterest`: Most recent photos from user or search 23* `ScmbBridge`: Newest stories from [secouchermoinsbete.fr](http://secouchermoinsbete.fr/) 24* `ThePirateBay` : Returns the newest indexed torrents from [The Pirate Bay](https://thepiratebay.se/) with keywords 25* `Twitter` : Return keyword/hashtag search or user timeline 26* `Wikipedia`: highlighted articles from [Wikipedia](https://wikipedia.org/) in English, German, French or Esperanto 27* `YouTube` : YouTube user channel, playlist or search 28 29And [many more](bridges/), thanks to the community! 30 31Output format 32=== 33 34RSS-Bridge is capable of producing several output formats: 35 36* `Atom` : Atom feed, for use in feed readers 37* `Html` : Simple HTML page 38* `Json` : JSON, for consumption by other applications 39* `Mrss` : MRSS feed, for use in feed readers 40* `Plaintext` : Raw text, for consumption by other applications 41 42You can extend RSS-Bridge with your own format, using the [Format API](https://github.com/RSS-Bridge/rss-bridge/wiki/Format-API)! 43 44Screenshot 45=== 46 47Welcome screen: 48 49![Screenshot](https://github.com/RSS-Bridge/rss-bridge/wiki/images/screenshot_rss-bridge_welcome.png) 50 51*** 52 53RSS-Bridge hashtag (#rss-bridge) search on Twitter, in Atom format (as displayed by Firefox): 54 55![Screenshot](https://github.com/RSS-Bridge/rss-bridge/wiki/images/screenshot_twitterbridge_atom.png) 56 57Requirements 58=== 59 60RSS-Bridge requires PHP 5.6 or higher with following extensions enabled: 61 62 - [`openssl`](https://secure.php.net/manual/en/book.openssl.php) 63 - [`libxml`](https://secure.php.net/manual/en/book.libxml.php) 64 - [`mbstring`](https://secure.php.net/manual/en/book.mbstring.php) 65 - [`simplexml`](https://secure.php.net/manual/en/book.simplexml.php) 66 - [`curl`](https://secure.php.net/manual/en/book.curl.php) 67 - [`json`](https://secure.php.net/manual/en/book.json.php) 68 - [`filter`](https://secure.php.net/manual/en/book.filter.php) 69 - [`sqlite3`](http://php.net/manual/en/book.sqlite3.php) (only when using SQLiteCache) 70 71Find more information on our [Wiki](https://github.com/rss-bridge/rss-bridge/wiki) 72 73Enable / Disable bridges 74=== 75 76RSS-Bridge allows you to take full control over which bridges are displayed to the user. That way you can host your own RSS-Bridge service with your favorite collection of bridges! 77 78Find more information on the [Wiki](https://github.com/RSS-Bridge/rss-bridge/wiki/Whitelisting) 79 80**Notice**: By default, RSS-Bridge will only show a small subset of bridges. Make sure to read up on [whitelisting](https://github.com/RSS-Bridge/rss-bridge/wiki/Whitelisting) to unlock the full potential of RSS-Bridge! 81 82Deploy 83=== 84 85Thanks to the community, hosting your own instance of RSS-Bridge is as easy as clicking a button! 86 87[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/sebsauvage/rss-bridge) 88[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) 89 90Getting involved 91=== 92 93There are many ways for you to getting involved with RSS-Bridge. Here are a few things: 94 95- Share RSS-Bridge with your friends (Twitter, Facebook, ..._you name it_...) 96- Report broken bridges or bugs by opening [Issues](https://github.com/RSS-Bridge/rss-bridge/issues) on GitHub 97- Request new features or suggest ideas (via [Issues](https://github.com/RSS-Bridge/rss-bridge/issues)) 98- Discuss bugs, features, ideas or [issues](https://github.com/RSS-Bridge/rss-bridge/issues) 99- Add new bridges or improve the API 100- Improve the [Wiki](https://github.com/RSS-Bridge/rss-bridge/wiki) 101- Host an instance of RSS-Bridge for your personal use or make it available to the community :sparkling_heart: 102 103Authors 104=== 105 106We are RSS-Bridge community, a group of developers continuing the project initiated by sebsauvage, webmaster of [sebsauvage.net](http://sebsauvage.net), author of [Shaarli](http://sebsauvage.net/wiki/doku.php?id=php:shaarli) and [ZeroBin](http://sebsauvage.net/wiki/doku.php?id=php:zerobin). 107 108**Contributors** (sorted alphabetically): 109<!-- 110Use this script to generate the list automatically (using the GitHub API): 111https://gist.github.com/LogMANOriginal/da00cd1e5f0ca31cef8e193509b17fd8 112--> 113 114* [16mhz](https://github.com/16mhz) 115* [adamchainz](https://github.com/adamchainz) 116* [Ahiles3005](https://github.com/Ahiles3005) 117* [akirk](https://github.com/akirk) 118* [Albirew](https://github.com/Albirew) 119* [aledeg](https://github.com/aledeg) 120* [alex73](https://github.com/alex73) 121* [alexAubin](https://github.com/alexAubin) 122* [AmauryCarrade](https://github.com/AmauryCarrade) 123* [AntoineTurmel](https://github.com/AntoineTurmel) 124* [arnd-s](https://github.com/arnd-s) 125* [ArthurHoaro](https://github.com/ArthurHoaro) 126* [Astalaseven](https://github.com/Astalaseven) 127* [Astyan-42](https://github.com/Astyan-42) 128* [AxorPL](https://github.com/AxorPL) 129* [ayacoo](https://github.com/ayacoo) 130* [az5he6ch](https://github.com/az5he6ch) 131* [b1nj](https://github.com/b1nj) 132* [benasse](https://github.com/benasse) 133* [Binnette](https://github.com/Binnette) 134* [captn3m0](https://github.com/captn3m0) 135* [chemel](https://github.com/chemel) 136* [Chouchen](https://github.com/Chouchen) 137* [ckiw](https://github.com/ckiw) 138* [cn-tools](https://github.com/cn-tools) 139* [cnlpete](https://github.com/cnlpete) 140* [corenting](https://github.com/corenting) 141* [couraudt](https://github.com/couraudt) 142* [csisoap](https://github.com/csisoap) 143* [cyberjacob](https://github.com/cyberjacob) 144* [da2x](https://github.com/da2x) 145* [Daiyousei](https://github.com/Daiyousei) 146* [dawidsowa](https://github.com/dawidsowa) 147* [DevonHess](https://github.com/DevonHess) 148* [disk0x](https://github.com/disk0x) 149* [DJCrashdummy](https://github.com/DJCrashdummy) 150* [Djuuu](https://github.com/Djuuu) 151* [DnAp](https://github.com/DnAp) 152* [dominik-th](https://github.com/dominik-th) 153* [Draeli](https://github.com/Draeli) 154* [Dreckiger-Dan](https://github.com/Dreckiger-Dan) 155* [drego85](https://github.com/drego85) 156* [drklee3](https://github.com/drklee3) 157* [em92](https://github.com/em92) 158* [eMerzh](https://github.com/eMerzh) 159* [EtienneM](https://github.com/EtienneM) 160* [fanch317](https://github.com/fanch317) 161* [fivefilters](https://github.com/fivefilters) 162* [floviolleau](https://github.com/floviolleau) 163* [fluffy-critter](https://github.com/fluffy-critter) 164* [Frenzie](https://github.com/Frenzie) 165* [fulmeek](https://github.com/fulmeek) 166* [ggiessen](https://github.com/ggiessen) 167* [Ginko-Aloe](https://github.com/Ginko-Aloe) 168* [Glandos](https://github.com/Glandos) 169* [gloony](https://github.com/gloony) 170* [GregThib](https://github.com/GregThib) 171* [griffaurel](https://github.com/griffaurel) 172* [Grummfy](https://github.com/Grummfy) 173* [gsantner](https://github.com/gsantner) 174* [guigot](https://github.com/guigot) 175* [hollowleviathan](https://github.com/hollowleviathan) 176* [hpacleb](https://github.com/hpacleb) 177* [hunhejj](https://github.com/hunhejj) 178* [husim0](https://github.com/husim0) 179* [IceWreck](https://github.com/IceWreck) 180* [j0k3r](https://github.com/j0k3r) 181* [JackNUMBER](https://github.com/JackNUMBER) 182* [jacquesh](https://github.com/jacquesh) 183* [JasonGhent](https://github.com/JasonGhent) 184* [jcgoette](https://github.com/jcgoette) 185* [jdesgats](https://github.com/jdesgats) 186* [jdigilio](https://github.com/jdigilio) 187* [JeremyRand](https://github.com/JeremyRand) 188* [JimDog546](https://github.com/JimDog546) 189* [Jocker666z](https://github.com/Jocker666z) 190* [johnnygroovy](https://github.com/johnnygroovy) 191* [johnpc](https://github.com/johnpc) 192* [joni1993](https://github.com/joni1993) 193* [joshcoales](https://github.com/joshcoales) 194* [klimplant](https://github.com/klimplant) 195* [kolarcz](https://github.com/kolarcz) 196* [kranack](https://github.com/kranack) 197* [kraoc](https://github.com/kraoc) 198* [l1n](https://github.com/l1n) 199* [laBecasse](https://github.com/laBecasse) 200* [lagaisse](https://github.com/lagaisse) 201* [lalannev](https://github.com/lalannev) 202* [ldidry](https://github.com/ldidry) 203* [Leomaradan](https://github.com/Leomaradan) 204* [liamka](https://github.com/liamka) 205* [Limero](https://github.com/Limero) 206* [LogMANOriginal](https://github.com/LogMANOriginal) 207* [lorenzos](https://github.com/lorenzos) 208* [lukasklinger](https://github.com/lukasklinger) 209* [m0zes](https://github.com/m0zes) 210* [matthewseal](https://github.com/matthewseal) 211* [mcbyte-it](https://github.com/mcbyte-it) 212* [mdemoss](https://github.com/mdemoss) 213* [melangue](https://github.com/melangue) 214* [metaMMA](https://github.com/metaMMA) 215* [mibe](https://github.com/mibe) 216* [mightymt](https://github.com/mightymt) 217* [mitsukarenai](https://github.com/mitsukarenai) 218* [Monocularity](https://github.com/Monocularity) 219* [MonsieurPoutounours](https://github.com/MonsieurPoutounours) 220* [mr-flibble](https://github.com/mr-flibble) 221* [mro](https://github.com/mro) 222* [mschwld](https://github.com/mschwld) 223* [mxmehl](https://github.com/mxmehl) 224* [nel50n](https://github.com/nel50n) 225* [niawag](https://github.com/niawag) 226* [Niehztog](https://github.com/Niehztog) 227* [Nono-m0le](https://github.com/Nono-m0le) 228* [ObsidianWitch](https://github.com/ObsidianWitch) 229* [OliverParoczai](https://github.com/OliverParoczai) 230* [Ololbu](https://github.com/Ololbu) 231* [ORelio](https://github.com/ORelio) 232* [otakuf](https://github.com/otakuf) 233* [Park0](https://github.com/Park0) 234* [Paroleen](https://github.com/Paroleen) 235* [PaulVayssiere](https://github.com/PaulVayssiere) 236* [pellaeon](https://github.com/pellaeon) 237* [PeterDaveHello](https://github.com/PeterDaveHello) 238* [Peterr-K](https://github.com/Peterr-K) 239* [Piranhaplant](https://github.com/Piranhaplant) 240* [pit-fgfjiudghdf](https://github.com/pit-fgfjiudghdf) 241* [pitchoule](https://github.com/pitchoule) 242* [pmaziere](https://github.com/pmaziere) 243* [Pofilo](https://github.com/Pofilo) 244* [prysme01](https://github.com/prysme01) 245* [Qluxzz](https://github.com/Qluxzz) 246* [quentinus95](https://github.com/quentinus95) 247* [rakoo](https://github.com/rakoo) 248* [RawkBob](https://github.com/RawkBob) 249* [regisenguehard](https://github.com/regisenguehard) 250* [Riduidel](https://github.com/Riduidel) 251* [rogerdc](https://github.com/rogerdc) 252* [Roliga](https://github.com/Roliga) 253* [ronansalmon](https://github.com/ronansalmon) 254* [rremizov](https://github.com/rremizov) 255* [sebsauvage](https://github.com/sebsauvage) 256* [shutosg](https://github.com/shutosg) 257* [simon816](https://github.com/simon816) 258* [Simounet](https://github.com/Simounet) 259* [somini](https://github.com/somini) 260* [squeek502](https://github.com/squeek502) 261* [stjohnjohnson](https://github.com/stjohnjohnson) 262* [Strubbl](https://github.com/Strubbl) 263* [sublimz](https://github.com/sublimz) 264* [sunchaserinfo](https://github.com/sunchaserinfo) 265* [SuperSandro2000](https://github.com/SuperSandro2000) 266* [sysadminstory](https://github.com/sysadminstory) 267* [t0stiman](https://github.com/t0stiman) 268* [tameroski](https://github.com/tameroski) 269* [teromene](https://github.com/teromene) 270* [tgkenney](https://github.com/tgkenney) 271* [thefranke](https://github.com/thefranke) 272* [ThePadawan](https://github.com/ThePadawan) 273* [TheRadialActive](https://github.com/TheRadialActive) 274* [theScrabi](https://github.com/theScrabi) 275* [thezeroalpha](https://github.com/thezeroalpha) 276* [TitiTestScalingo](https://github.com/TitiTestScalingo) 277* [triatic](https://github.com/triatic) 278* [VerifiedJoseph](https://github.com/VerifiedJoseph) 279* [WalterBarrett](https://github.com/WalterBarrett) 280* [wtuuju](https://github.com/wtuuju) 281* [xurxof](https://github.com/xurxof) 282* [yamanq](https://github.com/yamanq) 283* [yardenac](https://github.com/yardenac) 284* [ymeister](https://github.com/ymeister) 285* [ZeNairolf](https://github.com/ZeNairolf) 286 287Licenses 288=== 289 290The source code for RSS-Bridge is [Public Domain](UNLICENSE). 291 292RSS-Bridge uses third party libraries with their own license: 293 294 * [`Parsedown`](https://github.com/erusev/parsedown) licensed under the [MIT License](http://opensource.org/licenses/MIT) 295 * [`PHP Simple HTML DOM Parser`](http://simplehtmldom.sourceforge.net/) licensed under the [MIT License](http://opensource.org/licenses/MIT) 296 * [`php-urljoin`](https://github.com/fluffy-critter/php-urljoin) licensed under the [MIT License](http://opensource.org/licenses/MIT) 297 298Technical notes 299=== 300 301 * RSS-Bridge uses caching to prevent services from banning your server for repeatedly updating feeds. The specific cache duration can be different between bridges. Cached files are deleted automatically after 24 hours. 302 * You can implement your own bridge, [following these instructions](https://github.com/RSS-Bridge/rss-bridge/wiki/Bridge-API). 303 * You can enable debug mode to disable caching. Find more information on the [Wiki](https://github.com/RSS-Bridge/rss-bridge/wiki/Debug-mode) 304 305Rant 306=== 307 308*Dear so-called "social" websites.* 309 310Your catchword is "share", but you don't want us to share. You want to keep us within your walled gardens. That's why you've been removing RSS links from webpages, hiding them deep on your website, or removed feeds entirely, replacing it with crippled or demented proprietary API. **FUCK YOU.** 311 312You're not social when you hamper sharing by removing feeds. You're happy to have customers creating content for your ecosystem, but you don't want this content out - a content you do not even own. Google Takeout is just a gimmick. We want our data to flow, we want RSS or Atom feeds. 313 314We want to share with friends, using open protocols: RSS, Atom, XMPP, whatever. Because no one wants to have *your* service with *your* applications using *your* API force-feeding them. Friends must be free to choose whatever software and service they want. 315 316We are rebuilding bridges you have willfully destroyed. 317 318Get your shit together: Put RSS/Atom back in. 319