Open open-subreddit in Script Kit

// name: Open subreddit
// author: Ricardo Gonçalves Bassete
import '@johnlindquist/kit'
import { Choice } from '@johnlindquist/kit/types/core.js'
import { load } from 'cheerio'
type Subreddit = {
name: string
description: string
img: string
}
const subsDB = await db<{ items: Subreddit[] }>()
let choices: Choice[] = subsDB.items.map(sub => {
return {
...sub,
value: sub.name,
}
})
if (choices.length == 0) choices = []
const targetSubName = await arg({
placeholder: 'Open subreddit',
choices: choices,
strict: false,
})
const targetUrl = `https://www.reddit.com/r/${targetSubName}`
const alreadyAdded = subsDB.items.find(s => s.name == targetSubName)
if (!alreadyAdded) {
const data = await fetch(targetUrl).then(async res => await res.text())
const $ = load(data)
const subreddit: Subreddit = {
name: targetSubName,
description: $('shreddit-subreddit-header').attr('description'),
img: $('img.shreddit-subreddit-icon__icon').attr('src'),
}
subsDB.items.push(subreddit)
await subsDB.write()
}
open(targetUrl)