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 dom = new JSDOM(data)
|
||||||
const item = dom.window.document.querySelector('item')
|
const item = dom.window.document.querySelector('item')
|
||||||
const title = item.querySelector('title').textContent
|
const title = item.querySelector('title').textContent
|
||||||
return markdownCharEscape(
|
const link = item.querySelector('link').textContent
|
||||||
|
const cleanTitle = markdownCharEscape(
|
||||||
sanitizeHtml(title, {
|
sanitizeHtml(title, {
|
||||||
allowedTags: [],
|
allowedTags: [],
|
||||||
allowedAttributes: {},
|
allowedAttributes: {},
|
||||||
})?.trim(),
|
})?.trim(),
|
||||||
)
|
)
|
||||||
|
return { text: cleanTitle, url: link }
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getJsonFeedItemTitle(feedUrl, showImage = true) {
|
export async function getJsonFeedItemTitle(feedUrl, showImage = true) {
|
||||||
const res = await fetch(feedUrl)
|
const res = await fetch(feedUrl)
|
||||||
const data = await res.json()
|
const data = await res.json()
|
||||||
const post = data.items[0]
|
const post = data.items[0]
|
||||||
const { title, image } = post
|
const { title, image, url } = post
|
||||||
const cleanTitle = markdownCharEscape(title)
|
const cleanTitle = markdownCharEscape(title)
|
||||||
if (!showImage) {
|
const text = !showImage
|
||||||
return cleanTitle
|
? cleanTitle
|
||||||
}
|
: image
|
||||||
return image ? `${cleanTitle} ` : cleanTitle
|
? `${cleanTitle} `
|
||||||
|
: cleanTitle
|
||||||
|
return { text, url }
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getJsonFeedItemContent(feedUrl, showImage = true) {
|
export async function getJsonFeedItemContent(feedUrl, showImage = true) {
|
||||||
|
|
@ -96,12 +100,13 @@ export async function getLetterboxdActivity(username, showImage = true) {
|
||||||
const dom = new JSDOM(data)
|
const dom = new JSDOM(data)
|
||||||
const item = dom.window.document.querySelector('item')
|
const item = dom.window.document.querySelector('item')
|
||||||
const title = item.querySelector('title').textContent
|
const title = item.querySelector('title').textContent
|
||||||
|
const link = item.querySelector('link').textContent
|
||||||
const cleanTitle = markdownCharEscape(title)
|
const cleanTitle = markdownCharEscape(title)
|
||||||
const image = item.querySelector('description > img').src
|
const image = item.querySelector('description > img').src
|
||||||
if (!showImage) {
|
const text = !showImage
|
||||||
return cleanTitle
|
? cleanTitle
|
||||||
}
|
: `${cleanTitle} `
|
||||||
return `${cleanTitle} `
|
return { text, url: link }
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getTraktEpisode(username, id, showImage = true) {
|
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 dom = new JSDOM(data)
|
||||||
const entry = dom.window.document.querySelector('entry')
|
const entry = dom.window.document.querySelector('entry')
|
||||||
const title = entry.querySelector('title').textContent
|
const title = entry.querySelector('title').textContent
|
||||||
|
const link = entry.querySelector('link').getAttribute('href')
|
||||||
const cleanTitle = markdownCharEscape(title)
|
const cleanTitle = markdownCharEscape(title)
|
||||||
if (!showImage) {
|
const text = !showImage
|
||||||
return cleanTitle
|
? cleanTitle
|
||||||
}
|
: `${cleanTitle} `
|
||||||
return `${cleanTitle} `
|
return { text, url: link }
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getTraktMovie(username, showImage = true) {
|
export async function getTraktMovie(username, showImage = true) {
|
||||||
|
|
@ -127,13 +133,17 @@ export async function getTraktMovie(username, showImage = true) {
|
||||||
const dom = new JSDOM(data)
|
const dom = new JSDOM(data)
|
||||||
const entry = dom.window.document.querySelector('entry')
|
const entry = dom.window.document.querySelector('entry')
|
||||||
const title = entry.querySelector('title').textContent
|
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) {
|
export async function getTraktEpisodeAndMovie(username, id, showImage = true) {
|
||||||
const episode = await getTraktEpisode(username, id, showImage)
|
const episode = await getTraktEpisode(username, id, showImage)
|
||||||
const movie = await getTraktMovie(username, 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) {
|
export async function getReadingBooklogr(booklogrUrl, booklogrUser) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue