listener-rss/README.md

167 lines
3.9 KiB
Markdown
Raw Normal View History

2021-02-07 16:18:16 +01:00
# easy-rss-parser
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
A lightweight library to give some additions for the [rss-parser package](https://github.com/rbren/rss-parser).
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
# USAGE
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
## Punctual usage
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
You can parse RSS from a URL with some custom data.
An example :
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
```js
2021-02-07 17:50:54 +01:00
const easyParser = require("easy-rss-parser");
2021-02-07 16:18:16 +01:00
const ListenerRss = easyParser.ListenerRss;
2021-02-07 17:50:54 +01:00
let listener = new ListenerRss("my-test-service", "fake.rss.service");
2021-02-07 16:18:16 +01:00
// make a request to the adr 'fake.rss.service'
myListener.fetchRSS().then((obj, err) => {
2021-02-07 17:50:54 +01:00
// some act
2021-02-07 16:18:16 +01:00
});
```
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
## Recurrent usage
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
You can parse RSS from a URL each n times.
An example :
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
```js
2021-02-07 17:50:54 +01:00
const easyParser = require("easy-rss-parser");
2021-02-07 16:18:16 +01:00
const ListenerRss = easyParser.ListenerRss;
2021-02-07 17:50:54 +01:00
let listener = new ListenerRss("my-test-service", "fake.rss.service", 5 * 60);
2021-02-07 16:18:16 +01:00
let callback_fun = (obj, err) => {
2021-02-07 17:50:54 +01:00
// some act
};
2021-02-07 16:18:16 +01:00
// call callback_fun each 5 minutes
listener.start(callback_fun);
/*...*/
listener.stop();
```
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
# Documentation
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
## ListenerRSSInfo
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
A class to structure listener's data.
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
### Constructor
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
`constructor(name, address, timeloop, customfields)`
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
- name : the service name
- address : the service address
- [optional] timeloop : time to wait between 2 request in seconds (default 5 minutes)
2021-02-07 17:50:54 +01:00
- [optional] customfields : to notice field who's custom to the service (default blank)
2021-02-07 16:18:16 +01:00
[cf annexe CustomFields](#customfields)
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
## ListenerRSS
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
### Constructor
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
`constructor(listenerRSSInfo)`
2021-02-07 17:50:54 +01:00
- listenerRSSInfo : object from the ListenerRSSInfo's class.
2021-02-07 16:18:16 +01:00
`constructor(name, address, timeloop, customfields)`
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
- name : the service name
- address : the service address
- [optional] timeloop : time to wait between 2 request in seconds (default 5 minutes)
- [optional] customfields : to notice field who's custom to the service (default blank)
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
### fetchRSS()
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
This function allows to make a request to the rss service.
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
#### Return
2021-02-07 17:50:54 +01:00
Return a promise object who's resolved like `resolve: (value: result_fetch) => void))` where `result_fetch` is a json
2021-02-07 16:18:16 +01:00
object who's contain the data. [cf Annexe Output](#output)
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
#### Issues
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
Return an error if the server can't be resolved.
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
### start(callbackFun)
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
This function will execute the callbackFun each time loop.
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
#### Parameter
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
The `callbackFun` is the function who's going to be called each time loop. She need to be under the shape :
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
```js
(obj, err) => {
/*...*/
2021-02-07 17:50:54 +01:00
};
2021-02-07 16:18:16 +01:00
```
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
### stop()
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
This function will stop the execution of the callbackFun each time loop.
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
# Annexe
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
## CustomFields
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
This parameter permit to specify some custom fields who's present in the service but not in the RFC.
For example the YouTube RSS api give some data into the `<media:group>` field. So you can give this info with this :
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
```js
2021-02-07 17:50:54 +01:00
[["media:group", "media:group"]];
2021-02-07 16:18:16 +01:00
```
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
You can also rename the field with the left part :
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
```js
2021-02-07 17:50:54 +01:00
[["my_custom_media_group_name", "media:group"]];
2021-02-07 16:18:16 +01:00
```
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
In adition you can rename child element into custom field like this :
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
```js
[
2021-02-07 17:50:54 +01:00
["media:group", "media:group"],
["description", ["media:group", "media:description"]],
["icon", ["media:group", "media:thumbnail"]],
];
2021-02-07 16:18:16 +01:00
```
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
In this case it's useless to specify the parent field, so you can just omit the first line :
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
```js
[
2021-02-07 17:50:54 +01:00
["description", ["media:group", "media:description"]],
["icon", ["media:group", "media:thumbnail"]],
];
2021-02-07 16:18:16 +01:00
```
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
## Output
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
Here an example of what type of json object is output during a fetch :
2021-02-07 17:50:54 +01:00
2021-02-07 16:18:16 +01:00
```json
feedUrl: 'fake.rrs.service'
title: 'myFakeApiTitle'
description: 'My Fake api desc'
link: 'fake.rrs.service'
items:
- title: 'My last item'
link: 'fake.rrs.service/item1'
pubDate: 'Thu, 12 Nov 2015 21:16:39 +0000'
creator: 'someone'
content: '<a href="http://example.com">this is a link</a> &amp; <b>this is bold text</b>'
contentSnippet: 'this is a link & this is bold text'
guid: 'fake.rrs.service/item1'
categories:
- test
- npm
- fakeInfos
isoDate: '2015-11-12T21:16:39.000Z'
2021-02-07 17:50:54 +01:00
```