@sesamy/podcast-parser
v1.11.0
Published
A library for parsing podcast RSS feeds to JSON and the Sesamy format. It also provides functionality to serialize podcast data back to RSS format.
Readme
podcast-parser
A library for parsing podcast RSS feeds to JSON and the Sesamy format. It also provides functionality to serialize podcast data back to RSS format.
Installation
npm install @sesamy/podcast-parserFeatures
- Parse podcast RSS feeds to JSON format
- Convert podcast feed data to Sesamy's format
- Serialize podcast data back to RSS format
- Support for special Sesamy elements like locked episodes and product information
- Handle podcast metadata including iTunes-specific attributes
- Process episode enclosures and durations
Usage
Parsing a Podcast Feed
Important: parseFeedToJson accepts an XML string as input, not a URL. You must fetch the RSS feed content yourself before parsing.
import { parseFeedToJson } from "@sesamy/podcast-parser";
// Fetch the RSS feed content first
const response = await fetch("https://example.com/podcast/feed.xml");
const xmlString = await response.text();
// Then parse the XML string
const podcastFeed = await parseFeedToJson(xmlString);
// Or directly parse an XML string
const rssXml =
'<?xml version="1.0" encoding="UTF-8"?><rss version="2.0">...</rss>';
const podcastFeedFromString = await parseFeedToJson(rssXml);Converting to Sesamy Format
import { parseFeedToSesamy } from "@sesamy/podcast-parser";
// Convert the JSON feed to Sesamy format
const sesamyPodcastFeed = parseFeedToSesamy(podcastFeed);
// This provides access to Sesamy-specific features like:
console.log(sesamyPodcastFeed.products); // Product information
console.log(sesamyPodcastFeed.episodes); // All episodes including locked ones
console.log(sesamyPodcastFeed.sesamy.isPrivate); // Sesamy-specific metadataSerializing Back to RSS
import { generateRssFeed } from "@sesamy/podcast-parser";
// Convert a Sesamy feed object back to RSS XML
const rssFeed = generateRssFeed(sesamyPodcastFeed);
console.log(rssFeed); // XML string with RSS feedWorking with Feed Data
The parsed feed contains standard podcast elements as well as Sesamy-specific features:
// Basic podcast information
console.log(sesamyPodcastFeed.title); // Podcast title
console.log(sesamyPodcastFeed.description); // Podcast description
console.log(sesamyPodcastFeed.image); // Podcast artwork
// Accessing episodes
sesamyPodcastFeed.episodes.forEach((episode) => {
console.log(episode.title); // Episode title
console.log(episode.publishDate); // Publication date
console.log(episode.url); // Audio file URL
console.log(episode.isLocked); // Whether this is a locked episode
console.log(episode.permissions); // Required permissions to access
});
// Working with products
sesamyPodcastFeed.products.forEach((product) => {
console.log(product.id); // Product ID
console.log(product.title); // Product title
console.log(product.price); // Product price
console.log(product.currency); // Product currency
console.log(product.purchaseType); // Type of purchase (Single or Recurring)
});License
MIT
