diff --git a/utils.js b/utils.js
index c9fd645..2934128 100644
--- a/utils.js
+++ b/utils.js
@@ -41,24 +41,28 @@ export async function getRSSItemTitle(feedUrl) {
const dom = new JSDOM(data)
const item = dom.window.document.querySelector('item')
const title = item.querySelector('title').textContent
- return markdownCharEscape(
+ const link = item.querySelector('link').textContent
+ const cleanTitle = markdownCharEscape(
sanitizeHtml(title, {
allowedTags: [],
allowedAttributes: {},
})?.trim(),
)
+ return { text: cleanTitle, url: link }
}
export async function getJsonFeedItemTitle(feedUrl, showImage = true) {
const res = await fetch(feedUrl)
const data = await res.json()
const post = data.items[0]
- const { title, image } = post
+ const { title, image, url } = post
const cleanTitle = markdownCharEscape(title)
- if (!showImage) {
- return cleanTitle
- }
- return image ? `${cleanTitle} ` : cleanTitle
+ const text = !showImage
+ ? cleanTitle
+ : image
+ ? `${cleanTitle} `
+ : cleanTitle
+ return { text, url }
}
export async function getJsonFeedItemContent(feedUrl, showImage = true) {
@@ -96,12 +100,13 @@ export async function getLetterboxdActivity(username, showImage = true) {
const dom = new JSDOM(data)
const item = dom.window.document.querySelector('item')
const title = item.querySelector('title').textContent
+ const link = item.querySelector('link').textContent
const cleanTitle = markdownCharEscape(title)
const image = item.querySelector('description > img').src
- if (!showImage) {
- return cleanTitle
- }
- return `${cleanTitle} `
+ const text = !showImage
+ ? cleanTitle
+ : `${cleanTitle} `
+ return { text, url: link }
}
export async function getTraktEpisode(username, id, showImage = true) {
@@ -112,11 +117,12 @@ export async function getTraktEpisode(username, id, showImage = true) {
const dom = new JSDOM(data)
const entry = dom.window.document.querySelector('entry')
const title = entry.querySelector('title').textContent
+ const link = entry.querySelector('link').getAttribute('href')
const cleanTitle = markdownCharEscape(title)
- if (!showImage) {
- return cleanTitle
- }
- return `${cleanTitle} `
+ const text = !showImage
+ ? cleanTitle
+ : `${cleanTitle} `
+ return { text, url: link }
}
export async function getTraktMovie(username, showImage = true) {
@@ -127,13 +133,17 @@ export async function getTraktMovie(username, showImage = true) {
const dom = new JSDOM(data)
const entry = dom.window.document.querySelector('entry')
const title = entry.querySelector('title').textContent
- return markdownCharEscape(title)
+ const link = entry.querySelector('link').getAttribute('href')
+ return { text: markdownCharEscape(title), url: link }
}
export async function getTraktEpisodeAndMovie(username, id, showImage = true) {
const episode = await getTraktEpisode(username, id, showImage)
const movie = await getTraktMovie(username, showImage)
- return `${episode}
and
${movie}`
+ return {
+ text: `${episode.text}
and
${movie.text}`,
+ url: `https://trakt.tv/users/${username}`,
+ }
}
export async function getReadingBooklogr(booklogrUrl, booklogrUser) {