npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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-parser

Features

  • 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 metadata

Serializing 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 feed

Working 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