updated getRSSItemTitle, getJsonFeedItemTitle, getLetterboxdActivity, getTraktEpisode, and getTraktMovie to return structured objects with text and a direct link to the content
This commit is contained in:
parent
bbda450d01
commit
fdb39d2159
1 changed files with 26 additions and 16 deletions
42
utils.js
42
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} <br>and<br> ${movie}`
|
||||
return {
|
||||
text: `${episode.text} <br>and<br> ${movie.text}`,
|
||||
url: `https://trakt.tv/users/${username}`,
|
||||
}
|
||||
}
|
||||
|
||||
export async function getReadingBooklogr(booklogrUrl, booklogrUser) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue