feedsmith
Version:
Fast, all‑in‑one feed parser and generator for RSS, Atom, RDF, and JSON Feed, with support for Podcast, iTunes, Dublin Core, and OPML files.
94 lines (93 loc) • 4.61 kB
JavaScript
const require_utils = require("../../../common/utils.cjs");
//#region src/namespaces/rawvoice/parse/utils.ts
const parseRating = (value) => {
return require_utils.trimObject({
value: require_utils.parseString(require_utils.retrieveText(value)),
tv: require_utils.parseString(value?.["@tv"]),
movie: require_utils.parseString(value?.["@movie"])
});
};
const parseLiveStream = (value) => {
return require_utils.trimObject({
url: require_utils.parseString(require_utils.retrieveText(value)),
schedule: require_utils.parseDate(value?.["@schedule"]),
duration: require_utils.parseString(value?.["@duration"]),
type: require_utils.parseString(value?.["@type"])
});
};
const parsePoster = (value) => {
if (!require_utils.isObject(value)) return;
return require_utils.trimObject({ url: require_utils.parseString(value["@url"]) });
};
const parseAlternateEnclosure = (value) => {
if (!require_utils.isObject(value)) return;
return require_utils.trimObject({
src: require_utils.parseString(value["@src"]),
type: require_utils.parseString(value["@type"]),
length: require_utils.parseNumber(value["@length"])
});
};
const parseSubscribe = (value) => {
if (!require_utils.isObject(value)) return;
const subscribe = {};
for (const key in value) if (key.startsWith("@")) {
const attrName = key.slice(1);
const attrValue = require_utils.parseString(value[key]);
if (attrValue) subscribe[attrName] = attrValue;
}
return require_utils.trimObject(subscribe);
};
const parseMetamark = (value) => {
if (!require_utils.isObject(value)) return;
return require_utils.trimObject({
type: require_utils.parseString(value["@type"]),
link: require_utils.parseString(value["@link"]),
position: require_utils.parseNumber(value["@position"]),
duration: require_utils.parseNumber(value["@duration"]),
value: require_utils.parseString(require_utils.retrieveText(value))
});
};
const parseDonate = (value) => {
if (!require_utils.isObject(value)) return;
return require_utils.trimObject({
href: require_utils.parseString(value["@href"]),
value: require_utils.parseString(require_utils.retrieveText(value))
});
};
const retrieveItem = (value) => {
if (!require_utils.isObject(value)) return;
return require_utils.trimObject({
poster: require_utils.parseSingularOf(value["rawvoice:poster"], parsePoster),
isHd: require_utils.parseSingularOf(value["rawvoice:ishd"], (value) => require_utils.parseYesNoBoolean(require_utils.retrieveText(value))),
embed: require_utils.parseSingularOf(value["rawvoice:embed"], (value) => require_utils.parseString(require_utils.retrieveText(value))),
webm: require_utils.parseSingularOf(value["rawvoice:webm"], parseAlternateEnclosure),
mp4: require_utils.parseSingularOf(value["rawvoice:mp4"], parseAlternateEnclosure),
metamarks: require_utils.parseArrayOf(value["rawvoice:metamark"], parseMetamark)
});
};
const retrieveFeed = (value) => {
if (!require_utils.isObject(value)) return;
return require_utils.trimObject({
rating: require_utils.parseSingularOf(value["rawvoice:rating"], parseRating),
liveEmbed: require_utils.parseSingularOf(value["rawvoice:liveembed"], (value) => require_utils.parseString(require_utils.retrieveText(value))),
flashLiveStream: require_utils.parseSingularOf(value["rawvoice:flashlivestream"], parseLiveStream),
httpLiveStream: require_utils.parseSingularOf(value["rawvoice:httplivestream"], parseLiveStream),
shoutcastLiveStream: require_utils.parseSingularOf(value["rawvoice:shoutcastlivestream"], parseLiveStream),
liveStream: require_utils.parseSingularOf(value["rawvoice:livestream"], parseLiveStream),
location: require_utils.parseSingularOf(value["rawvoice:location"], (value) => require_utils.parseString(require_utils.retrieveText(value))),
frequency: require_utils.parseSingularOf(value["rawvoice:frequency"], (value) => require_utils.parseString(require_utils.retrieveText(value))),
mycast: require_utils.parseSingularOf(value["rawvoice:mycast"], (value) => require_utils.parseYesNoBoolean(require_utils.retrieveText(value))),
subscribe: require_utils.parseSingularOf(value["rawvoice:subscribe"], parseSubscribe),
donate: require_utils.parseSingularOf(value["rawvoice:donate"], parseDonate)
});
};
//#endregion
exports.parseAlternateEnclosure = parseAlternateEnclosure;
exports.parseDonate = parseDonate;
exports.parseLiveStream = parseLiveStream;
exports.parseMetamark = parseMetamark;
exports.parsePoster = parsePoster;
exports.parseRating = parseRating;
exports.parseSubscribe = parseSubscribe;
exports.retrieveFeed = retrieveFeed;
exports.retrieveItem = retrieveItem;