Neutralize Pesky Miscreants

    react-native-rss-parser
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/react-native-rss-parser package

    1.5.1 • Public • Published

    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.

    Install

    npm i react-native-rss-parser

    DownloadsWeekly Downloads

    5,919

    Version

    1.5.1

    License

    MIT

    Unpacked Size

    26.1 kB

    Total Files

    10

    Last publish

    Collaborators

    • jameslawler