Skip to content

Universal feed parser for any format: RSS/Atom, JSON Feed, and HTML.

License

Notifications You must be signed in to change notification settings

gorango/x-feed-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

(X) Feed Parser

Types Size

Parse RSS, Atom, JSON Feed, and HTML into a common JSON format. Complete with XML decoding, HTML sanitization, date standardization, media and metadata extraction.

This project is based on the rbren/rss-parser upgraded to ESM with JSDoc types and the addition of features above.

Install

npm install x-feed-parser

Usage

import { parse } from 'x-feed-parser'

let rawFeedString // XML (RSS/Atom), JSON Feed, or HTML
const feed = parse(rawFeedString)

Running the code above with a valid rawFeedString returns a response with the following schema:

{
	type: 'rss' | 'atom' | 'json' | 'html'
	lang?: string
	title?: string
	description?: string
	feedUrl?: string
	siteUrl?: string
	imageUrl?: string
	etag?: string
	updatedAt?: string
	items?: [{
		id?: string
		url?: string
		lang?: string
		title?: string
		summary?: string
		author?: string
		content?: string
		snippet?: string
		categories?: string[]
		commentsUrl?: string
		imageUrl?: string
		media?: [{
			url: string
			length?: number
			type?: string
		}]
		createdAt?: string
		updatedAt?: string
	}]
	meta?: {
		[key: string]: any // youtube, itunes metadata
	}
}

See the test/ folder for complete usage examples.

API

This library exports the parse function, which is a thin wrapper for parseXmlFeed, parseJsonFeed, and parseHtmlFeed.

parse(str)

Identifies the filetype (xml, json, or html) and assigns the appropriate parser.

import { parse } from 'x-feed-parser'

parseXmlFeed(str)

Handler for RSS (v0.9 - v2.0) and Atom feeds.

import { parseXmlFeed } from 'x-feed-parser'

parseJsonFeed(str)

Handler for JSON feeds (v1).

import { parseJsonFeed } from 'x-feed-parser'

parseHtmlFeed(str)

WIP! Extracts feed data from an HTML document using rehype-extract-meta and rehype-extract-posts.

import { parseHtmlFeed } from 'x-feed-parser'

License

MIT © Goran Spasojevic

About

Universal feed parser for any format: RSS/Atom, JSON Feed, and HTML.

Topics

Resources

License

Stars

Watchers

Forks