UNPKG

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.

298 lines (297 loc) 13.2 kB
const require_utils = require("../../../common/utils.cjs"); //#region src/namespaces/media/parse/utils.ts const parseRating = (value) => { return require_utils.trimObject({ value: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value), scheme: require_utils.parseString(value?.["@scheme"]) }); }; const retrieveRatings = (value) => { if (!require_utils.isObject(value)) return; if (value["media:rating"]) return require_utils.parseArrayOf(value["media:rating"], parseRating); if (value["media:adult"]) return [{ value: require_utils.parseBoolean(require_utils.retrieveText(value["media:adult"])) ? "adult" : "nonadult", scheme: "urn:simple" }]; }; const parseTitleOrDescription = (value) => { return require_utils.trimObject({ value: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value), type: require_utils.parseString(value?.["@type"]) }); }; const parseThumbnail = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ url: require_utils.parseString(value["@url"]), height: require_utils.parseNumber(value["@height"]), width: require_utils.parseNumber(value["@width"]), time: require_utils.parseString(value["@time"]) }); }; const parseCategory = (value) => { return require_utils.trimObject({ name: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value), scheme: require_utils.parseString(value?.["@scheme"]), label: require_utils.parseString(value?.["@label"]) }); }; const parseHash = (value) => { return require_utils.trimObject({ value: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value), algo: require_utils.parseString(value?.["@algo"]) }); }; const parsePlayer = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ url: require_utils.parseString(value["@url"]), height: require_utils.parseNumber(value["@height"]), width: require_utils.parseNumber(value["@width"]) }); }; const parseCredit = (value) => { return require_utils.trimObject({ value: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value), role: require_utils.parseString(value?.["@role"]), scheme: require_utils.parseString(value?.["@scheme"]) }); }; const parseCopyright = (value) => { return require_utils.trimObject({ value: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value), url: require_utils.parseString(value?.["@url"]) }); }; const parseText = (value) => { return require_utils.trimObject({ value: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value), type: require_utils.parseString(value?.["@type"]), lang: require_utils.parseString(value?.["@lang"]), start: require_utils.parseString(value?.["@start"]), end: require_utils.parseString(value?.["@end"]) }); }; const parseRestriction = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ value: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value), relationship: require_utils.parseString(value["@relationship"]), type: require_utils.parseString(value["@type"]) }); }; const parseCommunity = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ starRating: require_utils.parseSingularOf(value["media:starrating"], parseStarRating), statistics: require_utils.parseSingularOf(value["media:statistics"], parseStatistics), tags: require_utils.parseSingularOf(value["media:tags"], parseTags) }); }; const parseStarRating = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ average: require_utils.parseNumber(value["@average"]), count: require_utils.parseNumber(value["@count"]), min: require_utils.parseNumber(value["@min"]), max: require_utils.parseNumber(value["@max"]) }); }; const parseStatistics = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ views: require_utils.parseNumber(value["@views"]), favorites: require_utils.parseNumber(value["@favorites"]) }); }; const parseTags = (value) => { return require_utils.parseCsvOf(value, (segment) => { const split = segment.split(":"); return { name: require_utils.parseString(split[0]) ?? "", weight: require_utils.parseNumber(split[1]) ?? 1 }; }); }; const parseComments = (value) => { return require_utils.parseArrayOf(value?.["media:comment"], (value) => require_utils.parseString(require_utils.retrieveText(value))); }; const parseEmbed = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ url: require_utils.parseString(value["@url"]), width: require_utils.parseNumber(value["@width"]), height: require_utils.parseNumber(value["@height"]), params: require_utils.parseArrayOf(value["media:param"], parseParam) }); }; const parseParam = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ name: require_utils.parseString(value["@name"]), value: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value) }); }; const parseResponses = (value) => { return require_utils.parseArrayOf(value?.["media:response"], (value) => require_utils.parseString(require_utils.retrieveText(value))); }; const parseBackLinks = (value) => { return require_utils.parseArrayOf(value?.["media:backlink"], (value) => require_utils.parseString(require_utils.retrieveText(value))); }; const parseStatus = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ state: require_utils.parseString(value["@state"]), reason: require_utils.parseString(value["@reason"]) }); }; const parsePrice = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ type: require_utils.parseString(value["@type"]), info: require_utils.parseString(value["@info"]), price: require_utils.parseNumber(value["@price"]), currency: require_utils.parseString(value["@currency"]) }); }; const parseLicense = (value) => { return require_utils.trimObject({ name: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value), type: require_utils.parseString(value?.["@type"]), href: require_utils.parseString(value?.["@href"]) }); }; const parseSubTitle = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ type: require_utils.parseString(value["@type"]), lang: require_utils.parseString(value["@lang"]), href: require_utils.parseString(value["@href"]) }); }; const parsePeerLink = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ type: require_utils.parseString(value["@type"]), href: require_utils.parseString(value["@href"]) }); }; const parseRights = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ status: require_utils.parseString(value["@status"]) }); }; const parseScene = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ title: require_utils.parseSingularOf(value.scenetitle, (value) => require_utils.parseString(require_utils.retrieveText(value))), description: require_utils.parseSingularOf(value.scenedescription, (value) => require_utils.parseString(require_utils.retrieveText(value))), startTime: require_utils.parseSingularOf(value.scenestarttime, (value) => require_utils.parseString(require_utils.retrieveText(value))), endTime: require_utils.parseSingularOf(value.sceneendtime, (value) => require_utils.parseString(require_utils.retrieveText(value))) }); }; const parseScenes = (value) => { return require_utils.parseArrayOf(value?.["media:scene"], parseScene); }; const parseLocation = (value) => { if (require_utils.isNonEmptyStringOrNumber(value) || require_utils.isObject(value)) return require_utils.trimObject({ description: ((value) => require_utils.parseString(require_utils.retrieveText(value)))(value) }); }; const retrieveCommonElements = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ ratings: retrieveRatings(value), title: require_utils.parseSingularOf(value["media:title"], parseTitleOrDescription), description: require_utils.parseSingularOf(value["media:description"], parseTitleOrDescription), keywords: require_utils.parseSingularOf(value["media:keywords"], (value) => require_utils.parseCsvOf(require_utils.retrieveText(value), require_utils.parseString)), thumbnails: require_utils.parseArrayOf(value["media:thumbnail"], parseThumbnail), categories: require_utils.parseArrayOf(value["media:category"], parseCategory), hashes: require_utils.parseArrayOf(value["media:hash"], parseHash), player: require_utils.parseSingularOf(value["media:player"], parsePlayer), credits: require_utils.parseArrayOf(value["media:credit"], parseCredit), copyright: require_utils.parseSingularOf(value["media:copyright"], parseCopyright), texts: require_utils.parseArrayOf(value["media:text"], parseText), restrictions: require_utils.parseArrayOf(value["media:restriction"], parseRestriction), community: require_utils.parseSingularOf(value["media:community"], parseCommunity), comments: require_utils.parseSingularOf(value["media:comments"], parseComments), embed: require_utils.parseSingularOf(value["media:embed"], parseEmbed), responses: require_utils.parseSingularOf(value["media:responses"], parseResponses), backLinks: require_utils.parseSingularOf(value["media:backlinks"], parseBackLinks), status: require_utils.parseSingularOf(value["media:status"], parseStatus), prices: require_utils.parseArrayOf(value["media:price"], parsePrice), licenses: require_utils.parseArrayOf(value["media:license"], parseLicense), subTitles: require_utils.parseArrayOf(value["media:subtitle"], parseSubTitle), peerLinks: require_utils.parseArrayOf(value["media:peerlink"], parsePeerLink), locations: require_utils.parseArrayOf(value["media:location"], parseLocation), rights: require_utils.parseSingularOf(value["media:rights"], parseRights), scenes: require_utils.parseSingularOf(value["media:scenes"], parseScenes) }); }; const parseContent = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ url: require_utils.parseString(value["@url"]), fileSize: require_utils.parseNumber(value["@filesize"]), type: require_utils.parseString(value["@type"]), medium: require_utils.parseString(value["@medium"]), isDefault: require_utils.parseBoolean(value["@isdefault"]), expression: require_utils.parseString(value["@expression"]), bitrate: require_utils.parseNumber(value["@bitrate"]), framerate: require_utils.parseNumber(value["@framerate"]), samplingrate: require_utils.parseNumber(value["@samplingrate"]), channels: require_utils.parseNumber(value["@channels"]), duration: require_utils.parseNumber(value["@duration"]), height: require_utils.parseNumber(value["@height"]), width: require_utils.parseNumber(value["@width"]), lang: require_utils.parseString(value["@lang"]), ...retrieveCommonElements(value) }); }; const parseGroup = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ contents: require_utils.parseArrayOf(value["media:content"], parseContent), ...retrieveCommonElements(value) }); }; const retrieveItemOrFeed = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ groups: require_utils.parseArrayOf(value["media:group"], parseGroup), contents: require_utils.parseArrayOf(value["media:content"], parseContent), ...retrieveCommonElements(value), group: require_utils.parseSingularOf(value["media:group"], parseGroup) }); }; //#endregion exports.parseBackLinks = parseBackLinks; exports.parseCategory = parseCategory; exports.parseComments = parseComments; exports.parseCommunity = parseCommunity; exports.parseContent = parseContent; exports.parseCopyright = parseCopyright; exports.parseCredit = parseCredit; exports.parseEmbed = parseEmbed; exports.parseGroup = parseGroup; exports.parseHash = parseHash; exports.parseLicense = parseLicense; exports.parseLocation = parseLocation; exports.parseParam = parseParam; exports.parsePeerLink = parsePeerLink; exports.parsePlayer = parsePlayer; exports.parsePrice = parsePrice; exports.parseRating = parseRating; exports.parseResponses = parseResponses; exports.parseRestriction = parseRestriction; exports.parseRights = parseRights; exports.parseScene = parseScene; exports.parseScenes = parseScenes; exports.parseStarRating = parseStarRating; exports.parseStatistics = parseStatistics; exports.parseStatus = parseStatus; exports.parseSubTitle = parseSubTitle; exports.parseTags = parseTags; exports.parseText = parseText; exports.parseThumbnail = parseThumbnail; exports.parseTitleOrDescription = parseTitleOrDescription; exports.retrieveCommonElements = retrieveCommonElements; exports.retrieveItemOrFeed = retrieveItemOrFeed; exports.retrieveRatings = retrieveRatings;