From 61d0693ed7afbab81dd670aac56ad2bdfa14814d Mon Sep 17 00:00:00 2001 From: Starbeamrainbowlabs Date: Sat, 18 Mar 2023 01:51:34 +0000 Subject: [PATCH] tentative fix for #14, but needs confirming --- src/lib/do_feeds.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/lib/do_feeds.js b/src/lib/do_feeds.js index 679ff74..64f8072 100644 --- a/src/lib/do_feeds.js +++ b/src/lib/do_feeds.js @@ -1,5 +1,6 @@ const fs = require("fs"); const path = require("path"); +const url = require("url"); const striptags = require("striptags"); @@ -12,6 +13,12 @@ const DESCRIPTION_LENGTH = 200; global.feed_items = null; global.feed_authors_error = null; +function url_basename(url) { + const obj = new URL(url); + obj.pathname = ""; + return obj.toString(); +} + function normalise_link_list(links) { if(links instanceof Array) { let links_temp = links.filter(link => link.rel != "self"); @@ -95,12 +102,12 @@ async function do_feeds() { item.media_image = `./images/post.svg`; if(typeof(item["media:content"]) == "object" && item["media:content"].medium === "image") - item.media_image = item["media:content"].url; + item.media_image = new URL(item["media:content"].url, url_basename(item.parent.link)).toString(); else { - // BUG: This is bad practice! We should use a propere HTML parser instead. + // BUG: This is bad practice! We should use a proper HTML parser instead. let temp_image = item.content.match(/]+?\bsrc=["']([^>]+?)["'][^>]+?\/?>/); if(temp_image !== null) - item.media_image = temp_image[1]; + item.media_image = new URL(temp_image[1], url_basename(item.parent.link)).toString(); } item.media_image_notfound = item.media_image == `./images/post.svg`; if(!item.media_image_notfound)