Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/azu/irodr

RSS reader client like LDR for Inoreader.
https://github.com/azu/irodr

browser inoreader ldr rss viewer

Last synced: 2 days ago
JSON representation

RSS reader client like LDR for Inoreader.

Awesome Lists containing this project

README

        

# Irodr [![Actions Status: test](https://github.com/azu/irodr/workflows/test/badge.svg)](https://github.com/azu/irodr/actions?query=workflow%3A"test")

RSS reader client for [Inoreader](http://www.inoreader.com/ "Inoreader").

This RSS reader provide a similar experience to [LDR](http://reader.livedoor.com/).

![Screen Shot](./docs/img/irodr-behavior.gif)

## Purpose

- [x] Fast read RSS like [LDR](http://reader.livedoor.com/)
- [x] Prefetch contents
- [x] Mark as "read" on idle time
- [x] Keyboard Shortcut
- [x] Customizable by UserScript
- [x] Provide [UserScript API](src/component/container/App/Hidden/UserScript) like `window.getActiveItem`

## Usage

![login gif](./docs/img/login-irodr.gif)

1. Open
2. Click **Connect to Inoreader**
3. Click **Authorize** on Inoreader site

### Keyboard Shortcut

- j: move-next-content-item
- shift+j: load-more-past-contents
- t: toggle-content-filter
- k: move-prev-content-item
- a: move-prev-subscription-feed
- s: move-next-subscription-feed
- m: make-subscription-read
- v: open-current-content-url
- z: toggle-subscription-feed-list
- space: scroll-down-content
- shift+space: scroll-up-content
- shift+s: skip-and-move-next-subscription-feed

### Custom Client Id and Client Secret

If you want to your Client ID/Secret of inoreader, do following steps:

1. Visit https://www.inoreader.com/
2. Open "Preferences"
3. Open "Developer" tab
4. Create new App
- "Redirect URL" is not required
- "Scoped": Read and Write
5. Copy Client Id and Client Secret

![Create new App](https://monosnap.com/file/uKYqAHpIjibLkffvfHWXoSys1wVxl7.png)

You paste the Client ID and secret to Irodr Authorization.

![Irodr Authorization](https://monosnap.com/file/ki0yNr9jfRu9TBHvHxrrLOH78w8JyY.png)

## UserScript API

Irodr provide some UserScript API for UserScript like Greasemonkey.

- `window.addEventListener("userscript-init", (event) => { /* Initialize UseScript object */ })`
- `window.userScript.getActiveContent(): UserScriptActiveContent | undefined`
- `window.userScript.getActiveSubscription(): UserScriptActiveSubscription | undefined`
- `window.userScript.triggerKey(keys: string, action?: string): void`

For more details, see [UserScript API document](src/component/container/App/Hidden/UserScript).
See also [resources/userScript](./resources/userScript) directory.

## :memo: Notes

- Inoreader doesn't support CORS
- Please support CORS :bow:
- [x] Comment to [Inoreader Developers - User authentication via OAuth 2.0](http://www.inoreader.com/developers/oauth "Inoreader Developers - User authentication via OAuth 2.0")
- Currently, We need CORS proxy in `package.json`
- In other word, require proxy or proxy server

## Development

### Usage

Run following command and open local server.

npm start
# open http://localhost:13245/

### :memo: CORS workaround

Inoreader doesn't support CORS for API.
So, Irodr use CORS proxy for Inoreader API.

#### Production

http://irodr.netlify.app/ work on [Netlify](https://www.netlify.com/ "Netlify").
It uses [Netlify Edge Functions](https://docs.netlify.com/edge-functions/overview/) for CORS proxy.

- [netlify/edge-functions/cors-proxy.ts](./netlify/edge-functions/cors-proxy.ts)

Recommend: You can connect to Inoreader API without CORS proxy via UserScripts.

- [irodr-cros.js](./resources/userScript/irodr-cors.js "irodr-cros.js")

Also, you can use own CORS proxy.

- [irodr-custom-cors-proxy.js](./resources/userScript/irodr-custom-cors-proxy.js)

#### Local server

In local, you can just run `npm run dev` and open `http://localhost:8888/`.

npm run dev

### :memo: Limitation of Mixed-content

A browser show a warning on https://irodr.netlify.app/
It is caused by Mixed content.

- [Mixed content - Web security | MDN](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content "Mixed content - Web security | MDN")

## Changelog

See [Releases page](https://github.com/azu/irodr/releases).

## Running tests

Install devDependencies and Run `npm test`:

npm test

## Code of Conduct

Please note that this project is released with a [Contributor Code of Conduct](./CODE_OF_CONDUCT.md).
By participating in this project you agree to abide by its terms.

## Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, [please create an issue](https://github.com/azu/irodr/issues).

1. Fork it!
2. Create your feature branch: `git checkout -b my-new-feature`
3. Commit your changes: `git commit -am 'Add some feature'`
4. Push to the branch: `git push origin my-new-feature`
5. Submit a pull request :D

## Author

- [github/azu](https://github.com/azu)
- [twitter/azu_re](https://twitter.com/azu_re)

## License

MIT © azu

## OSS Supports


Netlify