Skip to content

jameslawler/react-native-rss-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-rss-parser

React Native compatible RSS parser

npm version Build Status

Parse RSS data into a simple object structure. Currently supports;

  • RSS 2.0 specification
  • Atom 1.0 specification
  • Itunes elements for both RSS 2.0 and Atom 1.0 feeds

Installation

npm install react-native-rss-parser --save

Usage example

import * as rssParser from 'react-native-rss-parser'; return fetch('http://www.nasa.gov/rss/dyn/breaking_news.rss') .then((response) => response.text()) .then((responseData) => rssParser.parse(responseData)) .then((rss) => { console.log(rss.title); console.log(rss.items.length); });

Parsed model

{ type: undefined, // either `rss-v2` or `atom-v1` title: undefined, // title of the channel links: [{ url: undefined, // url of the channel rel: undefined // type of url (eg. alternate) }], description: undefined, // description of the channel language: undefined, // language of the channel in `en-us` copyright: undefined, // copyright information about the channel authors: [{ name: undefined // channel author names }], lastUpdated: undefined, // last updated date for the channel lastPublished: undefined, // last published date for the channel categories: [{ name: undefined // categories the channel belong too }], image: { url: undefined, // channel image url title: undefined, // channel image title description: undefined, // channel image description width: undefined, // channel image width (pixels) height: undefined // channel image height (pixels) }, itunes: { // itunes specific channel information author: [{ name: undefined // channel author names }], block: undefined, // if `yes` then the entire podcast isn't shown in iTunes directory categories: [{ name: undefined, // channel category names subCategories:[{ name: undefined // sub category names }] }], image: undefined, // channel image url explicit: undefined, // `yes`/`no` to indicate if channel contains explicit content complete: undefined, // `yes` indicates the feed won't publish any new items in the future newFeedUrl: undefined, // a url pointing to the new feed location owner: { name: undefined, // owner name of the channel email: undefined, // owner email address of the channel }, subtitle: undefined, // sub title of the channel summary: undefined, // summary of the channel }, items: [{ // list of items in the feed id: undefined, // item id title: undefined, // item title imageUrl: undefined, // item image url links: [{ url: undefined, // item link url rel: undefined // type of item link }], description: undefined, // item description content: undefined, // item HTML content categories: [{ name: undefined // categories the item belongs too }], authors: [{ name: undefined // item author names }], published: undefined, // item published date enclosures: [{ url: undefined, // item media url length: undefined, // item media length (bytes) mimeType: undefined // item media mime type (eg audio/mpeg) }], itunes: { // itunes specific item information authors: [{ name: undefined, // item author names }], block: undefined, // `yes` indicates the item won't be displayed in the iTunes directory duration: undefined, // HH:MM:SS length of the item explicit: undefined, // `yes`/`no` to indicate if item contains explicit content image: undefined, // image url for the item isClosedCaptioned: undefined, // `yes` indicates if the item contains closed captioning order: undefined, // item order number subtitle: undefined, // item subtitle summary: undefined, // item summary } }] }

Model mappings

Top Level elements

Parsed Value RSS v2.0 Atom v1.0
title title title
links link link
description description subtitle
language language
copyright copyright rights
authors managingEditor author
published pubDate published
updated lastBuildDate updated
categories category category
image image logo
items item entry

Item / Entry Level elements

Parsed Value RSS v2.0 Atom v1.0
id guid id
title title title
imageUrl icon
links link link
description description summary
content content:encoded content
categories category / dc:subject category
authors author / dc:creator contributor
published pubDate / dc:date published
enclosures enclosures link

CHANGELOG

1.5.1

  • Bug Fix: _this.getElementTextContentArray is not a function issue #16 (thanks to julianbragachi)

1.5.0

  • Updated xmldom to version 0.3.0
  • Change tests to use Jest to ensure refactoring did not break anything (using snapshot tests)
  • Updated entire codebase to use up-to-date JavaScript syntax (arrow functions, const & let instead of var)
  • Bug Fix: Atom v1 should return published date when no updated date available (thanks to Serra19)

Development setup

Clone this project from GitHub

npm install npm test

Bugs / feature requests

If you find any bugs or have a feature request, please create an issue in GitHub.

Contributing

  1. Fork it (https://github.com/jameslawler/react-native-rss-parser)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

License

Distributed under the MIT license. See LICENSE for more information.

About

React Native compatible package to parse RSS feeds

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5