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> & <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
|
|
|
```
|