Podcast feed parser, originally extracted from podcast index - https://github.com/Podcastindex-org/aggregator/tree/master/partytime. It is up to you, the consumer of this package, to fetch the feed which needs to be parsed. When fetching the feed YOU SHOULD INCLUDE A PROPER USER-AGENT. You can test by fetching and checking the description of https://podnews.net/rss
.
This package will also identify new namespace elements and call out the "phases" implemented by the feed in a pc20support
element.
npm install podcast-partytime
import fetch from "node-fetch";
import pt from "podcast-partytime";
// Check CORS support
pt.checkFeedByUri("https://www.spreaker.com/show/3128218/episodes/feed").then(console.log);
fetch("http://mp3s.nashownotes.com/pc20rss.xml", {
headers: {
"user-agent": "partytime/example",
}
})
.then((resp) => resp.text())
.then((xml) =>
console.log(
pt.checkFeedByObject({
uri: "http://mp3s.nashownotes.com/pc20rss.xml",
feedObject: pt.parseFeed(xml),
})
)
);
// Parse Feed
fetch("http://mp3s.nashownotes.com/pc20rss.xml", {
headers: {
"user-agent": "partytime/example",
}
})
.then((resp) => resp.text())
.then((xml) => console.log(pt.parseFeed(xml)));
const fetch = require("node-fetch");
const pt = require("podcast-partytime");
// Check CORS support
pt.checkFeedByUri("https://www.spreaker.com/show/3128218/episodes/feed").then(console.log);
fetch("http://mp3s.nashownotes.com/pc20rss.xml")
.then((resp) => resp.text())
.then((xml) =>
console.log(
pt.checkFeedByObject({
uri: "http://mp3s.nashownotes.com/pc20rss.xml",
feedObject: pt.parseFeed(xml),
})
)
);
// Parse Feed
fetch("http://mp3s.nashownotes.com/pc20rss.xml")
.then((resp) => resp.text())
.then((xml) => console.log(pt.parseFeed(xml)));
The sample feeds below were chosen for their varied nature. Including things like non-traditional titles, different publishers, and season usage.
- Pod Save America
- No Agenda
- This Week in Tech
- Launched
- Anatomy of Next
- Thomas Ferris Nicolaisen's rants
- Hip Hop Hangout Podcast
- Web 2.0
Update dependencies (person enum and valid license list) via yarn deps
or npm run deps
.