Giter Club home page Giter Club logo

rssconcat's Introduction

rssconcat

Service that allows to concatenate several RSS feeds into one. Multiple concatenated feeds can be served on different URLs.

Little Q&A

  • Why?
    I like to use RSS to get some kind of info that updates regulary. And sometimes it's usefull to have several similar feeds to be represented as one feed. I used several online services for these, but all of them have either some limitations or downtimes. So I decided to create simple application that provides such service and I don't need to rely on 3rd party services.
  • Why Haskell?
    Why not? :)
    I don't use Haskell for my everyday tasks. In fact I never used it for anything except for examples from Learn You a Haskell for Great Good. So I decided to check if I know it good enough to write some simple application. This one is a good fit. It's not too complex. And, at the same time, it includes such common things as network (web) server, client, file reading, markup language parsing.
  • Can I use it as example of good Haskell app?
    You probably should not. As it is mentioned above, this is my first Haskell app, and I believe that it has a lot of things that can be improved.

Usage

  • Download
  • Build with stack
  • Create config file. Use config.example.yaml for reference.
  • Run rssconcat from build directory (or stack exec rssconcat) with one optional argument - path to config file. If run without arguments, it looks for config.yaml file in current working directory.
  • Go to http://YOUR_HOST:YOUR_PORT/ for list of availabled feed or add http://YOUR_HOST:YOUR_PORT/YOUR_FEED_NAME directly to your RSS reader.

TODO

  • Cover with tests.
  • Handle incorrect config file.
  • Handle errors when retrieving from source feeds.
  • Support for <link> RSS chanel field as required by specification
    For example: add new URL like /feed_name/info, which contains simple text like:

    This is feed that combines the following feeds: list of links from source feeds <link> fields

  • Put better description in <description> RSS chanel field. Probably with the same content as described above.
  • Support different feed types (RSS1/RSS2/Atom).
  • ???
  • PROFIT!

Contributing

PRs are welcome. Also I would really appreciate, if your PR contains not only description of what is changed, but also why. E.g.: this PR changes usage of & function to $ because former is considered confusing and against Haskell best practices. Such comments will help me to learn Haskell better.

rssconcat's People

Contributors

fly avatar

Stargazers

 avatar

Watchers

 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.