in poster.js [38:91]
async function post(agent, item) {
const dom = await fetch(item.link)
.then((response) => response.text())
.then((html) => cheerio.load(html));
let image_url = null;
const image_url_ = dom('head > meta[property="og:image"]');
if (image_url_) {
image_url = await 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()
)
);
const image = await agent.uploadBlob(buffer, { encoding: "image/jpeg" });
let post = {
$type: "app.bsky.feed.post",
text: item.title,
createdAt: new Date().toISOString()
};
post["embed"] = {
external: {
uri: `${item.link}?CMP=aus_bsky`,
title: item.title,
description: item.description,
thumb: image.data.blob,
},
$type: "app.bsky.embed.external",
};
const res = AppBskyFeedPost.validateRecord(post);
if (res.success) {
agent.post(post);
} else {
console.log(res.error);
}
}