feat(podcast): Add Podcast 2.0 support and remove external feed dependency; implement internal RSS/Atom/JSON generators and update tests/README
This commit is contained in:
37
readme.md
37
readme.md
@@ -8,7 +8,7 @@
|
||||
|
||||
- 🎯 **Full TypeScript Support** - Complete type definitions for all feed formats
|
||||
- 📡 **Multiple Feed Formats** - RSS 2.0, Atom 1.0, JSON Feed 1.0, and Podcast RSS
|
||||
- 🎙️ **Modern Podcast Support** - iTunes tags, Podcast namespace (chapters, transcripts, funding, persons)
|
||||
- 🎙️ **Modern Podcast Support** - iTunes tags, Podcast 2.0 namespace (guid, medium, locked, persons, transcripts, funding)
|
||||
- 🔒 **Built-in Validation** - Comprehensive validation for URLs, emails, domains, and timestamps
|
||||
- 🛡️ **Security First** - XSS prevention, content sanitization, and secure defaults
|
||||
- 📦 **Zero Config** - Works out of the box with sensible defaults
|
||||
@@ -72,6 +72,7 @@ const podcast = smartfeed.createPodcastFeed({
|
||||
company: 'Tech Media Inc',
|
||||
companyEmail: 'podcast@example.com',
|
||||
companyDomain: 'https://example.com',
|
||||
// iTunes tags
|
||||
itunesCategory: 'Technology',
|
||||
itunesAuthor: 'John Host',
|
||||
itunesOwner: {
|
||||
@@ -80,7 +81,12 @@ const podcast = smartfeed.createPodcastFeed({
|
||||
},
|
||||
itunesImage: 'https://example.com/artwork.jpg',
|
||||
itunesExplicit: false,
|
||||
itunesType: 'episodic'
|
||||
itunesType: 'episodic',
|
||||
// Podcast 2.0 tags
|
||||
podcastGuid: '92f49cf0-db3e-5c17-8f11-9c5bd9e1f7ec', // Permanent GUID
|
||||
podcastMedium: 'podcast', // or 'music', 'video', 'film', 'audiobook', 'newsletter', 'blog'
|
||||
podcastLocked: true, // Prevent unauthorized imports
|
||||
podcastLockOwner: 'john@example.com'
|
||||
});
|
||||
|
||||
// Add an episode
|
||||
@@ -182,7 +188,7 @@ Creates a standard feed (RSS/Atom/JSON).
|
||||
|
||||
Creates a podcast feed with iTunes and Podcast namespace support.
|
||||
|
||||
**Additional Options:**
|
||||
**iTunes Options:**
|
||||
- `itunesCategory` (string) - iTunes category
|
||||
- `itunesSubcategory` (string, optional) - iTunes subcategory
|
||||
- `itunesAuthor` (string) - Podcast author
|
||||
@@ -194,6 +200,12 @@ Creates a podcast feed with iTunes and Podcast namespace support.
|
||||
- `copyright` (string, optional) - Custom copyright
|
||||
- `language` (string, optional) - Language code (default: 'en')
|
||||
|
||||
**Podcast 2.0 Options:**
|
||||
- `podcastGuid` (string) - **Required.** Globally unique identifier (GUID) for the podcast
|
||||
- `podcastMedium` ('podcast' | 'music' | 'video' | 'film' | 'audiobook' | 'newsletter' | 'blog', optional) - Content medium type
|
||||
- `podcastLocked` (boolean, optional) - Prevents unauthorized podcast imports (e.g., to other platforms)
|
||||
- `podcastLockOwner` (string, optional) - Email of who can unlock (required if `podcastLocked` is true)
|
||||
|
||||
#### `parseFeedFromUrl(url: string): Promise<ParsedFeed>`
|
||||
|
||||
Parses an RSS or Atom feed from a URL.
|
||||
@@ -312,6 +324,25 @@ For podcast feeds, artwork should be:
|
||||
- JPG or PNG format
|
||||
- Maximum 512 KB file size (Apple Podcasts requirement)
|
||||
|
||||
### Podcast 2.0 Compatibility
|
||||
|
||||
The library fully supports the [Podcast 2.0 namespace](https://github.com/Podcastindex-org/podcast-namespace), making your feeds compatible with modern podcast platforms like:
|
||||
|
||||
- **Podcast Index** - The open podcast directory
|
||||
- **Castopod** - Open-source podcast hosting platform
|
||||
- **Podverse** - Open-source podcast app
|
||||
- And other Podcast 2.0-compliant apps
|
||||
|
||||
**Key Podcast 2.0 Features:**
|
||||
- `podcast:guid` - Permanent unique identifier for your podcast
|
||||
- `podcast:medium` - Declare if your feed is a podcast, music, video, etc.
|
||||
- `podcast:locked` - Protect your podcast from unauthorized imports
|
||||
- `podcast:person` - List hosts, co-hosts, and guests with rich metadata
|
||||
- `podcast:transcript` - Link to transcript files in various formats
|
||||
- `podcast:funding` - Add donation/support links for your listeners
|
||||
|
||||
These features are included in the RSS export when you use `exportPodcastRss()`.
|
||||
|
||||
## TypeScript Support
|
||||
|
||||
Full TypeScript definitions are included. Import types as needed:
|
||||
|
||||
Reference in New Issue
Block a user