An open API service indexing awesome lists of open source software.

https://github.com/revett/rss-explore

Tools to help you easily find and manage RSS feeds.
https://github.com/revett/rss-explore

api reddit rss tools youtube

Last synced: 4 months ago
JSON representation

Tools to help you easily find and manage RSS feeds.

Awesome Lists containing this project

README

          

# rss-explore

[![GoDoc](https://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://pkg.go.dev/github.com/revett/rss-explore)
[![Builds](https://img.shields.io/github/checks-status/revett/rss-explore/main?label=build&style=flat-square)](https://github.com/revett/rss-explore/actions?query=branch%3Amain)
[![Go Report Card](https://goreportcard.com/badge/github.com/revett/rss-explore?style=flat-square)](https://goreportcard.com/report/github.com/revett/rss-explore)
[![License](https://img.shields.io/badge/license-mit-blue.svg?style=flat-square)](https://github.com/revett/rss-explore/blob/main/LICENSE)

Tools to help you easily find and manage RSS feeds.

## Usage

Convert a YouTube video URL in to the RSS feed for that video's channel:

```bash
curl --location --silent \
--request POST 'https://rss-explore.revcd.com/youtube/convert' \
--header 'Content-Type: application/json' \
--data-raw '{
"url": "https://youtube.com/watch?v=7LICrnxWd38"
}' | jq -r '.url'
```

```bash
"https://www.youtube.com/feeds/videos.xml?channel_id=UCWaC58KxHxyCgZVl4cRDxSg"
```

## Raycast

Import the [`raycast-rss-explore.sh`](./raycast-rss-explore.sh) file as a
[Raycast Script Command](https://github.com/raycast/script-commands).

![Screenshot of the Raycast Script Command](./assets/raycast_screenshot.png)

## Development

### Code Generation

```bash
# Install oapi-codegen
go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@latest

# Generate the API models, server implementation, and spec
make generate
```

### Production

- [Vercel](https://github.com/vercel/vercel) deploys each `.go` file within
`api/` as a
[serverless function](https://vercel.com/docs/concepts/functions/serverless-functions/runtimes/go)
- Each of these are wrappers around a handler function within the
`internal/handler` package, which holds the business logic of the API

### Local

```
make run
```

> API available at `http://localhost:5691`

- `main.go` creates a single `echo.Echo` instance, and registers all the handler
functions from the `internal/handler` package as routes
- This is done via the `api.ServerInterface` that is generated by
[deepmap/oapi-codegen](https://github.com/deepmap/oapi-codegen), to make sure that the
OpenAPI spec is correctly implemented
- This means that get a near-similar experience to production without having to
mess about with Vercel's `api/` directory structure