2.3 KiB
2.3 KiB
rss
Parse, validate, discover, fetch, and build RSS 2.0 / Atom 1.0 feeds. Includes iTunes/Podcast extension support.
Processes
rss.Parse
Parse an RSS/Atom XML string into a Feed object. Auto-detects format.
var feed = Process("rss.Parse", xmlString);
// feed.format → "rss2.0" or "atom1.0"
// feed.title → "My Blog"
// feed.items → [{title, link, description, content, author, published, ...}]
// feed.podcast → {author, summary, image, ...} (nil for non-podcast feeds)
rss.Validate
Check if a string is valid RSS/Atom XML. Returns true on success, or an error description string.
var result = Process("rss.Validate", xmlString);
if (result !== true) {
console.log("Invalid: " + result);
}
rss.Fetch
Fetch a remote feed by URL. Supports gzip and conditional requests (ETag / Last-Modified).
// First fetch
var result = Process("rss.Fetch", "https://example.com/feed.xml");
// result.feed → parsed Feed object
// result.status_code → 200
// result.etag → "abc123"
// result.last_modified → "Wed, 01 Jan 2025 00:00:00 GMT"
// Conditional polling (saves bandwidth)
var result2 = Process("rss.Fetch", "https://example.com/feed.xml", {
etag: result.etag,
last_modified: result.last_modified,
});
// result2.not_modified → true (when 304)
// result2.feed → nil (when 304)
Options (second argument, optional):
| Field | Type | Default | Description |
|---|---|---|---|
| user_agent | string | "Yao-Robot/1.0" | Custom User-Agent |
| timeout | int | 30 | Request timeout in seconds |
| etag | string | ETag for If-None-Match | |
| last_modified | string | Value for If-Modified-Since |
rss.Discover
Extract feed URLs from HTML, Markdown, or plain text. No HTTP requests.
var links = Process("rss.Discover", htmlString);
// links → [{url: "https://example.com/feed.xml", title: "Blog", type: "rss"}]
rss.Build
Generate RSS or Atom XML from a Feed object.
// Build RSS 2.0 (default)
var xml = Process("rss.Build", feedObj);
// Build Atom 1.0
var xml = Process("rss.Build", feedObj, "atom");