5let logs: any[] = [];
6php.addEventListener("output", (event: any) => logs.push(...event.detail));
7const script = "<?php header('Content-Type: image/jpeg'); echo \"Hello, world!\"; ";
8const exitCode = await php.run(script);
9console.log({ script, exitCode, logs, foo });
5 let logs: any[] = [];
6 php.addEventListener("output", (event: any) => logs.push(...event.detail));
7 const script = "<?php echo \"Hello, world!\"; header('Content-Type: image/jpeg');";
8 const exitCode = await php.run(script);
9 return Response.json({ script, exitCode, logs });
30 content: "New user! " + data.email_addresses[0].email_address
31 + " "
32 + data.profile_image_url,
33 });
34
182 margin: 0;
183 padding: 20px;
184 background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAACkElEQVRoQ+2ZS27CMBCGnUUlWPQAiC1CgkNwlJ6nJ+AYvUJXqGJRVV2VBXKBJqEJSZ3/D4wxrWOcGNvpIo70KyR+Zt54XqOkLMunIAgeb0HL6rru+/65qqrXsixfiqJ4z/P8I03TaZIkH1EUTcMwnIRh+AbwPcMYxuIZnuU3+C3mwFyYs6zlZub7i2gF+Q7ycxAEn3mej7Xib8EcmAtzYm7MsZrVEsz7E6wgLkC+ZVn2pRVWAXNjDayFNbXijwKyb1VVTbTCLoC1sKZW/D7I+BPkh1bQRbA21tAYHgRkzEBea4Vu5O5x8+gee4YxjMUzPMtvzDmwNjpAY7kXiJiBvNEK3Ert/gu0Y9cwhrF4hmd3icLaWCNjuhMkYAbyVStwjdrpFLTjOTCGsXiGZ/kNfmMTAY2JINEKclsrdAPtZA7a8T0whrF4hmd5lt/YREBjupFEK8h3WqEbaAfX0I5vwRjG4hme5Tfm3EBjIki0gtzRCt1E7XwK2vEcGMNYPMOz/Ma+CDQmgkQryG2t0A20gzlox7dgDGPxDM/yG3NuoDERJFpBbmuFbqJ2PgXteA6MYSye4Vl+Y18EGhNBohXktlboBtrBHLTjWzCGsXiGZ/mNOTfQmAgSrSC3tUI3UTufgnY8B8YwFs/wLL+xLwKNiSDRCnJbK3QD7WAO2vEtGMNYPMOz/MacG2hMBIlWkNtaoZuonU9BO54DYxiLZ3iW39gXgcZEkGgFua0VuoF2MAft+BaMYSye4Vl+Y84NNCaCRCvIHa3QTdTOp6AdzwGNiSBR/6Oipdh3Iy1F9mFPS9GNZFqKbuzXUnSD8ZYiG+21FNnwsqXIxs8txf1/vHSUkvIXCx10Xy+tWPsAAAAASUVORK5CYII=');
185 background-repeat: repeat;
186}
191 background-color: rgba(65, 50, 12, 0.9);
192 border: 4px solid #8b7865;
193 border-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAAAPklEQVQoU2P4//8/AzqGCqAoQhFAVgRTgGEIVgU4FaErgCnAqQhdAYYCdEXoFGMoQNaILo6hAFkjujgAoQYXNAQKW0AAAAAASUVORK5CYII=') 2;
194 padding: 20px;
195 box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
32 username: tweet.user.screen_name,
33 name: tweet.user.name,
34 profile_image: tweet.user.profile_image_url_https,
35 media: tweet.entities?.media?.[0]?.media_url_https,
36 }));
1// This val fetches recent tweets about @SnapAR or Lens Studio, removes duplicates,
2// and displays them as embedded tweets with preview images on a dark background.
3// Updated to use Social Data instead of Twitter API
4
6
7// This val fetches recent social media posts about @SnapAR or Lens Studio using socialDataSearch,
8// and displays them as embedded posts with preview images on a dark background.
9
10export default async function server(request: Request): Promise<Response> {
35 username: tweet.user.screen_name,
36 name: tweet.user.name,
37 profile_image: tweet.user.profile_image_url_https,
38 media: tweet.entities?.media?.[0]?.media_url_https,
39 }));
2
3- `node-emoji` [github here](https://github.com/omnidan/node-emoji) - replaces all emojis with spans
4- emoji images for replacement are hosted at netlify (sourced from private repo)
1export async function replaceEmojisWithImages(
2 req: express.Request,
3 res: express.Response,
5export const generateRAdioDjRss = async () => {
6 const rssItems = previousDjs.map((dj) => {
7 const djImgSrc = `https://r-a-d.io/api/dj-image/${
8 encodeURIComponent(
9 dj.djimage,
10 )
11 }`
5 const response = await fetchText("https://xkcd.com/");
6 const $ = load(response);
7 const image = $("div#comic img").attr("src");
8 return new Response(await (await fetch(image)).arrayBuffer());
9}