/ clis / lesswrong / shortform.js
shortform.js
 1  import { cli, Strategy } from '@jackwener/opencli/registry';
 2  import { DOMAIN, SITE, gqlRequest } from './_helpers.js';
 3  cli({
 4      site: SITE,
 5      name: 'shortform',
 6      description: 'Quick takes / shortform posts',
 7      domain: DOMAIN,
 8      strategy: Strategy.PUBLIC,
 9      browser: false,
10      args: [{ name: 'limit', type: 'int', default: 10, help: 'Number of results' }],
11      columns: ['rank', 'title', 'author', 'karma', 'comments', 'url'],
12      func: async (_page, kwargs) => {
13          const limit = Number(kwargs.limit ?? 10);
14          const query = `query PostsList {
15        posts(input: {terms: {view: "shortform", limit: ${limit}}}) {
16          results { _id title user { displayName } baseScore commentCount slug postedAt tags { name } }
17        }
18      }`;
19          const data = await gqlRequest(query);
20          const posts = (data?.posts?.results ?? []);
21          return posts.map((item, i) => ({
22              rank: i + 1,
23              title: item.title ?? '',
24              author: item.user?.displayName ?? 'Unknown',
25              karma: item.baseScore ?? 0,
26              comments: item.commentCount ?? 0,
27              url: `https://${DOMAIN}/posts/${item._id}/${item.slug}`,
28          }));
29      },
30  });