2.0.0 • Published 8 years ago
podcast2 v2.0.0
Podcast RSS for Node 
Fast and simple Podcast RSS generator/builder for Node projects. Supports enclosures and GeoRSS.
An updated version of node-podcast.
Install
npm install podcast2Usage
Create a new feed
const podcast = require('podcast2')
const feedXml = podcast(feedOptions, feedItems)feedOptions
titlestring Title of your site or feeddescriptionoptional string A short description of the feed.generatoroptional string Feed generator.feed_urlurl string Url to the rss feed.site_urlurl string Url to the site that the feed is for.image_urloptional url string Small image for feed readers to use.docsoptional url string Url to documentation on this feed.authorstring Who owns this feed.managingEditoroptional string Who manages content in this feed.webMasteroptional string Who manages feed availability and technical support.copyrightoptional string Copyright information for this feed.languageoptional string The language of the content of this feed.categoriesoptional array of strings One or more categories this feed belongs to.pubDateoptional date object or date string The publication date for content in the feedttloptional integer Number of minutes feed can be cached before refreshing from source.itunesAuthoroptional string (iTunes specific) author of the podcastitunesSubtitleoptional string (iTunes specific) subtitle for iTunes listingitunesSummaryoptional string (iTunes specific) summary for iTunes listingitunesOwneroptional object (iTunes specific) owner of the podcastnamestringemailstring
itunesExplicitoptional boolean (iTunes specific) specifies if the podcast contains explicit contentitunesCategoryoptional array of objects (iTunes specific) Categories for iTunestextstringsubcatsarray of objects A recursive array of these category objects
itunesImageoptional string (iTunes specific) link to an image for the podcastindentoptional boolean Whether or not the output should be indented with a tab
feedItems
An array of any number of item objects.
Item object properties:
titlestring Title of this particular item.descriptionstring Content for the item. Can contain html but link and image urls must be absolute path including hostname.urlurl string Url to the item. This could be a blog entry.guidunique string A unique string feed readers use to know if an item is new or has already been seen. If you use a guid never change it. If you don't provide a guid then your item urls must be unique.categoriesoptional array of strings If provided, each array item will be added as a category elementauthoroptional string If included it is the name of the item's creator. If not provided the item author will be the same as the feed author. This is typical except on multi-author blogs.datedate object or date string The date and time of when the item was created. Feed readers use this to determine the sort order. Some readers will also use it to determine if the content should be presented as unread.latoptional number The latitude coordinate of the item.longoptional number The longitude coordinate of the item.enclosureoptional object Attach a multimedia file to this item.urlstring Url to the related file.fileoptional string Path to the related file on the filesystem. Used to fill out size and mime information.sizeoptional number Number of bytes in the file. The length field will default to 0 if thesizeorfilefields have not been set.mimeoptional string Mime type of the file. Will be guessed from the url if this parameter is not set.
itunesAuthoroptional string (iTunes specific) author of the podcastitunesExplicitoptional boolean (iTunes specific) specifies if the podcast contains explicit contentitunesSubtitleoptional string (iTunes specific) subtitle for iTunes listingitunesSummaryoptional string (iTunes specific) summary for iTunes listingitunesDurationoptional number (iTunes specific) duration of the podcast item in secondsitunesImageoptional string (iTunes specific) link to an image for the item
Example Usage
const podcast = require('podcast2')
const xml = podcast({
title: 'title',
description: 'description',
feed_url: 'http://example.com/rss.xml',
site_url: 'http://example.com',
image_url: 'http://example.com/icon.png',
docs: 'http://example.com/rss/docs.html',
author: 'Joseph Dykstra',
managingEditor: 'Joseph Dykstra',
webMaster: 'Joseph Dykstra',
copyright: '2013 Joseph Dykstra',
language: 'en',
categories: ['Category 1','Category 2','Category 3'],
pubDate: 'May 20, 2012 04:00:00 GMT',
ttl: '60',
itunesAuthor: 'Joseph Dykstra',
itunesSubtitle: 'I am a sub title',
itunesSummary: 'I am a summary',
itunesOwner: { name: 'Joseph Dykstra', email:'example@example.com' },
itunesExplicit: false,
itunesCategory: {
text: "Entertainment",
subcats: [{
text: "Television"
}]
},
itunesImage: 'http://link.to/image.png'
}, [{
title: 'item title',
description: 'use this for the content. It can include html.',
url: 'http://example.com/article4?this&that', // link to the item
guid: '1123', // optional - defaults to url
categories: ['Category 1','Category 2','Category 3','Category 4'], // optional - array of item categories
author: 'Guest Author', // optional - defaults to feed author property
date: 'May 27, 2012', // any format that js Date can parse.
lat: 33.417974, //optional latitude field for GeoRSS
long: -111.933231, //optional longitude field for GeoRSS
enclosure : {url:'...', file:'path-to-file'}, // optional enclosure
itunesAuthor: 'Joseph Dykstra',
itunesExplicit: false,
itunesSubtitle: 'I am a sub title',
itunesSummary: 'I am a summary',
itunesDuration: 12345,
itunesKeywords: ['javascript','podcast']
}])Tests
Tests included use Tape. Use npm test to run the tests.
npm testCredit / License
I forked the node-podcast module, because it wasn't passing its tests, and the install was failing.