in archive/poster.js [38:92]
async function post(agent, item) {
let post = {
$type: "app.bsky.feed.post",
text: item.title,
createdAt: new Date().toISOString(),
};
const dom = await fetch(item.link)
.then((response) => response.text())
.then((html) => cheerio.load(html));
let description = null;
const description_ = dom('head > meta[property="og:description"]');
if (description_) {
description = description_.attr("content");
}
let image_url = null;
const image_url_ = dom('head > meta[property="og:image"]');
if (image_url_) {
image_url = image_url_.attr("content");
}
const buffer = await fetch(image_url)
.then((response) => response.arrayBuffer())
.then((buffer) => sharp(buffer))
.then((s) =>
s.resize(
s
.resize(800, null, {
fit: "inside",
withoutEnlargement: true,
})
.jpeg({
quality: 80,
progressive: true,
})
.toBuffer()
)
);
post["embed"] = {
external: {
uri: item.link,
title: item.title,
description: description,
},
$type: "app.bsky.embed.external",
};
const res = AppBskyFeedPost.validateRecord(post);
if (res.success) {
console.log(post);
agent.post(post);
} else {
console.log(res.error);
}
}