52
53export default async function() {
54 const API_KEY = Deno.env.get("YOUTUBE_API_KEY");
55 const CHANNEL_ID = Deno.env.get("YOUTUBE_CHANNEL_ID");
56 const now = (new Date()).toISOString();
59 async function fetchComments(pageToken: string = ""): Promise<void> {
60 const url =
61 `https://www.googleapis.com/youtube/v3/commentThreads?key=${API_KEY}&textFormat=plainText&part=snippet&allThreadsRelatedToChannelId=${CHANNEL_ID}&pageToken=${pageToken}`;
62
63 const response = await fetch(url);
22 <head>
23 <title>SQLite Explorer</title>
24 <link rel="preconnect" href="https://fonts.googleapis.com" />
25 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
26 <link
27 href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap"
28 rel="stylesheet"
29 />
13## Authentication
14
15SQLite Explorer [basic authentication](https://www.val.town/v/pomdtr/basicAuth) with your [Val Town API Token](https://www.val.town/settings/api) as the password (leave the username field blank).
16
17## Todos / Plans
9[](https://www.val.town/v/stevekrouse/blob_admin_app/fork)
10
11It uses [basic authentication](https://www.val.town/v/pomdtr/basicAuth) with your [Val Town API Token](https://www.val.town/settings/api) as the password (leave the username field blank).
12
13# TODO
1import ky from "npm:ky";
2
3const prefixUrl = "https://public.api.bsky.app/xrpc/";
4
5// @see: https://docs.bsky.app/docs/api/com-atproto-identity-resolve-handle
6export function resolveHandle(handle: string) {
7 return ky.get("com.atproto.identity.resolveHandle", {
11}
12
13// @see: https://docs.bsky.app/docs/api/app-bsky-feed-get-post-thread
14export function getPostThread(uri: string) {
15 return ky.get("app.bsky.feed.getPostThread", {
15}
16
17// @see: https://github.com/vercel/react-tweet/blob/a292ca7/packages/react-tweet/src/api/fetch-tweet.ts#L27-L31
18function getToken(id: string) {
19 return ((Number(id) / 1e15) * Math.PI)
5## Usage
6
71. Set the environment variables for `YOUTUBE_API_KEY` and `YOUTUBE_CHANNEL_ID`
81. Fork this
91. Go
1import { fetchJSON } from "https://esm.town/v/stevekrouse/fetchJSON?v=41";
2
3await fetchJSON("https://api.val.town/v1/vals", {
4 headers: {
5 Authorization: `Bearer ${Deno.env.get("valtown")}`,
148 font-size: 1rem;
149 font-family: var(--main-font);
150 text-transform: capitalize;
151 display: flex;
152 align-items: center;
1// https://api.val.town/v1/express/liamdanielduffy.reactTodoListWebsite
2export const REACT_TODO_LIST_CONTENTS = {
3 body: `<div id="root"></div>