2025-12-18 01:57:14 +00:00
|
|
|
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}` : data.items[0].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;
|
|
|
|
|
}
|
2025-12-18 02:39:27 +00:00
|
|
|
|
|
|
|
|
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}<br />by ${artists.join(", ")}`;
|
|
|
|
|
}
|