Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cartermckinnon/filter-feed
For fetchin' filtered feeds.
https://github.com/cartermckinnon/filter-feed
podcasts rss rss-feed
Last synced: 9 days ago
JSON representation
For fetchin' filtered feeds.
- Host: GitHub
- URL: https://github.com/cartermckinnon/filter-feed
- Owner: cartermckinnon
- Created: 2022-04-27T05:59:22.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-08-07T08:39:36.000Z (over 2 years ago)
- Last Synced: 2024-10-28T20:59:29.180Z (about 2 months ago)
- Topics: podcasts, rss, rss-feed
- Language: JavaScript
- Homepage: https://filter-feed.me
- Size: 334 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# `filter-feed`
This project is:
1. A stateless, (aspirationally) transparent, filtering proxy for RSS, Atom, and JSON feeds.
2. A command-line tool for fetching and filtering feeds.
3. A user interface to manage a feed's filters.I created this for podcasts. Your mileage may vary with other types of feeds -- that support comes purely from these awesome libraries that power this project:
- `github.com/mmcdole/gofeed`
- `github.com/gorilla/feeds`## Usage
### On the web.
You can create a filtered feed URL from an existing feed using the public instance of `filter-feed` available at:
[`https://filter-feed.me`](https://filter-feed.me)
Please don't abuse this service 🙏.
### As a command-line tool.
```
filter-feed fetch URL FILTER (OVERRIDE)
```
Where:
- `URL` is the URL for the feed.
- `FILTER` is either:
- A `FilterSpec`
- A `FilterSpecs`
- A path to a JSON file beginning with `file://` (ex. `file://my-filter.json`), that contains a `FilterSpec` or `FilterSpecs`.
- (Optional) `OVERRIDE` is either:
- A `OverrideSpec`
- A `OverrideSpecs`
- path to a JSON file, beginning with `file://` (ex. `file://my-override.json`), that contains a `OverrideSpec` or `OverrideSpecs`.### As a proxy.
Start the server:
```sh
filter-feed server --redis-address ":6379"
```Or start the server in a container:
```sh
docker run --rm -p 8080:8080 ghcr.io/cartermckinnon/filter-feed server --redis-address "redis.host:6379"
```Generate a URL on the `filter-feed.me` website, or with the command-line:
```sh
filter-feed url URL FILTER (OVERRIDE)
```Where `URL`, `FILTER`, and `OVERRIDE` are as defined above.
The filtered URL's path will look something like:
```
/v1/ff/ChRodHRwczovL2NhdC5mZWVkL3JzcxIYCgVyZWdleBIILipjYXRzLioaBXRpdGxl
```Just send a `GET` for that path to a `filter-feed` server, such as the one I run at `api.filter-feed.me`:
```
curl https://api.filter-feed.me/v1/ff/ChRodHRwczovL2NhdC5mZWVkL3JzcxIYCgVyZWdleBIILipjYXRzLioaBXRpdGxl
```## Development
1. Install [Earthly](https://earthly.dev).
2. Compile the protocol buffers:
```sh
make proto
```3. Build locally:
```sh
go build
```4. Build for release:
```sh
make
```