Giter Site home page Giter Site logo

jauharibill / rss-bridge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rss-bridge/rss-bridge

0.0 1.0 0.0 9.53 MB

The RSS feed for websites missing it

Home Page: https://rss-bridge.github.io/rss-bridge/

License: The Unlicense

Shell 0.07% JavaScript 0.30% PHP 98.97% Emacs Lisp 0.19% CSS 0.39% Hack 0.05% HCL 0.01% Dockerfile 0.03%

rss-bridge's Introduction

RSS-Bridge

RSS-Bridge

RSS-Bridge is a PHP project capable of generating RSS and Atom feeds for websites that don't have one.

LICENSE GitHub release irc.libera.chat Chat on Matrix Actions Status

Screenshot of the Twitter bridge configuration:

Screenshot #1

Screenshot of the Twitter bridge for Rasmus Lerdorf:

Screenshot #2

Documentation

Check out RSS-Bridge right now on https://rss-bridge.org/bridge01 or find another public instance.

Tutorial

RSS-Bridge requires php 7.4.

Install with git:

cd /var/www
git clone https://github.com/RSS-Bridge/rss-bridge.git

# Give the http user write permission to the cache folder
chown www-data:www-data /var/www/rss-bridge/cache

# Optionally copy over the default config file
cp config.default.ini.php config.ini.php

# Optionally copy over the default whitelist file
cp whitelist.default.txt whitelist.txt

Example config for nginx:

# /etc/nginx/sites-enabled/rssbridge
server {
    listen 80;
    server_name example.com;
    root /var/www/rss-bridge;
    index index.php;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php-fpm.sock;
    }
}

Install with Docker:

Install by using docker image from Docker Hub:

# Create container
docker create --name=rss-bridge --publish 3000:80 rssbridge/rss-bridge

# Start container
docker start rss-bridge

Browse http://localhost:3000/

Install by locally building the image:

# Build image from Dockerfile
docker build -t rss-bridge .

# Create container
docker create --name rss-bridge --publish 3000:80 rss-bridge

# Start the container
docker start rss-bridge

Browse http://localhost:3000/

Alternative installation methods

Deploy on Scalingo Deploy to Heroku Deploy to Cloudron

The Heroku quick deploy currently does not work. It might possibly work if you fork this repo and modify the repository in scalingo.json. See RSS-Bridge#2688

Learn more in Installation.

Create a new bridge from scratch

Create the new bridge in e.g. bridges/BearBlogBridge.php:

<?php

class BearBlogBridge extends BridgeAbstract
{
    const NAME = 'BearBlog (bearblog.dev)';

    public function collectData()
    {
        // We can perform css selectors on $dom
        $dom = getSimpleHTMLDOM('https://herman.bearblog.dev/blog/');

        // An array of dom nodes
        $blogPosts = $dom->find('.blog-posts li');

        foreach ($blogPosts as $blogPost) {
            // Select the anchor at index 0 (the first anchor found)
            $a = $blogPost->find('a', 0);

            // Select the inner text of the anchor
            $title = $a->innertext;

            // Select the href attribute of the anchor
            $url = $a->href;

            // Select the <time> tag
            $time = $blogPost->find('time', 0);
            // Create a \DateTime object from the datetime attribute
            $createdAt = date_create_from_format('Y-m-d', $time->datetime);

            $item = [
                'title' => $title,
                'author' => 'Herman',

                // Prepend the url because $url is a relative path
                'uri' => 'https://herman.bearblog.dev' . $url,

                // Grab the unix timestamp
                'timestamp' => $createdAt->getTimestamp(),
            ];

            // Add the item to the list of items
            $this->items[] = $item;
        }
    }
}

Learn more in bridge api.

How-to

How to enable all bridges

Write an asterisks to whitelist.txt:

echo '*' > whitelist.txt

Learn more in enabling briges

How to enable a bridge

Add the bridge name to whitelist.txt:

echo 'FirefoxAddonsBridge' >> whitelist.txt

How to enable debug mode

Create a file named DEBUG:

touch DEBUG

Learn more in debug mode.

How to create a new output format

Create a new format.

Explanation

We are RSS-Bridge community, a group of developers continuing the project initiated by sebsauvage, webmaster of sebsauvage.net, author of Shaarli and ZeroBin.

See CONTRIBUTORS.md

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.

RSS-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!

Supported output formats:

  • Atom : Atom feed, for use in feed readers
  • Html : Simple HTML page
  • Json : JSON, for consumption by other applications
  • Mrss : MRSS feed, for use in feed readers
  • Plaintext : Raw text, for consumption by other applications

Reference

A selection of bridges

  • Bandcamp : Returns last release from bandcamp for a tag
  • Cryptome : Returns the most recent documents from Cryptome.org
  • DansTonChat: Most recent quotes from danstonchat.com
  • DuckDuckGo: Most recent results from DuckDuckGo.com
  • Facebook : Returns the latest posts on a page or profile on Facebook (There is an issue for public instances)
  • FlickrExplore : Latest interesting images from Flickr
  • GoogleSearch : Most recent results from Google Search
  • Identi.ca : Identica user timeline (Should be compatible with other Pump.io instances)
  • Instagram: Most recent photos from an Instagram user (It is recommended to configure this bridge to work)
  • OpenClassrooms: Lastest tutorials from openclassrooms.com
  • Pinterest: Most recent photos from user or search
  • ScmbBridge: Newest stories from secouchermoinsbete.fr
  • ThePirateBay : Returns the newest indexed torrents from The Pirate Bay with keywords
  • Twitter : Return keyword/hashtag search or user timeline
  • Wikipedia: highlighted articles from Wikipedia in English, German, French or Esperanto
  • YouTube : YouTube user channel, playlist or search

And many more, thanks to the community!

Licenses

The source code for RSS-Bridge is Public Domain.

RSS-Bridge uses third party libraries with their own license:

Rant

Dear so-called "social" websites.

Your 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.

You'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.

We 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.

We are rebuilding bridges you have willfully destroyed.

Get your shit together: Put RSS/Atom back in.

rss-bridge's People

Contributors

logmanoriginal avatar teromene avatar mitsukarenai avatar dvikan avatar em92 avatar verifiedjoseph avatar orelio avatar sysadminstory avatar yamanq avatar bockiii avatar sebsauvage avatar triatic avatar corenting avatar somini avatar jtojnar avatar fulmeek avatar roliga avatar quickwick avatar captn3m0 avatar thescrabi avatar frenzie avatar csisoap avatar icewreck avatar thefranke avatar mdemoss avatar grummfy avatar albirew avatar mynacol avatar floviolleau avatar riduidel avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.