aboutsummaryrefslogtreecommitdiff
path: root/index.js
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2024-09-21 18:39:12 +0000
committerRuben Beltran del Rio <git@r.bdr.sh>2024-09-21 18:39:12 +0000
commitfdb5251ccba2456745ca43801a6a8ce040177771 (patch)
tree78d86f1616d6a330d52bf2cbb0d41aad05da5075 /index.js
parent70dc59db0627b43811ee8e6d00a5d67542662209 (diff)
Remove references to pinboard
Diffstat (limited to 'index.js')
-rw-r--r--index.js69
1 files changed, 49 insertions, 20 deletions
diff --git a/index.js b/index.js
index 279594a..ef06ad9 100644
--- a/index.js
+++ b/index.js
@@ -2,12 +2,12 @@ const { exec } = require('child_process');
const { resolve, join} = require('path');
const { rm, writeFile } = require('fs/promises');
const { promisify } = require('util');
-const Pinboard = require('node-pinboard').default;
const internals = {
exec: promisify(exec),
- apiToken: process.env.PINBOARD_TOKEN,
+ apiUrl: process.env.API_URL,
+ apiToken: process.env.API_TOKEN,
blogUrl: process.env.BLOG_URL,
archiveUrl: process.env.ARCHIVE_URL,
blogPublicUrl: process.env.BLOG_PUBLIC_URL,
@@ -26,14 +26,14 @@ const internals = {
return posts.map((post) => {
- return `=> ${post.href} ${post.description}\n${post.extended}`;
+ return `=> ${post.url} ${post.title}\n${post.notes}`;
}).join('\n\n');
},
getTitle(posts) {
if (posts.length === 1) {
- return `Link: ${posts[0].description}`;
+ return `Link: ${posts[0].title}`;
}
return `${posts.length} links for ${internals.date}`;
},
@@ -51,29 +51,64 @@ const internals = {
`New post: ${title}\n\nAvailable on:\n\nā™Šļø the gemini archive ${internals.archivePublicUrl}\n\n or, the ephemeral blog 🌐: ${internals.blogPublicUrl}`
);
return fetch(`https://${internals.mastodonDomain}/api/v1/statuses`, {
- method: 'post',
+ method: 'POST',
headers: {
Authorization: `Bearer ${internals.tootToken}`,
},
body
});
- }
+ },
+
+ async getBookmarks() {
+
+ const url = join(internals.apiUrl, 'bookmarks') + '?q=%23linkblog';
+ const response = await fetch(url, {
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: `Token ${internals.apiToken}`
+ }
+ });
+ const data = await response.json();
+
+ return data.results;
+ },
+ async updateBookmark(bookmark) {
+
+ console.log(bookmark.tag_names);
+ console.log(bookmark.tag_names.map((tag) => tag === 'linkblog' ? 'linkblog-posted' : tag));
+
+ const url = join(internals.apiUrl, 'bookmarks', `${bookmark.id}`)
+ const response = await fetch(url, {
+ method: 'PATCH',
+ body: JSON.stringify(
+ {
+ tag_names: bookmark.tag_names.map((tag) => tag === 'linkblog' ? 'linkblog-posted' : tag)
+ }
+ ),
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: `Token ${internals.apiToken}`
+ }
+ });
+
+ const data = await response.text();
+ console.log(url);
+ console.log(data);
+ }
};
async function run() {
- const pinboard = new Pinboard(internals.apiToken);
+ const bookmarks = await internals.getBookmarks();
- const pins = await pinboard.all({ tag: 'linkblog' });
-
- if (pins.length === 0) {
+ if (bookmarks.length === 0) {
console.error('No links to post');
return;
}
- const title = internals.getTitle(pins);
- const text = internals.getText(pins);
+ const title = internals.getTitle(bookmarks);
+ const text = internals.getText(bookmarks);
const gemtext = internals.generateGemtext(title, text);
const filename = internals.slugify(title);
@@ -84,14 +119,8 @@ async function run() {
await internals.exec(`blog publish-archive ${internals.archiveUrl}`);
await rm(gemfile);
- for (const pin of pins) {
- await pinboard.add({
- url: pin.href,
- description: pin.description,
- extended: pin.extended,
- dt: pin.time,
- tags: pin.tags.replace('linkblog', 'linkblog-posted')
- });
+ for (const bookmark of bookmarks) {
+ await internals.updateBookmark(bookmark);
}
if (internals.tootToken) {