- function isPostGallery(p) { return (p.is_gallery && p.is_gallery == true); } - function isPostImage(p) { const imgRe = /\.(png|jpg|jpeg|gif|webp|bmp|tiff|svg)$/i; return (p.post_hint == "image" && p.thumbnail && p.thumbnail != "self" && p.thumbnail != "default") || imgRe.test(p.url); } - function postThumbnail(p) { if (p.over_18) { return "/nsfw.svg"; } else if (p.thumbnail == "spoiler") { return "/spoiler.svg"; } else if (p.thumbnail == "image" || p.thumbnail == "") { return p.url; } else { return p.thumbnail; } } - function isPostVideo(p) { return (p.post_hint == "hosted:video"); } - function isPostLink(p) { return (p.post_hint == "link"); } - function imgExt(p, id) { var metadata = p.media_metadata; if (metadata[id].status == 'valid') { return stripPrefix(metadata[id].m, "image/"); } else { // dosent matter return 'jpg'; } } - function postGalleryItems(p) { if (p.gallery_data && p.gallery_data.items) { return p.gallery_data.items.map((item, idx) => ({ id: item.media_id, url: `https://i.redd.it/${item.media_id}.${imgExt(p, item.media_id)}`, total: p.gallery_data.items.length, idx: idx+1, })); } else { return null; } } - function convertInlineImageLinks(html) { // Find all anchors that href to preview.redd.it, i.redd.it, i.imgur.com // and contain just a link to the same href const expression = /\1?<\/a>/g; const matches = html.matchAll(expression); var result = html; matches.forEach((match) => { // Replace each occurrence with an actual img tag result = result.replace(match[0], ''); }) return result; } - function decodePostVideoUrls(p) { // Video URLs have querystring separators that are HTML-encoded, so replace them. const expression = /&/g; var hls_url = p.secure_media && p.secure_media.reddit_video && p.secure_media.reddit_video.hls_url ? p.secure_media.reddit_video.hls_url.replace(expression, '&') : ''; var dash_url = p.secure_media && p.secure_media.reddit_video && p.secure_media.reddit_video.dash_url ? p.secure_media.reddit_video.dash_url.replace(expression, '&') : ''; var fallback_url = p.secure_media && p.secure_media.reddit_video && p.secure_media.reddit_video.fallback_url ? p.secure_media.reddit_video.fallback_url.replace(expression, '&') : ''; var scrubber_url = p.secure_media && p.secure_media.reddit_video && p.secure_media.reddit_video.scrubber_media_url ? p.secure_media.reddit_video.scrubber_media_url.replace(expression, '&') : ''; var poster_url = p.preview && p.preview.images ? p.preview.images[0].source.url.replace(expression, '&') : ''; return [hls_url, dash_url, fallback_url, scrubber_url, poster_url]; }