Categorygithub.com/chase-seibert/rsscombine
modulepackage
0.0.0-20241201163908-df6b7d4ac953
Repository: https://github.com/chase-seibert/rsscombine.git
Documentation: pkg.go.dev

# README

RSS Combine

Combine multiple RSS feeds into a single feed, as a service.

Quick Start

Here is how you run the service locally. You may need to brew install golang, first.

git clone [email protected]:chase-seibert/rsscombine.git
cd rsscombine
go mod download
go run rsscombine.go

Configuration

You can specify configuration options as either a YAML file, or as environment variables. Environment variable names should be in all caps, prefixed by RSSCOMBINE_ with underscored included. The only exception is the feeds items. You cannot specify that list of URLs via environment variables. Instead, you can specify a RSSCOMBINE_FEEDS_URL. See "Feeds URL" bellow.

Options

See the "Example YAML File" section for example defaults.

YAML NameEnvironment VariableDescription
titleRSSCOMBINE_TITLETitle of the new RSS feed.
linkRSSCOMBINE_LINKLink to the new RSS feed. Can be a webpage or the feed URL.
descriptionRSSCOMBINE_DESCRIPTIONDescription of your new feed, shows in RSS readers.
author_nameRSSCOMBINE_AUTHOR_NAMEYour full name, shows in RSS readers.
author_emailRSSCOMBINE_AUTHOR_EMAILYour email, shows in RSS readers.
client_timeout_secondsRSSCOMBINE_CLIENT_TIMEOUT_SECONDSSeconds to timeout call from the server to the individual RSS feeds.
feedsList of feeds to combine. Cannot be specified via environment variable.
feed_urlsRSSCOMBINE_FEED_URLSOptional: URL to parse feed URLs from. If set, this overrides the feeds setting.
feed_exclude_prefixesRSSCOMBINE_FEED_EXCLUDE_PREFIXESOptional: list of URL prefixes to exclude from feed_urls parsing.
feed_limit_per_feedRSSCOMBINE_FEED_LIMIT_PER_FEEDOptional: how many items you want to pull from each sub-feed.
s3_bucketRSSCOMBINE_S3_BUCKETOptional: bucket name to use when uploading to S3.
s3_filenameRSSCOMBINE_S3_FILENAMEOptional: file name to use when uploading to S3.

Example YAML File

You can create a local rsscombine.yml file in this format:

title: My Technical RSS Feed
link: http://wherethisfeedishosted.com/feed
description: This is a personal collection of technical RSS feeds.
author_name: John Doe
author_email: [email protected]
port: 8080
cache_timeout_seconds: 3600
feeds:
  - http://feeds.feedburner.com/TechCrunch
  - http://feeds.arstechnica.com/arstechnica/technology-lab
  - http://www.reddit.com/r/technology/.rss
  - http://rss.slashdot.org/slashdot/slashdotMainatom

Feeds URL

You can create a public file on the web, and RSS Combine can query that file and parse out the URLs. This is especially useful for GitHub README files.

Note: the file format does not matter, RSS Combine will pull any URL it can find in the file.

Example README.md:

This is a README with some URLs.

- TechCrunch http://feeds.feedburner.com/TechCrunch
- Ars Technica http://feeds.arstechnica.com/arstechnica/technology-lab
- Reddit http://www.reddit.com/r/technology/.rss

If that file is hosted at https://raw.githubusercontent.com/chase-seibert/rsscombine/master/examples/basic.md, then you can have RSS Combine load the file by defining the YAML key feeds_url or the environment variable RSSCOMBINE_FEEDS_URL with that URL as the value.

Generate Static RSS File in S3

You can also generate a static RSS file and upload to S3.

Just run:

go run rsscombine.go

For S3 uploads, you need to set the following as environment variables.

Environment VariableDescription
AWS_REGIONThe AWS Region your bucket is in.
AWS_ACCESS_KEY_IDThe AWS access key ID for your bucket.
AWS_SECRET_ACCESS_KEYThe AWS secret access key for your bucket.

See the Configuration section for setting s3_bucket and s3_filename.

# Functions

No description provided by the author
No description provided by the author