import { JSDOM } from "jsdom";
import sanitizeHtml from "sanitize-html";
export function markdownLinkRegex(url) {
return new RegExp(
`(\\[).*?(\\]\\(https:\\/\\/${url.replaceAll(".", "\\.")}\\))`,
"i",
);
}
export async function getJsonFeedItemTitle(feedUrl) {
const res = await fetch(feedUrl);
const data = await res.json();
const post = data.items[0];
const { title, image } = post;
return image ? `${title} ` : title;
}
export async function getJsonFeedItemContent(feedUrl) {
const res = await fetch(feedUrl);
const data = await res.json();
const post = data.items[0];
const { content_html, image } = post;
const title = sanitizeHtml(content_html, {
allowedTags: [],
allowedAttributes: {},
})?.trim();
return image ? `${title} ` : title;
}
export async function getMalojaScrobble(malojaUrl) {
const res = await fetch(`${malojaUrl}/apis/mlj_1/scrobbles?perpage=1`);
const data = await res.json();
const scrobble = data.list[0];
const {
title,
album: { artists },
} = scrobble.track;
return `${title}
by ${artists.join(", ")}`;
}
export async function getLetterboxdActivity(username) {
const res = await fetch(`https://letterboxd.com/${username}/rss/`);
const data = await res.text();
const dom = new JSDOM(data);
const item = dom.window.document.querySelector("item");
const title = item.querySelector("title").textContent;
const image = item.querySelector("description > img").src;
return `${title} `;
}