diff --git a/src/api/OpenProcessing.ts b/src/api/OpenProcessing.ts index 1e1d29f1d4..a856accbf2 100644 --- a/src/api/OpenProcessing.ts +++ b/src/api/OpenProcessing.ts @@ -1,20 +1,16 @@ -// HELPER FUNCTIONS TO USE THE OPENPROCESSING API -// SEE https://documenter.getpostman.com/view/16936458/2s9YC1Xa6X#intro - import type { AnyEntryMap, CollectionEntry } from "astro:content"; -import memoize from "lodash/memoize"; +import { readFile, access } from "node:fs/promises"; +import { constants as FS } from "node:fs"; +import path from "node:path"; -const openProcessingEndpoint = "https://openprocessing.org/api/"; -/** - * ID of the OpenProcessing Curation we pull sketches from. - * Currently a placeholder (https://openprocessing.org/curation/78544/) - */ -const curationId = "87649"; -const newCurationId = "89576"; +const DATA_DIR = path.join(process.cwd(), "src", "cached-data"); + +const CURATION_2024_FILE = path.join(DATA_DIR, "openprocessing-curation-87649-sketches.json"); +const CURATION_2025_FILE = path.join(DATA_DIR, "openprocessing-curation-89576-sketches.json"); +const SKETCH_FILE = (id: number) => path.join(DATA_DIR, "openprocessing-sketches", `${id}.json`); /** - * API Response from a call to the Curation Sketches endpoint - * + * API Response from a call to the Curation Sketches endpoint, cached in the above files * see https://documenter.getpostman.com/view/16936458/2s9YC1Xa6X#7cd344f6-6e87-426a-969b-2b4a79701dd1 */ export type OpenProcessingCurationResponse = Array<{ @@ -33,51 +29,6 @@ export type OpenProcessingCurationResponse = Array<{ fullname: string; }>; -/** - * Get basic info for the sketches contained in a Curation - * from the OpenProcessing API - * - * @param limit max number of sketches to return - * @returns sketches - */ -export const getCurationSketches = memoize(async ( - limit?: number, -): Promise => { - const limitParam = limit ? `limit=${limit}` : ""; - const response1 = await fetch( - `${openProcessingEndpoint}curation/${curationId}/sketches?${limitParam}`, - ); - if(!response1.ok){ //log error instead of throwing error to not cache result in memoize - console.error('getCurationSketches', response1.status, response1.statusText) - } - const payload1 = await response1.json(); - - const response2 = await fetch( - `${openProcessingEndpoint}curation/${newCurationId}/sketches?${limitParam}`, - ); - if(!response2.ok){ //log error instead of throwing error to not cache result in memoize - console.error('getCurationSketches', response2.status, response2.statusText) - } - const payload2 = await response2.json(); - - // Selected Sketches from the 2025 curation - const priorityIds = ['2690038', '2484739', '2688829', '2689119', '2690571', '2690405','2684408' , '2693274', '2693345', '2691712'] - - const prioritySketches = payload2.filter( - (sketch: OpenProcessingCurationResponse[number]) => priorityIds.includes(String(sketch.visualID))) - .sort((a: OpenProcessingCurationResponse[number], b: OpenProcessingCurationResponse[number]) => priorityIds.indexOf(String(a.visualID)) - priorityIds.indexOf(String(b.visualID))); - - - const finalSketches = [ - ...prioritySketches.map((sketch: OpenProcessingCurationResponse[number]) => ({ ...sketch, curation: '2025' })), - ...payload1.map((sketch: OpenProcessingCurationResponse[number]) => ({ ...sketch, curation: '2024' })), - ]; - - return [ - ...finalSketches, - ] as OpenProcessingCurationResponse; -}); - /** * API Response from a call to the Sketch endpoint * @@ -96,73 +47,62 @@ export type OpenProcessingSketchResponse = { submittedOn: string; createdOn: string; mode: string; + /* This is extracted from /code */ + width: number; + height: number; }; -/** - * Get info about a specific sketch from the OpenProcessing API - * First checks if the sketch is in the memoized curated sketches and returns the data if so, - * Otherwise calls OpenProcessing API for this specific sketch - * - * https://documenter.getpostman.com/view/16936458/2s9YC1Xa6X#7cd344f6-6e87-426a-969b-2b4a79701dd1 - * @param id - * @returns - */ -export const getSketch = memoize( - async (id: number): Promise => { - // check for memoized sketch in curation sketches - const curationSketches = await getCurationSketches(); - const memoizedSketch = curationSketches.find((el) => el.visualID === id); - if (memoizedSketch) { - return { - ...memoizedSketch, - license: "", - } as OpenProcessingSketchResponse; - } +// Selected Sketches from the 2025 curation +export const priorityIds = ['2690038', '2484739', '2688829', '2689119', '2690571', '2690405','2684408' , '2693274', '2693345', '2691712'] - // check for sketch data in Open Processing API - const response = await fetch(`${openProcessingEndpoint}sketch/${id}`); - if (!response.ok) { - //log error instead of throwing error to not cache result in memoize - console.error("getSketch", id, response.status, response.statusText); +async function exists(p: string) { + try { + await access(p, FS.F_OK); + return true; + } catch { + return false; } - const payload = await response.json(); - return payload as OpenProcessingSketchResponse; -}); +} + +async function readJson(filePath: string): Promise { + const text = await readFile(filePath, "utf8"); + return JSON.parse(text) as T; +} /** - * Note: this currently calls `/api/sketch/:id/code` - * But only uses the width and height properties from this call - * Width and height should instead be added to properties for `/api/sketch/:id` or `api/curation/:curationId/sketches` instead + * Get basic info for the sketches contained in a Curation + * from the OpenProcessing API + * + * @param limit max number of sketches to return + * @returns sketches */ -export const getSketchSize = memoize(async (id: number) => { - const sketch = await getSketch(id) - if (sketch.mode !== 'p5js') { - return { width: undefined, height: undefined }; - } +export async function getCurationSketches(): Promise { + const payload2024 = await readJson(CURATION_2024_FILE); + const payload2025 = await readJson(CURATION_2025_FILE); - const response = await fetch(`${openProcessingEndpoint}sketch/${id}/code`); - if(!response.ok){ //log error instead of throwing error to not cache result in memoize - console.error('getSketchSize', id, response.status, response.statusText) - } - const payload = await response.json(); - - for (const tab of payload) { - if (!tab.code) continue; - const match = /createCanvas\(\s*(\w+),\s*(\w+)\s*(?:,\s*(?:P2D|WEBGL)\s*)?\)/m.exec(tab.code); - if (match) { - if (match[1] === 'windowWidth' && match[2] === 'windowHeight') { - return { width: undefined, height: undefined }; - } - - const width = parseFloat(match[1]); - const height = parseFloat(match[2]); - if (width && height) { - return { width, height }; - } - } + const prioritySketches = payload2025.filter( + (sketch: OpenProcessingCurationResponse[number]) => priorityIds.includes(String(sketch.visualID))) + .sort((a: OpenProcessingCurationResponse[number], b: OpenProcessingCurationResponse[number]) => priorityIds.indexOf(String(a.visualID)) - priorityIds.indexOf(String(b.visualID))); + + + const allSketches = [ + ...prioritySketches.map((sketch: OpenProcessingCurationResponse[number]) => ({ ...sketch, curation: '2025' })), + ...payload2024.map((sketch: OpenProcessingCurationResponse[number]) => ({ ...sketch, curation: '2024' })), + ]; + + const availableSketches: OpenProcessingCurationResponse = []; + for (const sketch of allSketches) { + if (await exists(SKETCH_FILE(sketch.visualID))) availableSketches.push(sketch); } - return { width: undefined, height: undefined }; -}); + + return [ + ...availableSketches, + ] as OpenProcessingCurationResponse; +}; + +export async function getSketch(id: number): Promise { + return await readJson(SKETCH_FILE(id)); +} export const makeSketchLinkUrl = (id: number) => `https://openprocessing.org/sketch/${id}`; @@ -195,12 +135,14 @@ export function isCurationResponse( return "visualID" in (item as any); } -export const getRandomCurationSketches = memoize(async (num = 4) => { +export async function getRandomCurationSketches(num = 4) { const curationSketches = await getCurationSketches(); const result: OpenProcessingCurationResponse = []; const usedIndices: Set = new Set(); - while (result.length < num) { + const n = Math.min(num, curationSketches.length); + + while (result.length < n) { const randomIndex = Math.floor(Math.random() * curationSketches.length); if (!usedIndices.has(randomIndex)) { result.push(curationSketches[randomIndex]); @@ -209,4 +151,4 @@ export const getRandomCurationSketches = memoize(async (num = 4) => { } return result; -}); +} diff --git a/src/cached-data/openprocessing-curation-87649-sketches.json b/src/cached-data/openprocessing-curation-87649-sketches.json new file mode 100644 index 0000000000..4cdaf93b7c --- /dev/null +++ b/src/cached-data/openprocessing-curation-87649-sketches.json @@ -0,0 +1,706 @@ +[ + { + "visualID": 1957050, + "title": "Generative Succulents", + "description": "Generative succulents for the #WCCChallenge", + "instructions": "each time you refresh you get new result", + "parentID": null, + "thumbnailUpdatedOn": "2023-08-08 04:50:27", + "videoUpdatedOn": null, + "createdOn": "2023-06-17 12:05:32", + "userID": 52944, + "fullname": "newyellow", + "membershipType": 1, + "submittedOn": "2024-04-08 03:10:47", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2036000, + "title": "Zen Pots", + "description": "A generative art work for the WCCChallenge topic 'Pottery'", + "instructions": "refresh to get a new output", + "parentID": null, + "thumbnailUpdatedOn": "2023-10-07 17:43:00", + "videoUpdatedOn": null, + "createdOn": "2023-10-07 17:39:15", + "userID": 52944, + "fullname": "newyellow", + "membershipType": 1, + "submittedOn": "2024-04-08 03:05:01", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2111906, + "title": "Microscope Simulator", + "description": "", + "instructions": "Press WSAD or Mouse to move the camera, use the slider to modify the focal length", + "parentID": null, + "thumbnailUpdatedOn": "2023-12-03 15:43:33", + "videoUpdatedOn": null, + "createdOn": "2023-12-02 19:35:38", + "userID": 231571, + "fullname": "TKt | 陳建中 Tân Kiàn-tiong(rainsr7235)", + "membershipType": 0, + "submittedOn": "2024-04-08 03:09:50", + "status": 1, + "mode": "html" + }, + { + "visualID": 2174234, + "title": "Hilbert", + "description": "Space-filling algorithms ? #WCCChallenge", + "instructions": "Press the space bar for toggling between loop and noLoop.\r\nIf the controls are not responsive, please click on the canvas to ensure the browser focuses on it.", + "parentID": null, + "thumbnailUpdatedOn": "2024-02-10 17:47:01", + "videoUpdatedOn": null, + "createdOn": "2024-02-10 17:42:18", + "userID": 324002, + "fullname": "Zaron Chen", + "membershipType": 1, + "submittedOn": "2024-04-08 04:24:11", + "status": 1, + "mode": "html" + }, + { + "visualID": 2194525, + "title": "Colorful Star", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-01 17:01:02", + "videoUpdatedOn": null, + "createdOn": "2024-03-01 17:01:01", + "userID": 51673, + "fullname": "slacle", + "membershipType": 0, + "submittedOn": "2024-04-18 12:46:15", + "status": 1, + "mode": "html" + }, + { + "visualID": 2211029, + "title": "#WCCC_Obscure_bg_submission", + "description": "An obscure cloud of bubbles in all different kinds of colors :D", + "instructions": "Mouse click to toggle full screen", + "parentID": 2107677, + "thumbnailUpdatedOn": "2024-03-16 13:31:27", + "videoUpdatedOn": null, + "createdOn": "2024-03-16 13:31:27", + "userID": 387225, + "fullname": "its_just_user_now", + "membershipType": 1, + "submittedOn": "2024-04-08 04:23:03", + "status": 1, + "mode": "html" + }, + { + "visualID": 2211175, + "title": "Subjective Time", + "description": "My idea was to try and show how time is subjective, specifically when having intrusive and depressive thoughts.\r\nThe ball bounces around and shrinks after each intrusive thought. The thoughts spawn randomly and time slows down for as for an unknown random period of time as well. The interactive and optimistic part of this code is that you can click away the intrusive thoughts. Fighting back makes your circle grow, corrects the time, and it makes the thought go away. This is the first version of the program and I plan to improve on this in the future.", + "instructions": "Left mouse click to fight against intrusive thoughts.", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-16 21:00:03", + "videoUpdatedOn": null, + "createdOn": "2024-03-16 20:55:48", + "userID": 435103, + "fullname": "xladn0", + "membershipType": 0, + "submittedOn": "2024-04-08 04:22:33", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2211298, + "title": "Sudoku Cartography - Graph Theory", + "description": "Cartograhpic sudoku visualizer using graph theory. Each reload is a newly generated and mapped out sudoku game. See more at xladn0.rf.gd/gtsudoku/", + "instructions": "\"S\" to save as PNG. \r\nRefresh to generate a new one.", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-17 01:45:44", + "videoUpdatedOn": null, + "createdOn": "2024-03-17 01:45:43", + "userID": 435103, + "fullname": "xladn0", + "membershipType": 0, + "submittedOn": "2024-04-08 04:20:07", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2211359, + "title": "Cosmic Sands", + "description": "Perlin noise experiment", + "instructions": "mouse position has a small effect.", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-17 06:03:14", + "videoUpdatedOn": null, + "createdOn": "2024-03-17 06:03:13", + "userID": 435103, + "fullname": "xladn0", + "membershipType": 0, + "submittedOn": "2024-04-08 04:11:34", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2212666, + "title": "LetteReflex", + "description": "Practice your typing reflexes with this stylish game!", + "instructions": "Keyboard for the most part, and mouse for interaction of the buttons.", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-18 16:43:22", + "videoUpdatedOn": null, + "createdOn": "2024-03-18 16:43:22", + "userID": 382926, + "fullname": "ItsKazzle", + "membershipType": 0, + "submittedOn": "2024-04-08 04:19:49", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2213463, + "title": "Slime Molds", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-19 03:15:12", + "videoUpdatedOn": null, + "createdOn": "2024-03-19 03:15:11", + "userID": 429398, + "fullname": "Patt Vira", + "membershipType": 0, + "submittedOn": "2024-04-08 04:16:37", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2215521, + "title": "Letters from my mother", + "description": "A notebook-like background, containing incomprehensible text. Its characters' strokes get progressively wider as they approach the edge.", + "instructions": "Click on the canvas to restart the animation", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-20 14:43:31", + "videoUpdatedOn": null, + "createdOn": "2024-03-20 13:10:06", + "userID": 435675, + "fullname": "Mauro", + "membershipType": 0, + "submittedOn": "2024-04-08 04:14:30", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2215570, + "title": "Technology is not neutral", + "description": "type something", + "instructions": "", + "parentID": 874803, + "thumbnailUpdatedOn": "2024-03-20 18:06:23", + "videoUpdatedOn": null, + "createdOn": "2024-03-20 14:09:23", + "userID": 65884, + "fullname": "Vamoss", + "membershipType": 0, + "submittedOn": "2024-04-08 04:15:05", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2215583, + "title": "Glitch animation", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-20 14:18:06", + "videoUpdatedOn": null, + "createdOn": "2024-03-20 14:16:28", + "userID": 384913, + "fullname": "Karakure178", + "membershipType": 0, + "submittedOn": "2024-04-08 04:14:21", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2218758, + "title": "Gravity", + "description": "text displacement based on gravity, by john mayer.", + "instructions": "mouse", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-23 08:53:01", + "videoUpdatedOn": null, + "createdOn": "2024-03-23 08:53:01", + "userID": 436301, + "fullname": "Arjun", + "membershipType": 0, + "submittedOn": "2024-04-08 04:10:19", + "status": 1, + "mode": "html" + }, + { + "visualID": 2219842, + "title": "Geodata Weaving", + "description": "weaving instructions for gps coordinates", + "instructions": "use mouse wheel and move to click different areas of the map", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-25 11:44:30", + "videoUpdatedOn": null, + "createdOn": "2024-03-25 11:33:38", + "userID": 436515, + "fullname": "Kaspar Ravel", + "membershipType": 0, + "submittedOn": "2024-04-08 04:04:09", + "status": 1, + "mode": "html" + }, + { + "visualID": 2219978, + "title": "Elephant explode into a turtle", + "description": "Many physical particles are arranged in order to form the image of an elephant. As a wind-like force is applied to the particles the image dissolves. After a while another force let the particles reach a new position and form the image of a turtle.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-25 14:30:19", + "videoUpdatedOn": null, + "createdOn": "2024-03-25 14:30:19", + "userID": 436545, + "fullname": "Ludovico", + "membershipType": 0, + "submittedOn": "2024-04-08 04:05:08", + "status": 1, + "mode": "html" + }, + { + "visualID": 2221624, + "title": "Raining Sound", + "description": "A generative piano sequence with raindrop visuals", + "instructions": "Mouse click to begin", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-26 18:54:52", + "videoUpdatedOn": null, + "createdOn": "2024-03-26 18:40:48", + "userID": 436786, + "fullname": "Tony James Morton", + "membershipType": 0, + "submittedOn": "2024-04-08 04:00:56", + "status": 1, + "mode": "html" + }, + { + "visualID": 2221958, + "title": "Year of Dragon", + "description": "In celebration of CHINESE NEW YEAR and Year of Dragon", + "instructions": "Use your mouse to fly the Chinese dragon!", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-27 04:25:03", + "videoUpdatedOn": null, + "createdOn": "2024-03-27 04:12:26", + "userID": 435438, + "fullname": "Hong Hua", + "membershipType": 0, + "submittedOn": "2024-04-08 03:23:23", + "status": 1, + "mode": "html" + }, + { + "visualID": 2221968, + "title": "Theremin Simulator", + "description": "Let's play the virtual Theremin", + "instructions": "Click your mouse to trigger the sound. Then play like a real Theremin.", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-27 04:37:47", + "videoUpdatedOn": null, + "createdOn": "2024-03-27 04:32:38", + "userID": 435438, + "fullname": "Hong Hua", + "membershipType": 0, + "submittedOn": "2024-04-08 03:23:06", + "status": 1, + "mode": "html" + }, + { + "visualID": 2224141, + "title": "Breathe", + "description": "Text grid warp", + "instructions": "Mouse", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-28 20:05:15", + "videoUpdatedOn": null, + "createdOn": "2024-03-28 20:05:15", + "userID": 437141, + "fullname": "Kevin Yeh", + "membershipType": 0, + "submittedOn": "2024-04-08 02:58:38", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2224432, + "title": "of atoms", + "description": "", + "instructions": "scroll - or just breath", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-29 05:54:27", + "videoUpdatedOn": null, + "createdOn": "2024-03-29 05:54:27", + "userID": 281109, + "fullname": "Sophia Wood", + "membershipType": 1, + "submittedOn": "2024-04-08 02:45:43", + "status": 1, + "mode": "html" + }, + { + "visualID": 2225254, + "title": "Colorful Dots", + "description": "There are bunch of colored dots out there.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-30 14:29:36", + "videoUpdatedOn": null, + "createdOn": "2024-03-30 14:29:35", + "userID": 385629, + "fullname": "Yutorehito_", + "membershipType": 0, + "submittedOn": "2024-04-08 03:10:25", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225285, + "title": "Type Morpher", + "description": "", + "instructions": "Presh any letter on the keyboard. Use the sliders to change the parameters, and left and right key to change the stroke weight.", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-30 15:35:23", + "videoUpdatedOn": null, + "createdOn": "2024-03-30 15:35:22", + "userID": 183615, + "fullname": "Esteban Barco", + "membershipType": 0, + "submittedOn": "2024-04-08 03:02:54", + "status": 1, + "mode": "html" + }, + { + "visualID": 2225358, + "title": "Ghost in the Machine", + "description": "This sketch, titled Ghost in the Machine, takes thousands of aligned face images from the Faces in the Wild dataset, scanning up and down to display horizontal slices of a random subset of them in order to generate an extrapolated rendition of an exquisite corpse. You can move the mouse left and right to change the slice size.", + "instructions": "Move the mouse left and right to chance the slice size. Press 'f' to enter or exit fullscreen mode.", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-30 19:35:55", + "videoUpdatedOn": null, + "createdOn": "2024-03-30 19:35:55", + "userID": 437358, + "fullname": "Arden S.", + "membershipType": 0, + "submittedOn": "2024-04-08 03:01:27", + "status": 1, + "mode": "html" + }, + { + "visualID": 2225364, + "title": "Interlockings", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-30 19:47:04", + "videoUpdatedOn": null, + "createdOn": "2024-03-30 19:47:04", + "userID": 437358, + "fullname": "Arden S.", + "membershipType": 0, + "submittedOn": "2024-04-08 03:02:01", + "status": 1, + "mode": "html" + }, + { + "visualID": 2225444, + "title": "Dimension Door", + "description": "A swirling psychedelic vortex of multicoloured squares twists aggressively back and forth, seemingly descending into the black background.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 00:30:26", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 00:28:51", + "userID": 424615, + "fullname": "Benjamin Lappalainen", + "membershipType": 1, + "submittedOn": "2024-04-08 02:59:09", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225476, + "title": "oesa collatz", + "description": "interactive representation of the collatz conjecture", + "instructions": "CLICK ON CENTER for random, or press keys for fine adjustment (see the comment in code)", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 02:05:05", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 02:05:04", + "userID": 437373, + "fullname": "mj-una", + "membershipType": 0, + "submittedOn": "2024-05-09 06:28:52", + "status": 1, + "mode": "html" + }, + { + "visualID": 2225479, + "title": "A Love Letter from NYC", + "description": "This is a love letter to New York City and its invisible signifier—its vibrant soundscape. Featuring audio-reactive type as the central motif, this series of \"talking postcards\" connects the city's quintessential humdrum to people they're addressed to.", + "instructions": "mouse, keyboard", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 02:24:27", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 02:24:27", + "userID": 396124, + "fullname": "Shristi Singh", + "membershipType": 0, + "submittedOn": "2024-04-08 02:59:45", + "status": 1, + "mode": "html" + }, + { + "visualID": 2225499, + "title": "Moths to a Flame", + "description": "A swarm of particles chases the mouse position and changes color as it converges.", + "instructions": "Mouse movement", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 03:55:46", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 03:55:46", + "userID": 436362, + "fullname": "Adam Santone, PhD", + "membershipType": 0, + "submittedOn": "2024-04-08 03:00:30", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225628, + "title": "Text in flowers", + "description": "Particles in place corresponding to the text", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 13:24:09", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 13:18:56", + "userID": 207560, + "fullname": "Senbaku", + "membershipType": 1, + "submittedOn": "2024-04-08 02:57:23", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225647, + "title": "p5.js Community Sketch - March 2024 - Magnificent Four", + "description": "This artwork presents a mesmerizing depiction of four individuals expressing their creativity through diverse art styles, all unified on a single canvas.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 14:12:35", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 14:12:34", + "userID": 333690, + "fullname": "Takayuki Sato", + "membershipType": 0, + "submittedOn": "2024-04-08 02:58:48", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225715, + "title": "The Poetry of Clouds", + "description": "2D clouds made of white text float slowly across a blue sky. The shape of the clouds is changing subtly over time.", + "instructions": "No direct user interaction, but you can tweak constants in the code to alter the clouds.", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 15:49:32", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 15:49:31", + "userID": 4474, + "fullname": "StungEye", + "membershipType": 0, + "submittedOn": "2024-04-08 02:55:33", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225777, + "title": "Padrão Geométrico", + "description": "Desenha uma grade de quadrados e dentro cada quadrado é desenhado um grafismo geométrico que variam entre formas simples como círculos e losango, até formas mais complexas como estrelas e outras que lembram um machado de duas hastes e uma coroa. Os elementos são preenchidos aleatoriamente a partir de uma paleta de vermelho, amarelo, verde, rosa e preto. Os desenhos internos de cada quadrado ficam crescendo e diminuindo com o passar do tempo.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 17:41:35", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 17:41:35", + "userID": 14377, + "fullname": "Guilherme Vieira", + "membershipType": 0, + "submittedOn": "2024-04-08 02:54:52", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225865, + "title": "Spiral Clock", + "description": "A dark-blue canvas, where six-hundred colorful (light blue and pink) pill-shaped objects appear, ten of them each second. These objects spawn from left to right on the vertical center of the canvas, taking a total of sixty seconds. After spawning, they move clockwise around the center of the canvas, resulting in a spiraling animation. After sixty seconds, the animation restarts.", + "instructions": "None", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 20:36:15", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 20:33:27", + "userID": 437417, + "fullname": "Dominik", + "membershipType": 0, + "submittedOn": "2024-04-08 02:52:10", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225914, + "title": "Word Scatter", + "description": "Letters randomly scattered around the canvas by user interaction to create an interesting composition.", + "instructions": "Use your mouse to place a group of letters around the canvas!", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 21:41:27", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 21:41:27", + "userID": 390576, + "fullname": "ridcursion", + "membershipType": 0, + "submittedOn": "2024-04-08 02:52:39", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225924, + "title": "Binary Epoch Time", + "description": "Unix epoch time (seconds since Jan 1, 1970) in binary on a 6x6 grid with white for 1s and black for 0s. The grey squares show the limitation of 32-bit computer systems that will fail to represent time accurately after January 19, 2038.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 21:46:31", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 21:46:31", + "userID": 4474, + "fullname": "StungEye", + "membershipType": 0, + "submittedOn": "2024-04-08 02:51:12", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2225939, + "title": "Touch Grass", + "description": "Type as image exploration, touching grass", + "instructions": "Hover over / press on letters, it might take a bit to load", + "parentID": null, + "thumbnailUpdatedOn": "2024-03-31 22:04:10", + "videoUpdatedOn": null, + "createdOn": "2024-03-31 21:57:15", + "userID": 437419, + "fullname": "Derek Zhang", + "membershipType": 0, + "submittedOn": "2024-04-08 02:50:06", + "status": 1, + "mode": "html" + }, + { + "visualID": 2226039, + "title": "Collapsing Typography", + "description": "A row of pixelated random letters in green, yellow, and blue are along the top of the canvas, row by row down the canvas the letters simplify into lines. The composition changes over and over.", + "instructions": "", + "parentID": 2150529, + "thumbnailUpdatedOn": "2024-04-01 00:40:20", + "videoUpdatedOn": null, + "createdOn": "2024-04-01 00:40:19", + "userID": 265818, + "fullname": "JennyBKowalski", + "membershipType": 0, + "submittedOn": "2024-04-08 02:49:05", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2226058, + "title": "glow", + "description": "", + "instructions": "", + "parentID": 2135015, + "thumbnailUpdatedOn": "2024-04-01 00:59:24", + "videoUpdatedOn": null, + "createdOn": "2024-04-01 00:59:23", + "userID": 227384, + "fullname": "__y", + "membershipType": 1, + "submittedOn": "2024-04-08 02:46:04", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2227004, + "title": "Everything", + "description": "A black canvas with a set of white circles turning around a void, while thousands of little circles creates an algorithmic choreography in the other way. The canvas shows at the right corner written in lots of languages the word 'everything'", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-04-02 00:43:40", + "videoUpdatedOn": null, + "createdOn": "2024-04-02 00:43:40", + "userID": 54041, + "fullname": "runa mora", + "membershipType": 0, + "submittedOn": "2024-04-08 02:45:04", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2233559, + "title": "Still Life", + "description": "A still life featuring cherries, strawberries, an apple, sliced plums, and peaches set in and around various stemmed glassware. This is an interpretation of a photo by Victoria Jane Photography: https://www.instagram.com/p/CGICi-sl4nH/. Watch a time-lapse here: https://vimeo.com/509329812", + "instructions": "Pan, zoom, or rotate around the still life with a mouse or trackpad", + "parentID": null, + "thumbnailUpdatedOn": "2024-04-08 15:43:24", + "videoUpdatedOn": null, + "createdOn": "2024-04-08 15:43:24", + "userID": 438591, + "fullname": "Shelby Wilson", + "membershipType": 0, + "submittedOn": "2024-04-08 17:29:52", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2234287, + "title": "Forming Identity", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2024-04-09 04:39:03", + "videoUpdatedOn": null, + "createdOn": "2024-04-09 04:19:30", + "userID": 438061, + "fullname": "Wesley Chau", + "membershipType": 0, + "submittedOn": "2024-04-09 04:38:19", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2235700, + "title": "Repurpose the tombs", + "description": "Manhattan Detention Complex (The Tombs) incarcerates 900 people, most of whom are pre-trial detainees. A recent proposal would triple MDC in size to a total of 1.5 million square feet. There are many ways to conceive of how economic, political, and physical resources from prison abolition can be redirected. This map explores the spatial consequence and possibilities of a repurposed MDC without pre-trial detention, cash bail or prisons entirely. Fill the 1.5 million square foot space in downtown Manhattan with abolitionist resources as an exercise in mapping a world without prisons.", + "instructions": "mouse", + "parentID": null, + "thumbnailUpdatedOn": "2024-04-10 01:49:09", + "videoUpdatedOn": null, + "createdOn": "2024-04-10 01:49:09", + "userID": 438906, + "fullname": "iz nettere", + "membershipType": 0, + "submittedOn": "2024-04-10 16:57:43", + "status": 1, + "mode": "p5js" + } +] diff --git a/src/cached-data/openprocessing-curation-89576-sketches.json b/src/cached-data/openprocessing-curation-89576-sketches.json new file mode 100644 index 0000000000..ab60bd4a00 --- /dev/null +++ b/src/cached-data/openprocessing-curation-89576-sketches.json @@ -0,0 +1,914 @@ +[ + { + "visualID": 2484739, + "title": "All you need is infinite love!", + "description": "", + "instructions": "", + "parentID": 2484727, + "thumbnailUpdatedOn": "2025-08-26 06:35:29", + "videoUpdatedOn": null, + "createdOn": "2024-12-12 05:15:04", + "userID": 91533, + "fullname": "jcponcemath", + "membershipType": 0, + "submittedOn": "2025-07-30 23:58:00", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2667421, + "title": "Mucuripe", + "description": "", + "instructions": "Click on the canvas to visualize the flow field.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-15 23:04:28", + "videoUpdatedOn": null, + "createdOn": "2025-06-03 13:22:22", + "userID": 517567, + "fullname": "gmonsores", + "membershipType": 0, + "submittedOn": "2025-07-17 12:56:02", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2684408, + "title": "Meditations", + "description": "Lines of text from the Tao Te Ching by Laozi. Each line of text is displayed as extruded 3D models with the characters individually rotating along the y-axis and a subtle blurring effect.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-16 04:18:39", + "videoUpdatedOn": null, + "createdOn": "2025-06-27 15:08:41", + "userID": 535160, + "fullname": "Jake Welch", + "membershipType": 0, + "submittedOn": "2025-06-27 16:56:46", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2685854, + "title": "Textured Text", + "description": "This sketch renders a pattern to text", + "instructions": "mouse", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-07 14:55:36", + "videoUpdatedOn": null, + "createdOn": "2025-07-01 14:56:04", + "userID": 314640, + "fullname": "Kathy McGuiness", + "membershipType": 1, + "submittedOn": "2025-07-15 21:10:39", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2687037, + "title": "Computational Alchemy", + "description": "Rotating extruded text exploring the ties of computers and alchemy", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-03 15:10:03", + "videoUpdatedOn": null, + "createdOn": "2025-07-03 15:10:02", + "userID": 535160, + "fullname": "Jake Welch", + "membershipType": 0, + "submittedOn": "2025-07-03 15:10:26", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2687150, + "title": "A–Z", + "description": "A slowly rotating 3D rendering of the letter \"A\" connected to the letter \"Z\" by lines generated from textToPoints()", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-03 18:41:44", + "videoUpdatedOn": null, + "createdOn": "2025-07-03 18:30:27", + "userID": 536340, + "fullname": "Joel Swanson", + "membershipType": 0, + "submittedOn": "2025-07-03 18:39:42", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2687209, + "title": "Multi Colorfonts 4", + "description": "By Richard Bourne from original by Quark (Peter Lager)\r\nPOSITIVE RESULT. Fonts for personal use only.", + "instructions": "Tap to save a screenshot", + "parentID": 2687055, + "thumbnailUpdatedOn": "2025-07-04 04:01:25", + "videoUpdatedOn": null, + "createdOn": "2025-07-03 21:55:21", + "userID": 162823, + "fullname": "Richard Bourne", + "membershipType": 1, + "submittedOn": "2025-07-08 22:43:11", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2687476, + "title": "Multilingual Breathe", + "description": "An animated multilingual breathing guide exploring the intersection of typography and mental health, using p5.js 2.0 features like variable fonts and animated text. Part of the p5.js Community Sketch 2025 Open Call.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-05 07:32:15", + "videoUpdatedOn": null, + "createdOn": "2025-07-04 16:26:41", + "userID": 536298, + "fullname": "Francisco Pérez García", + "membershipType": 0, + "submittedOn": "2025-07-05 09:36:26", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2687818, + "title": "Multilingual Breathe with Sound", + "description": "Breathing exercise to relax yourself\r\nAn animated multilingual breathing guide exploring the intersection of typography and mental health, using p5.js 2.0 features like variable fonts and animated text. Chinese and arabic lsnguages added. Sounds imcluded. Part of the p5.js Community Sketch 2025 Open Call.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-07 06:26:49", + "videoUpdatedOn": null, + "createdOn": "2025-07-05 17:58:03", + "userID": 536298, + "fullname": "Francisco Pérez García", + "membershipType": 0, + "submittedOn": "2025-07-07 07:18:01", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2688458, + "title": "Multilingual feeling wheel", + "description": "This interactive p5.js sketch visualizes human emotions across multiple languages. Users select a feeling from a menu; the chosen emotion is then displayed in ten different languages (including English, Spanish, Catalan, German, Italian, Portuguese, French, Dutch, Polish, and Turkish). Each word animates independently, moving around the canvas at varying speeds and sizes, creating a dynamic tapestry of language and emotion.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-07 11:16:57", + "videoUpdatedOn": null, + "createdOn": "2025-07-07 10:57:39", + "userID": 536298, + "fullname": "Francisco Pérez García", + "membershipType": 0, + "submittedOn": "2025-07-07 11:17:30", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2688500, + "title": "peh oe ji combinations", + "description": "legal combinations of a syllable in peh oe ji", + "instructions": "mouse click", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-12 20:51:14", + "videoUpdatedOn": null, + "createdOn": "2025-07-07 13:12:13", + "userID": 256391, + "fullname": "jy", + "membershipType": 0, + "submittedOn": "2025-07-13 10:04:25", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2688574, + "title": "Faces of emotional words", + "description": "This interactive p5.js project explores the universal language of human emotion through generative portraiture. Users can select from seven basic emotions—joy, sadness, anger, fear, disgust, surprise, and contempt—each represented by a unique facial expression composed entirely of emotion-related words in multiple languages. The facial contours, including the head, eyes, eyebrows, and mouth, are dynamically drawn using spaced, legible text, allowing the viewer to \"read\" the emotion visually and linguistically. This piece blends code, typography and emotional expression.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-07 17:36:20", + "videoUpdatedOn": null, + "createdOn": "2025-07-07 17:10:21", + "userID": 536298, + "fullname": "Francisco Pérez García", + "membershipType": 0, + "submittedOn": "2025-07-07 17:47:11", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2688718, + "title": "radiance-cascades-plinko-typing", + "description": "A sketch that allows users to type using their keyboard which will spawn balls in the shape of the typed text. These balls are used in a game of Plinko with each ball realistically emitting light using radiance cascades.\r\n\r\nhttps://github.com/sobecblobec/radiance-cascades-p5js", + "instructions": "Type and press enter to release balls!", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-07 23:51:36", + "videoUpdatedOn": "2025-07-10 03:37:32", + "createdOn": "2025-07-07 23:51:36", + "userID": 317778, + "fullname": "sobecblobec", + "membershipType": 0, + "submittedOn": "2025-07-20 00:18:37", + "status": 1, + "mode": "html" + }, + { + "visualID": 2688829, + "title": "Emotional Echoes: Multilingual Typography Experiment", + "description": "“Emotional Echoes” is an interactive generative art piece that visualizes six core emotions—happy, anxious, peaceful, angry, sad, hopeful—across five languages (English, Spanish, Japanese, Arabic, Hindi). A dynamic HSB gradient background smoothly transitions with each emotion, while floating “body sensation” particles and a circular typography display immerse you in the feeling. Hover-triggered character particles and an emotion wheel let you explore subtle visual and textual nuances of how different cultures express the same mood.", + "instructions": "Click anywhere on the canvas to cycle through the six emotions in sequence.\r\n\r\nHover your mouse over any floating word in the central ring to trigger tiny text‐particle bursts.\r\n\r\nClick the emotion wheel at top‐right to jump directly to a specific emotion.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-08 08:31:58", + "videoUpdatedOn": null, + "createdOn": "2025-07-08 08:12:29", + "userID": 303096, + "fullname": "Rikiya Okawa", + "membershipType": 0, + "submittedOn": "2025-07-10 01:16:31", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2689119, + "title": "Boiling Point", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-10 00:57:39", + "videoUpdatedOn": null, + "createdOn": "2025-07-09 00:06:54", + "userID": 67809, + "fullname": "Dave Pagurek", + "membershipType": 0, + "submittedOn": "2025-07-10 00:59:56", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2689698, + "title": "community submission", + "description": "A submission for the P5js Community Sketch 2025 in solidarity with Palestine", + "instructions": "Emotion: sad, appalled, nauseated, grief, overwhelmed, furious", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-10 10:56:01", + "videoUpdatedOn": null, + "createdOn": "2025-07-10 07:37:25", + "userID": 230948, + "fullname": "Tahsin", + "membershipType": 0, + "submittedOn": "2025-07-10 10:56:28", + "status": 1, + "mode": "html" + }, + { + "visualID": 2689746, + "title": "Flipped Script!", + "description": "", + "instructions": "CLICK to change easing mode!", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-26 09:41:26", + "videoUpdatedOn": null, + "createdOn": "2025-07-10 12:10:44", + "userID": 110137, + "fullname": "Ivan Rudnicki", + "membershipType": 2, + "submittedOn": "2025-07-15 11:30:04", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2689926, + "title": "Multilingual Affirmations", + "description": "Animated multilingual affirmations using point-contour typography. Includes English, Hindi, Spanish, Chinese, Japanese, and German. Gentle breathing background.", + "instructions": "Click anywhere to reveal the next set of affirmations in all six languages", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-10 21:43:53", + "videoUpdatedOn": "2025-07-13 03:16:39", + "createdOn": "2025-07-10 21:43:53", + "userID": 514622, + "fullname": "Neha N", + "membershipType": 1, + "submittedOn": "2025-07-13 03:22:03", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2690038, + "title": "Feelings make us human", + "description": "colorful text animation where the contours fly in different directions and will be accellerated by gravity.", + "instructions": "time", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-11 11:52:46", + "videoUpdatedOn": null, + "createdOn": "2025-07-11 07:55:07", + "userID": 363571, + "fullname": "epibyte", + "membershipType": 1, + "submittedOn": "2025-07-11 11:53:48", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2690045, + "title": "Taiwanese(Tâi-gí) Idioms", + "description": "An interactive canvas that generates random Taiwanese (Tâi-gí) idiomatic expressions.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-13 12:33:19", + "videoUpdatedOn": null, + "createdOn": "2025-07-11 09:17:07", + "userID": 231571, + "fullname": "TKt | 陳建中 Tân Kiàn-tiong(rainsr7235)", + "membershipType": 0, + "submittedOn": "2025-07-13 13:40:58", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2690078, + "title": "outside / inside", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-11 13:22:13", + "videoUpdatedOn": null, + "createdOn": "2025-07-11 13:19:33", + "userID": 183691, + "fullname": "Aaron Reuland (a_ soluble_fish)", + "membershipType": 1, + "submittedOn": "2025-07-11 13:23:09", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2690405, + "title": "Haiku", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-12 14:09:42", + "videoUpdatedOn": null, + "createdOn": "2025-07-12 13:55:50", + "userID": 536917, + "fullname": "David Braziel", + "membershipType": 1, + "submittedOn": "2025-07-12 14:09:53", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2690534, + "title": "Parmenides", + "description": "A few lines from Plato's \"Parmenides\"", + "instructions": "click for Greek", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-12 21:57:01", + "videoUpdatedOn": null, + "createdOn": "2025-07-12 21:57:00", + "userID": 523875, + "fullname": "Richard Whaling", + "membershipType": 0, + "submittedOn": "2025-07-12 22:02:00", + "status": 1, + "mode": "html" + }, + { + "visualID": 2690571, + "title": "Abracadabra (anamorphic 3D text)", + "description": "3D anamorphic words, that read different words when seen from different angles", + "instructions": "Left/Right arrows to swap views, Space to reset position, use OPC controls for additional settings", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-13 02:09:09", + "videoUpdatedOn": null, + "createdOn": "2025-07-13 01:50:34", + "userID": 314603, + "fullname": "Rubén Medellín ", + "membershipType": 1, + "submittedOn": "2025-07-13 02:17:41", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2690613, + "title": "Inspiration", + "description": "Inspiration can be drawn from many places in the world. \r\nIt is not always clear, and can take time to interpret and understand,\r\nbut eventually you get better at recognizing it.", + "instructions": "- F for fullscreen\r\n- A to redraw to fit window \r\n- R to randomize and redraw\r\n- S to save an image (with a title that contains information on the word shown)", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-13 05:12:24", + "videoUpdatedOn": null, + "createdOn": "2025-07-13 03:27:53", + "userID": 327947, + "fullname": "Metamere", + "membershipType": 1, + "submittedOn": "2025-07-13 05:18:13", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2690833, + "title": "Hello!", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-14 00:59:03", + "videoUpdatedOn": null, + "createdOn": "2025-07-14 00:59:02", + "userID": 384913, + "fullname": "Karakure178", + "membershipType": 0, + "submittedOn": "2025-07-14 01:01:19", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2691476, + "title": "Other Worlds", + "description": "Other Worlds for Space Stratego shows how life is like in another star system.", + "instructions": "mouse", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-15 16:59:39", + "videoUpdatedOn": null, + "createdOn": "2025-07-15 15:44:31", + "userID": 537394, + "fullname": "Jens Valdez", + "membershipType": 0, + "submittedOn": "2025-07-15 16:33:46", + "status": 1, + "mode": "html" + }, + { + "visualID": 2691712, + "title": "PointsText", + "description": "Hundreds of points freely drift through space. When you click the mouse, a hidden message appears. :)\r\n\r\nThe Korean phrase “안녕하세요” means “Hello” in English.", + "instructions": "mouse click.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-17 06:42:38", + "videoUpdatedOn": null, + "createdOn": "2025-07-16 07:22:29", + "userID": 537625, + "fullname": "amebahead", + "membershipType": 0, + "submittedOn": "2025-07-17 06:42:52", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2691722, + "title": "Keep Moving Forward. 3D Inspiring Text on Cityscape", + "description": "This sketch overlays the inspiring phrase \"Keep Moving Forward\" as 3D text above a stylized dystopian cityscape and train. The scene encourages perseverance and mental health awareness, inviting viewers to reflect on their own journeys.", + "instructions": "Click the target to reveal something :)", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-18 19:16:55", + "videoUpdatedOn": null, + "createdOn": "2025-07-16 08:12:36", + "userID": 537649, + "fullname": "Chrysovalantis Constantinou", + "membershipType": 0, + "submittedOn": "2025-07-17 16:02:29", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2691837, + "title": "Anxiety in Motion", + "description": "", + "instructions": "Click for a different anxiety attack.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-20 05:53:21", + "videoUpdatedOn": null, + "createdOn": "2025-07-16 17:15:41", + "userID": 411850, + "fullname": "Antoinette Bumatay-Chan", + "membershipType": 0, + "submittedOn": "2025-07-20 06:03:49", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2692186, + "title": "Her", + "description": "Her entire life rests in the opening line of a novel.\r\n\r\nWith each click, you piece together Mrs. Dalloway’s fragmented stream of consciousness.\r\n\r\nInspired by the iconic first line of Mrs. Dalloway,\r\nthis work uses minimalist pixel-style typography and interactive behavior to mimic the rhythm of poetic thinking—an exploration of memory, language, and emotional resonance.\r\n\r\n她的一生,躺在小说的开头。\r\n\r\n一个安静而富有诗意的互动作品,一句漂浮的句子缓缓在屏幕上游动,\r\n如同水面上的思绪。拖动鼠标,可以按顺序收集这些词语——\r\n每个词都记得自己的位置,慢慢地跟随而来。\r\n一旦松开,它们又会再次四散漂流。\r\n\r\n你可以点击鼠标,串联起达洛维夫人混乱的思绪。\r\n\r\n本作品灵感来自《达洛维夫人》的开篇句,\r\n旨在通过互动行为模仿诗意思维的过程\r\n探索记忆、语言与情感的内在关系。", + "instructions": "mouse", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-17 08:25:32", + "videoUpdatedOn": null, + "createdOn": "2025-07-17 08:25:31", + "userID": 399902, + "fullname": "dakota", + "membershipType": 0, + "submittedOn": "2025-07-17 08:31:53", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2692229, + "title": "RIVER", + "description": "A river of memories, where the dead become stars, and the living become stones.这是一条记忆之河,死人的心脏会变成星星,而活着的人心脏,却随之变成了河中的石头。", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-17 10:54:58", + "videoUpdatedOn": null, + "createdOn": "2025-07-17 10:50:39", + "userID": 399902, + "fullname": "dakota", + "membershipType": 0, + "submittedOn": "2025-07-17 22:07:16", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693019, + "title": "memory pinball", + "description": "Childhood Memory Ball is a poetic interactive game that visualizes how present experiences collide with memories. You control a small ball — representing the present self — that bounces through a field of memory triggers. Each time it collides with one, a new ball is born, symbolizing the emergence of a new memory.\r\n\r\nThe game blends playful motion with metaphor, inviting reflection on how memory and identity evolve through interaction.", + "instructions": "Click anywhere on the screen to make the main ball jump.\r\nGuide the ball to collide with floating memory objects.\r\nEach collision creates a new ball, representing a newly awakened memory.\r\nWatch as the screen gradually fills with echoes of the past.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-19 10:08:36", + "videoUpdatedOn": null, + "createdOn": "2025-07-19 10:08:35", + "userID": 450483, + "fullname": "you", + "membershipType": 0, + "submittedOn": "2025-07-19 10:23:32", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693062, + "title": "RGB Symphony", + "description": "Dots forming the Japanese text \"三原色 (sangenshoku),\" meaning \"primary three colors,\" animated in RGB primary colors (red, green, and blue).", + "instructions": "Squint a bit—it’ll look clearer.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-19 13:16:02", + "videoUpdatedOn": null, + "createdOn": "2025-07-19 12:18:36", + "userID": 537962, + "fullname": "dansanburu", + "membershipType": 0, + "submittedOn": "2025-07-19 13:19:51", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693189, + "title": "cracks of light", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-19 22:53:18", + "videoUpdatedOn": null, + "createdOn": "2025-07-19 22:53:18", + "userID": 537994, + "fullname": "musiccabin", + "membershipType": 0, + "submittedOn": "2025-07-19 22:54:44", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693274, + "title": "confused", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-20 14:50:34", + "videoUpdatedOn": null, + "createdOn": "2025-07-20 07:42:30", + "userID": 421153, + "fullname": "Jack", + "membershipType": 0, + "submittedOn": "2025-07-20 14:50:49", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693301, + "title": "Tranquilizing blobs", + "description": "Randomly shaped, colored & moving bezier blobs filling the screen like gentle alien sea creatures. Features are customizable via keyboard - see (hideable) menu, Created this to mitigate some anxiety in my work, effectively replacing it with a sense of focus and creativity.", + "instructions": "Mouse & keyboard", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-20 10:34:06", + "videoUpdatedOn": null, + "createdOn": "2025-07-20 10:34:05", + "userID": 538024, + "fullname": "Mark S", + "membershipType": 0, + "submittedOn": "2025-07-20 10:45:13", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693310, + "title": "Wobbly emojis", + "description": "", + "instructions": "Mouse or keyboard", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-20 13:59:15", + "videoUpdatedOn": null, + "createdOn": "2025-07-20 11:41:11", + "userID": 85638, + "fullname": "Marie", + "membershipType": 0, + "submittedOn": "2025-07-20 14:00:25", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693345, + "title": "dyslexia", + "description": "simple story of perception", + "instructions": "mouse", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-20 14:22:25", + "videoUpdatedOn": null, + "createdOn": "2025-07-20 14:22:24", + "userID": 538006, + "fullname": "Cror", + "membershipType": 0, + "submittedOn": "2025-07-20 14:38:53", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693350, + "title": "Cognitive Pathway Interface", + "description": "Cognitive Pathway Interface is an interactive sketch designed to evoke memory, recognition, and focus through spatial geometry and perceptual rhythm. Six nodes encircle a central bloom, activating dynamically in response to user interaction. Each click initiates a shifting recall pattern, inviting engagement with cognitive cycles. This piece incorporates visual accessibility cues and offers a symbolic approach to clarity and mental resonance.", + "instructions": "Interaction Instructions \r\nClick the canvas to activate a memory pattern. \r\nWatch the glowing nodes and central bloom respond. \r\nEach click begins a new cycle of recognition.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-20 14:37:45", + "videoUpdatedOn": null, + "createdOn": "2025-07-20 14:37:45", + "userID": 538036, + "fullname": "michael clark", + "membershipType": 0, + "submittedOn": "2025-07-20 15:07:57", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693437, + "title": "HO-NO-O", + "description": "'\"炎\" HO-NO-O (Japanese for “flame”) characters, gently deforming like a campfire.", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-20 19:33:41", + "videoUpdatedOn": null, + "createdOn": "2025-07-20 19:31:43", + "userID": 537962, + "fullname": "dansanburu", + "membershipType": 0, + "submittedOn": "2025-07-20 19:33:52", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693481, + "title": "Energetic", + "description": "The word energetic being spelled out in coloured sparks of red, yellow and white on a black background.", + "instructions": "None", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-20 22:25:13", + "videoUpdatedOn": null, + "createdOn": "2025-07-20 22:22:04", + "userID": 536917, + "fullname": "David Braziel", + "membershipType": 1, + "submittedOn": "2025-07-20 22:24:58", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693512, + "title": "softness is universal", + "description": "Softness is Universal ✿ is a visual meditation on tenderness, language, and calm. Inspired by mental health and emotional awareness, this sketch creates a slow, breathing space where softness becomes visual and poetic. Words for “soft” appear in fifteen languages, each bringing a new pastel palette. They orbit gently as clouds, bubbles, and words like “breathe” and “calm” drift softly. Everything moves with quiet care, inviting you to pause and exhale.", + "instructions": "Click or drag your mouse to gently release more words like “breathe” and “calm.” Watch them drift slowly. Move your mouse to create soft ripples. The breathing circle and orbiting words unfold on their own.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-21 02:10:00", + "videoUpdatedOn": null, + "createdOn": "2025-07-21 01:55:40", + "userID": 536750, + "fullname": "electrocute", + "membershipType": 0, + "submittedOn": "2025-07-21 02:10:32", + "status": 1, + "mode": "html" + }, + { + "visualID": 2693514, + "title": "pullका phulका", + "description": "Multilingual type stretching", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-21 02:12:11", + "videoUpdatedOn": null, + "createdOn": "2025-07-21 02:01:23", + "userID": 536065, + "fullname": "Sai Ram Ved", + "membershipType": 0, + "submittedOn": "2025-07-21 02:12:42", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693520, + "title": "Wave of Freedom", + "description": "Created with p5.js, this sketch displays the word \"FREE\" in multiple languages including English, French (\"GRATUIT\"), Chinese (\"自由\"), and Spanish (\"LIBRE\"). Each word is rendered as point-based typography and animated into a flowing wave of 3D terracotta tiles. The piece explores motion, shape, and form through creative coding and multilingual design.", + "instructions": "Click on the canvas to cycle through different translations of the word.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-21 02:36:47", + "videoUpdatedOn": null, + "createdOn": "2025-07-21 02:28:05", + "userID": 536199, + "fullname": "Holland Blumer", + "membershipType": 0, + "submittedOn": "2025-07-21 02:29:23", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693522, + "title": "textToPoints & Clip", + "description": "By Richard Bourne, July 2025.", + "instructions": "Tap to save a screenshot", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-21 15:43:23", + "videoUpdatedOn": null, + "createdOn": "2025-07-21 02:40:42", + "userID": 162823, + "fullname": "Richard Bourne", + "membershipType": 1, + "submittedOn": "2025-07-21 17:27:26", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693533, + "title": "创新(innovation)", + "description": "An interactive meditation on innovation as Pandora’s box — each gesture releases threads of freedom, chaos, fear, and hope, tracing my own relationship with creative tools.", + "instructions": "Using mouse to drag the line through the finger tips to see the changes.", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-21 03:31:58", + "videoUpdatedOn": null, + "createdOn": "2025-07-21 03:21:56", + "userID": 538078, + "fullname": "Keming Kuang", + "membershipType": 0, + "submittedOn": "2025-07-21 03:32:50", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2693572, + "title": "Colorful Timing", + "description": "Interact with a visual vortex with color!", + "instructions": "Controls:\r\nMouse: Draw\r\nWheel: Brush Size\r\nSpace: Toggle Orbit\r\nC: Clear\r\nB: Toggle Blur\r\nP: Toggle Particles", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-21 05:51:35", + "videoUpdatedOn": null, + "createdOn": "2025-07-21 05:51:35", + "userID": 334658, + "fullname": "Vr3", + "membershipType": 0, + "submittedOn": "2025-07-21 06:16:50", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2694220, + "title": "face", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-22 20:51:13", + "videoUpdatedOn": null, + "createdOn": "2025-07-22 20:50:32", + "userID": 538305, + "fullname": "Michael Cahana", + "membershipType": 0, + "submittedOn": "2025-07-22 21:10:36", + "status": 1, + "mode": "html" + }, + { + "visualID": 2694222, + "title": "birds", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-22 20:57:09", + "videoUpdatedOn": null, + "createdOn": "2025-07-22 20:53:56", + "userID": 538305, + "fullname": "Michael Cahana", + "membershipType": 0, + "submittedOn": "2025-07-22 21:06:31", + "status": 1, + "mode": "html" + }, + { + "visualID": 2694224, + "title": "hello", + "description": "", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-22 21:03:54", + "videoUpdatedOn": null, + "createdOn": "2025-07-22 20:58:03", + "userID": 538305, + "fullname": "Michael Cahana", + "membershipType": 0, + "submittedOn": "2025-07-22 21:08:35", + "status": 1, + "mode": "html" + }, + { + "visualID": 2694233, + "title": "Petals", + "description": "A flower from 8 trees", + "instructions": "", + "parentID": 819688, + "thumbnailUpdatedOn": "2025-07-22 22:14:44", + "videoUpdatedOn": null, + "createdOn": "2025-07-22 22:14:42", + "userID": 538311, + "fullname": "Martin", + "membershipType": 0, + "submittedOn": "2025-07-31 17:29:04", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2697082, + "title": "Airy Text", + "description": "inspired by the artwork of the 'Premiers Symptomes' album of AIR", + "instructions": "", + "parentID": null, + "thumbnailUpdatedOn": "2025-07-29 13:58:20", + "videoUpdatedOn": null, + "createdOn": "2025-07-29 12:53:46", + "userID": 522855, + "fullname": "Toon Beerten", + "membershipType": 0, + "submittedOn": "2025-07-29 14:10:09", + "status": 1, + "mode": "p5js" + }, + { + "visualID": 2722646, + "title": "inverse petals", + "description": "A flower from 8 trees", + "instructions": "", + "parentID": 2709605, + "thumbnailUpdatedOn": "2025-09-14 00:36:10", + "videoUpdatedOn": null, + "createdOn": "2025-09-14 00:36:09", + "userID": 284347, + "fullname": "cemysf", + "membershipType": 0, + "submittedOn": "2025-09-14 00:41:26", + "status": 2, + "mode": "html" + }, + { + "visualID": 2722917, + "title": "Refrigerator Poetry", + "description": "", + "instructions": "DRAG magnets to make poetry! Poems are SAVED in the browser. Click BUTTON to scatter the magnets and erase your poems.", + "parentID": null, + "thumbnailUpdatedOn": "2025-09-18 16:20:21", + "videoUpdatedOn": null, + "createdOn": "2025-09-14 20:28:03", + "userID": 110137, + "fullname": "Ivan Rudnicki", + "membershipType": 2, + "submittedOn": "2025-09-20 10:27:47", + "status": 2, + "mode": "p5js" + }, + { + "visualID": 2752282, + "title": "Arte de Código Aberto", + "description": "Homage to Vamoss (Carlos de Oliveira Junior). Inspired in https://openprocessing.org/sketch/1621550", + "instructions": "Just watch", + "parentID": null, + "thumbnailUpdatedOn": "2025-10-11 19:05:33", + "videoUpdatedOn": null, + "createdOn": "2025-10-11 16:30:24", + "userID": 261766, + "fullname": "CLAUDIO ESPERANÇA", + "membershipType": 1, + "submittedOn": "2025-10-12 14:09:31", + "status": 2, + "mode": "html" + }, + { + "visualID": 2752620, + "title": "Curved Peano-Hilbert", + "description": "A Peano-Hilbert curve drawn with splines", + "instructions": "no interaction", + "parentID": null, + "thumbnailUpdatedOn": "2025-10-12 16:09:56", + "videoUpdatedOn": null, + "createdOn": "2025-10-12 14:13:21", + "userID": 261766, + "fullname": "CLAUDIO ESPERANÇA", + "membershipType": 1, + "submittedOn": "2025-10-12 17:21:10", + "status": 2, + "mode": "html" + } +] \ No newline at end of file diff --git a/src/cached-data/openprocessing-sketches/1957050.json b/src/cached-data/openprocessing-sketches/1957050.json new file mode 100644 index 0000000000..674dcbb29e --- /dev/null +++ b/src/cached-data/openprocessing-sketches/1957050.json @@ -0,0 +1,24 @@ +{ + "visualID": 1957050, + "title": "Generative Succulents", + "description": "Generative succulents for the #WCCChallenge", + "instructions": "each time you refresh you get new result", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2023-06-17 12:05:32", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2023-08-08 04:50:27", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2131, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 52944, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.6.0/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2036000.json b/src/cached-data/openprocessing-sketches/2036000.json new file mode 100644 index 0000000000..5ce43c017e --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2036000.json @@ -0,0 +1,24 @@ +{ + "visualID": 2036000, + "title": "Zen Pots", + "description": "A generative art work for the WCCChallenge topic 'Pottery'", + "instructions": "refresh to get a new output", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2023-10-07 17:39:15", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2023-10-07 17:43:00", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2176, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 52944, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.7.0/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2111906.json b/src/cached-data/openprocessing-sketches/2111906.json new file mode 100644 index 0000000000..fbf29557c1 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2111906.json @@ -0,0 +1,24 @@ +{ + "visualID": 2111906, + "title": "Microscope Simulator", + "description": "", + "instructions": "Press WSAD or Mouse to move the camera, use the slider to modify the focal length", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2023-12-02 19:35:38", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2023-12-03 05:29:20", + "thumbnailUpdatedOn": "2023-12-03 15:43:33", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2235, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 231571, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.0/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2174234.json b/src/cached-data/openprocessing-sketches/2174234.json new file mode 100644 index 0000000000..66b057b0dd --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2174234.json @@ -0,0 +1,24 @@ +{ + "visualID": 2174234, + "title": "Hilbert", + "description": "Space-filling algorithms ? #WCCChallenge", + "instructions": "Press the space bar for toggling between loop and noLoop.\r\nIf the controls are not responsive, please click on the canvas to ensure the browser focuses on it.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-02-10 17:42:18", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-02-10 17:46:53", + "thumbnailUpdatedOn": "2024-02-10 17:47:01", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2235, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 324002, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.0/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2194525.json b/src/cached-data/openprocessing-sketches/2194525.json new file mode 100644 index 0000000000..94324bb825 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2194525.json @@ -0,0 +1,24 @@ +{ + "visualID": 2194525, + "title": "Colorful Star", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-01 17:01:01", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-01 17:01:02", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2251, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 51673, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.1/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2211029.json b/src/cached-data/openprocessing-sketches/2211029.json new file mode 100644 index 0000000000..4f9310fcca --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2211029.json @@ -0,0 +1,24 @@ +{ + "visualID": 2211029, + "title": "#WCCC_Obscure_bg_submission", + "description": "An obscure cloud of bubbles in all different kinds of colors :D", + "instructions": "Mouse click to toggle full screen", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-16 13:31:27", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-16 13:31:27", + "videoUpdatedOn": null, + "parentID": 2107677, + "engineID": 2235, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 387225, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.0/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2211175.json b/src/cached-data/openprocessing-sketches/2211175.json new file mode 100644 index 0000000000..0327b3ec9f --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2211175.json @@ -0,0 +1,24 @@ +{ + "visualID": 2211175, + "title": "Subjective Time", + "description": "My idea was to try and show how time is subjective, specifically when having intrusive and depressive thoughts.\r\nThe ball bounces around and shrinks after each intrusive thought. The thoughts spawn randomly and time slows down for as for an unknown random period of time as well. The interactive and optimistic part of this code is that you can click away the intrusive thoughts. Fighting back makes your circle grow, corrects the time, and it makes the thought go away. This is the first version of the program and I plan to improve on this in the future.", + "instructions": "Left mouse click to fight against intrusive thoughts.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-16 20:55:48", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-16 20:58:23", + "thumbnailUpdatedOn": "2024-03-16 21:00:03", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2251, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 435103, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.1/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2211298.json b/src/cached-data/openprocessing-sketches/2211298.json new file mode 100644 index 0000000000..a51583e646 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2211298.json @@ -0,0 +1,24 @@ +{ + "visualID": 2211298, + "title": "Sudoku Cartography - Graph Theory", + "description": "Cartograhpic sudoku visualizer using graph theory. Each reload is a newly generated and mapped out sudoku game. See more at xladn0.rf.gd/gtsudoku/", + "instructions": "\"S\" to save as PNG. \r\nRefresh to generate a new one.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-17 01:45:43", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-17 01:45:44", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2251, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 435103, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.1/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2211359.json b/src/cached-data/openprocessing-sketches/2211359.json new file mode 100644 index 0000000000..c5b08ede03 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2211359.json @@ -0,0 +1,24 @@ +{ + "visualID": 2211359, + "title": "Cosmic Sands", + "description": "Perlin noise experiment", + "instructions": "mouse position has a small effect.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-17 06:03:13", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-17 06:03:14", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2251, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 435103, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.1/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2212666.json b/src/cached-data/openprocessing-sketches/2212666.json new file mode 100644 index 0000000000..0543004044 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2212666.json @@ -0,0 +1,29 @@ +{ + "visualID": 2212666, + "title": "LetteReflex", + "description": "Practice your typing reflexes with this stylish game!", + "instructions": "Keyboard for the most part, and mouse for interaction of the buttons.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-18 16:43:22", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-18 16:47:42", + "thumbnailUpdatedOn": "2024-03-18 16:43:22", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2251, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 2250, + "url": "https://cdn.jsdelivr.net/npm/p5@1.9.1/lib/addons/p5.sound.min.js" + } + ], + "templateID": 11, + "userID": 382926, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.1/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2213463.json b/src/cached-data/openprocessing-sketches/2213463.json new file mode 100644 index 0000000000..fd574767eb --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2213463.json @@ -0,0 +1,24 @@ +{ + "visualID": 2213463, + "title": "Slime Molds", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-19 03:15:11", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-19 03:15:12", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2251, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 429398, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.1/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2215521.json b/src/cached-data/openprocessing-sketches/2215521.json new file mode 100644 index 0000000000..1a18cacb86 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2215521.json @@ -0,0 +1,24 @@ +{ + "visualID": 2215521, + "title": "Letters from my mother", + "description": "A notebook-like background, containing incomprehensible text. Its characters' strokes get progressively wider as they approach the edge.", + "instructions": "Click on the canvas to restart the animation", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-20 13:10:06", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-20 14:43:31", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 435675, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2215570.json b/src/cached-data/openprocessing-sketches/2215570.json new file mode 100644 index 0000000000..f464170ef7 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2215570.json @@ -0,0 +1,24 @@ +{ + "visualID": 2215570, + "title": "Technology is not neutral", + "description": "type something", + "instructions": "", + "tags": [], + "license": "by-sa", + "isDraft": 0, + "createdOn": "2024-03-20 14:09:23", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-20 18:06:23", + "videoUpdatedOn": null, + "parentID": 874803, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 65884, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2215583.json b/src/cached-data/openprocessing-sketches/2215583.json new file mode 100644 index 0000000000..a9794fc8af --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2215583.json @@ -0,0 +1,26 @@ +{ + "visualID": 2215583, + "title": "Glitch animation", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-20 14:16:28", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-20 14:18:06", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 384913, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js", + "width": 800, + "height": 800 +} diff --git a/src/cached-data/openprocessing-sketches/2218758.json b/src/cached-data/openprocessing-sketches/2218758.json new file mode 100644 index 0000000000..2b5751a84e --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2218758.json @@ -0,0 +1,24 @@ +{ + "visualID": 2218758, + "title": "Gravity", + "description": "text displacement based on gravity, by john mayer.", + "instructions": "mouse", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-23 08:53:01", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-23 08:54:30", + "thumbnailUpdatedOn": "2024-03-23 08:53:01", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 436301, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2219842.json b/src/cached-data/openprocessing-sketches/2219842.json new file mode 100644 index 0000000000..4c876e3ac4 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2219842.json @@ -0,0 +1,24 @@ +{ + "visualID": 2219842, + "title": "Geodata Weaving", + "description": "weaving instructions for gps coordinates", + "instructions": "use mouse wheel and move to click different areas of the map", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-25 11:33:38", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-25 11:37:38", + "thumbnailUpdatedOn": "2024-03-25 11:44:30", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 436515, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2219978.json b/src/cached-data/openprocessing-sketches/2219978.json new file mode 100644 index 0000000000..98584bcf5c --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2219978.json @@ -0,0 +1,24 @@ +{ + "visualID": 2219978, + "title": "Elephant explode into a turtle", + "description": "Many physical particles are arranged in order to form the image of an elephant. As a wind-like force is applied to the particles the image dissolves. After a while another force let the particles reach a new position and form the image of a turtle.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-25 14:30:19", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-25 14:35:13", + "thumbnailUpdatedOn": "2024-03-25 14:30:19", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 436545, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2221624.json b/src/cached-data/openprocessing-sketches/2221624.json new file mode 100644 index 0000000000..7b80ba6a38 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2221624.json @@ -0,0 +1,24 @@ +{ + "visualID": 2221624, + "title": "Raining Sound", + "description": "A generative piano sequence with raindrop visuals", + "instructions": "Mouse click to begin", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-26 18:40:48", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-26 18:54:52", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 436786, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2221958.json b/src/cached-data/openprocessing-sketches/2221958.json new file mode 100644 index 0000000000..b97c1b2bbb --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2221958.json @@ -0,0 +1,24 @@ +{ + "visualID": 2221958, + "title": "Year of Dragon", + "description": "In celebration of CHINESE NEW YEAR and Year of Dragon", + "instructions": "Use your mouse to fly the Chinese dragon!", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-27 04:12:26", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-27 04:25:03", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 435438, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2221968.json b/src/cached-data/openprocessing-sketches/2221968.json new file mode 100644 index 0000000000..046653fa9d --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2221968.json @@ -0,0 +1,24 @@ +{ + "visualID": 2221968, + "title": "Theremin Simulator", + "description": "Let's play the virtual Theremin", + "instructions": "Click your mouse to trigger the sound. Then play like a real Theremin.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-27 04:32:38", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-27 04:32:58", + "thumbnailUpdatedOn": "2024-03-27 04:37:47", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 435438, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2224141.json b/src/cached-data/openprocessing-sketches/2224141.json new file mode 100644 index 0000000000..ff7bdc7cf4 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2224141.json @@ -0,0 +1,24 @@ +{ + "visualID": 2224141, + "title": "Breathe", + "description": "Text grid warp", + "instructions": "Mouse", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-28 20:05:15", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-30 22:31:59", + "thumbnailUpdatedOn": "2024-03-28 20:05:15", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 437141, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2224432.json b/src/cached-data/openprocessing-sketches/2224432.json new file mode 100644 index 0000000000..9eaf3cea04 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2224432.json @@ -0,0 +1,24 @@ +{ + "visualID": 2224432, + "title": "of atoms", + "description": "", + "instructions": "scroll - or just breath", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-29 05:54:27", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-29 05:54:27", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 281109, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2225254.json b/src/cached-data/openprocessing-sketches/2225254.json new file mode 100644 index 0000000000..c8124621a4 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225254.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225254, + "title": "Colorful Dots", + "description": "There are bunch of colored dots out there.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-30 14:29:35", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-30 14:29:36", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 385629, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2225285.json b/src/cached-data/openprocessing-sketches/2225285.json new file mode 100644 index 0000000000..d3550579bc --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225285.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225285, + "title": "Type Morpher", + "description": "", + "instructions": "Presh any letter on the keyboard. Use the sliders to change the parameters, and left and right key to change the stroke weight.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-30 15:35:22", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-30 15:35:23", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 183615, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2225358.json b/src/cached-data/openprocessing-sketches/2225358.json new file mode 100644 index 0000000000..8e2867a8fe --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225358.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225358, + "title": "Ghost in the Machine", + "description": "This sketch, titled Ghost in the Machine, takes thousands of aligned face images from the Faces in the Wild dataset, scanning up and down to display horizontal slices of a random subset of them in order to generate an extrapolated rendition of an exquisite corpse. You can move the mouse left and right to change the slice size.", + "instructions": "Move the mouse left and right to chance the slice size. Press 'f' to enter or exit fullscreen mode.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-30 19:35:55", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-30 19:37:39", + "thumbnailUpdatedOn": "2024-03-30 19:35:55", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 437358, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2225364.json b/src/cached-data/openprocessing-sketches/2225364.json new file mode 100644 index 0000000000..22eb904235 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225364.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225364, + "title": "Interlockings", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-30 19:47:04", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-30 19:47:33", + "thumbnailUpdatedOn": "2024-03-30 19:47:04", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 437358, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2225444.json b/src/cached-data/openprocessing-sketches/2225444.json new file mode 100644 index 0000000000..b0bc02e20d --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225444.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225444, + "title": "Dimension Door", + "description": "A swirling psychedelic vortex of multicoloured squares twists aggressively back and forth, seemingly descending into the black background.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-31 00:28:51", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-31 00:30:26", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 424615, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2225476.json b/src/cached-data/openprocessing-sketches/2225476.json new file mode 100644 index 0000000000..4c6a2486e2 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225476.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225476, + "title": "oesa collatz", + "description": "interactive representation of the collatz conjecture", + "instructions": "CLICK ON CENTER for random, or press keys for fine adjustment (see the comment in code)", + "tags": [], + "license": "none", + "isDraft": 0, + "createdOn": "2024-03-31 02:05:04", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-31 02:05:05", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 1, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 437373, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2225479.json b/src/cached-data/openprocessing-sketches/2225479.json new file mode 100644 index 0000000000..07112f893b --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225479.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225479, + "title": "A Love Letter from NYC", + "description": "This is a love letter to New York City and its invisible signifier—its vibrant soundscape. Featuring audio-reactive type as the central motif, this series of \"talking postcards\" connects the city's quintessential humdrum to people they're addressed to.", + "instructions": "mouse, keyboard", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-31 02:24:27", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-31 02:29:44", + "thumbnailUpdatedOn": "2024-03-31 02:24:27", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 396124, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2225499.json b/src/cached-data/openprocessing-sketches/2225499.json new file mode 100644 index 0000000000..786a199051 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225499.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225499, + "title": "Moths to a Flame", + "description": "A swarm of particles chases the mouse position and changes color as it converges.", + "instructions": "Mouse movement", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-31 03:55:46", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-31 03:55:46", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 436362, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2225628.json b/src/cached-data/openprocessing-sketches/2225628.json new file mode 100644 index 0000000000..5dd30b2057 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225628.json @@ -0,0 +1,26 @@ +{ + "visualID": 2225628, + "title": "Text in flowers", + "description": "Particles in place corresponding to the text", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-31 13:18:56", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-31 13:19:49", + "thumbnailUpdatedOn": "2024-03-31 13:24:09", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 207560, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js", + "width": 800, + "height": 800 +} diff --git a/src/cached-data/openprocessing-sketches/2225647.json b/src/cached-data/openprocessing-sketches/2225647.json new file mode 100644 index 0000000000..275968d6b8 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225647.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225647, + "title": "p5.js Community Sketch - March 2024 - Magnificent Four", + "description": "This artwork presents a mesmerizing depiction of four individuals expressing their creativity through diverse art styles, all unified on a single canvas.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-31 14:12:34", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-31 14:12:35", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 333690, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2225715.json b/src/cached-data/openprocessing-sketches/2225715.json new file mode 100644 index 0000000000..04dc23065f --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225715.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225715, + "title": "The Poetry of Clouds", + "description": "2D clouds made of white text float slowly across a blue sky. The shape of the clouds is changing subtly over time.", + "instructions": "No direct user interaction, but you can tweak constants in the code to alter the clouds.", + "tags": [], + "license": "by-sa", + "isDraft": 0, + "createdOn": "2024-03-31 15:49:31", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-31 15:49:32", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 4474, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2225777.json b/src/cached-data/openprocessing-sketches/2225777.json new file mode 100644 index 0000000000..3e93285dd2 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225777.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225777, + "title": "Padrão Geométrico", + "description": "Desenha uma grade de quadrados e dentro cada quadrado é desenhado um grafismo geométrico que variam entre formas simples como círculos e losango, até formas mais complexas como estrelas e outras que lembram um machado de duas hastes e uma coroa. Os elementos são preenchidos aleatoriamente a partir de uma paleta de vermelho, amarelo, verde, rosa e preto. Os desenhos internos de cada quadrado ficam crescendo e diminuindo com o passar do tempo.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-31 17:41:35", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-31 17:41:35", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 14377, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2225865.json b/src/cached-data/openprocessing-sketches/2225865.json new file mode 100644 index 0000000000..d987a04632 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225865.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225865, + "title": "Spiral Clock", + "description": "A dark-blue canvas, where six-hundred colorful (light blue and pink) pill-shaped objects appear, ten of them each second. These objects spawn from left to right on the vertical center of the canvas, taking a total of sixty seconds. After spawning, they move clockwise around the center of the canvas, resulting in a spiraling animation. After sixty seconds, the animation restarts.", + "instructions": "None", + "tags": [], + "license": "by", + "isDraft": 1, + "createdOn": "2024-03-31 20:33:27", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-31 20:36:15", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 437417, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2225914.json b/src/cached-data/openprocessing-sketches/2225914.json new file mode 100644 index 0000000000..5ccf3256ea --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225914.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225914, + "title": "Word Scatter", + "description": "Letters randomly scattered around the canvas by user interaction to create an interesting composition.", + "instructions": "Use your mouse to place a group of letters around the canvas!", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-31 21:41:27", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-31 21:41:27", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 390576, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2225924.json b/src/cached-data/openprocessing-sketches/2225924.json new file mode 100644 index 0000000000..401577b5e4 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225924.json @@ -0,0 +1,26 @@ +{ + "visualID": 2225924, + "title": "Binary Epoch Time", + "description": "Unix epoch time (seconds since Jan 1, 1970) in binary on a 6x6 grid with white for 1s and black for 0s. The grey squares show the limitation of 32-bit computer systems that will fail to represent time accurately after January 19, 2038.", + "instructions": "", + "tags": [], + "license": "by-sa", + "isDraft": 0, + "createdOn": "2024-03-31 21:46:31", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-03-31 21:46:31", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 4474, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js", + "width": 200, + "height": 200 +} diff --git a/src/cached-data/openprocessing-sketches/2225939.json b/src/cached-data/openprocessing-sketches/2225939.json new file mode 100644 index 0000000000..00c30c87d6 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2225939.json @@ -0,0 +1,24 @@ +{ + "visualID": 2225939, + "title": "Touch Grass", + "description": "Type as image exploration, touching grass", + "instructions": "Hover over / press on letters, it might take a bit to load", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-03-31 21:57:15", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-03-31 22:02:20", + "thumbnailUpdatedOn": "2024-03-31 22:04:10", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 437419, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2226039.json b/src/cached-data/openprocessing-sketches/2226039.json new file mode 100644 index 0000000000..8bf950123b --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2226039.json @@ -0,0 +1,24 @@ +{ + "visualID": 2226039, + "title": "Collapsing Typography", + "description": "A row of pixelated random letters in green, yellow, and blue are along the top of the canvas, row by row down the canvas the letters simplify into lines. The composition changes over and over.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-04-01 00:40:19", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-04-01 00:40:19", + "thumbnailUpdatedOn": "2024-04-01 00:40:20", + "videoUpdatedOn": null, + "parentID": 2150529, + "engineID": 2235, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 265818, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.0/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2226058.json b/src/cached-data/openprocessing-sketches/2226058.json new file mode 100644 index 0000000000..642fb79dd6 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2226058.json @@ -0,0 +1,26 @@ +{ + "visualID": 2226058, + "title": "glow", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-04-01 00:59:23", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-04-01 00:59:24", + "videoUpdatedOn": null, + "parentID": 2135015, + "engineID": 2235, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 227384, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.0/lib/p5.js", + "mode": "p5js", + "width": 900, + "height": 900 +} diff --git a/src/cached-data/openprocessing-sketches/2227004.json b/src/cached-data/openprocessing-sketches/2227004.json new file mode 100644 index 0000000000..dc392e922a --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2227004.json @@ -0,0 +1,26 @@ +{ + "visualID": 2227004, + "title": "Everything", + "description": "A black canvas with a set of white circles turning around a void, while thousands of little circles creates an algorithmic choreography in the other way. The canvas shows at the right corner written in lots of languages the word 'everything'", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-04-02 00:43:40", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-04-02 00:43:40", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 54041, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js", + "width": 700, + "height": 1000 +} diff --git a/src/cached-data/openprocessing-sketches/2233559.json b/src/cached-data/openprocessing-sketches/2233559.json new file mode 100644 index 0000000000..feea9bd86c --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2233559.json @@ -0,0 +1,24 @@ +{ + "visualID": 2233559, + "title": "Still Life", + "description": "A still life featuring cherries, strawberries, an apple, sliced plums, and peaches set in and around various stemmed glassware. This is an interpretation of a photo by Victoria Jane Photography: https://www.instagram.com/p/CGICi-sl4nH/. Watch a time-lapse here: https://vimeo.com/509329812", + "instructions": "Pan, zoom, or rotate around the still life with a mouse or trackpad", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-04-08 15:43:24", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2024-04-08 15:43:24", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 438591, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2234287.json b/src/cached-data/openprocessing-sketches/2234287.json new file mode 100644 index 0000000000..694bd4aa75 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2234287.json @@ -0,0 +1,26 @@ +{ + "visualID": 2234287, + "title": "Forming Identity", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-04-09 04:19:30", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-04-09 04:19:51", + "thumbnailUpdatedOn": "2024-04-09 04:39:03", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 438061, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js", + "width": 600, + "height": 600 +} diff --git a/src/cached-data/openprocessing-sketches/2235700.json b/src/cached-data/openprocessing-sketches/2235700.json new file mode 100644 index 0000000000..13e65ca4fa --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2235700.json @@ -0,0 +1,26 @@ +{ + "visualID": 2235700, + "title": "Repurpose the tombs", + "description": "Manhattan Detention Complex (The Tombs) incarcerates 900 people, most of whom are pre-trial detainees. A recent proposal would triple MDC in size to a total of 1.5 million square feet. There are many ways to conceive of how economic, political, and physical resources from prison abolition can be redirected. This map explores the spatial consequence and possibilities of a repurposed MDC without pre-trial detention, cash bail or prisons entirely. Fill the 1.5 million square foot space in downtown Manhattan with abolitionist resources as an exercise in mapping a world without prisons.", + "instructions": "mouse", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-04-10 01:49:09", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2024-04-10 02:17:16", + "thumbnailUpdatedOn": "2024-04-10 01:49:09", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2257, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 438906, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.9.2/lib/p5.js", + "mode": "p5js", + "width": 930, + "height": 600 +} diff --git a/src/cached-data/openprocessing-sketches/2484739.json b/src/cached-data/openprocessing-sketches/2484739.json new file mode 100644 index 0000000000..3b4f3203df --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2484739.json @@ -0,0 +1,26 @@ +{ + "visualID": 2484739, + "title": "All you need is infinite love!", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2024-12-12 05:15:04", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-08-26 06:35:29", + "videoUpdatedOn": null, + "parentID": 2484727, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 91533, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js", + "width": 650, + "height": 650 +} diff --git a/src/cached-data/openprocessing-sketches/2667421.json b/src/cached-data/openprocessing-sketches/2667421.json new file mode 100644 index 0000000000..d472df2d7c --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2667421.json @@ -0,0 +1,24 @@ +{ + "visualID": 2667421, + "title": "Mucuripe", + "description": "", + "instructions": "Click on the canvas to visualize the flow field.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-06-03 13:22:22", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-15 12:45:03", + "thumbnailUpdatedOn": "2025-07-15 23:04:28", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 517567, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2684408.json b/src/cached-data/openprocessing-sketches/2684408.json new file mode 100644 index 0000000000..8b4e15b6eb --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2684408.json @@ -0,0 +1,24 @@ +{ + "visualID": 2684408, + "title": "Meditations", + "description": "Lines of text from the Tao Te Ching by Laozi. Each line of text is displayed as extruded 3D models with the characters individually rotating along the y-axis and a subtle blurring effect.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-06-27 15:08:41", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-06-27 15:10:16", + "thumbnailUpdatedOn": "2025-07-16 04:18:39", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 535160, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2685854.json b/src/cached-data/openprocessing-sketches/2685854.json new file mode 100644 index 0000000000..d6aa35bb9e --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2685854.json @@ -0,0 +1,24 @@ +{ + "visualID": 2685854, + "title": "Textured Text", + "description": "This sketch renders a pattern to text", + "instructions": "mouse", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-01 14:56:04", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-11 18:23:09", + "thumbnailUpdatedOn": "2025-07-07 14:55:36", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2323, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 314640, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.2/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2687037.json b/src/cached-data/openprocessing-sketches/2687037.json new file mode 100644 index 0000000000..7cc0ed3dce --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2687037.json @@ -0,0 +1,24 @@ +{ + "visualID": 2687037, + "title": "Computational Alchemy", + "description": "Rotating extruded text exploring the ties of computers and alchemy", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-03 15:10:02", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-03 15:10:03", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 535160, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2687150.json b/src/cached-data/openprocessing-sketches/2687150.json new file mode 100644 index 0000000000..7b6f1a89a7 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2687150.json @@ -0,0 +1,26 @@ +{ + "visualID": 2687150, + "title": "A–Z", + "description": "A slowly rotating 3D rendering of the letter \"A\" connected to the letter \"Z\" by lines generated from textToPoints()", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-03 18:30:27", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-03 18:31:01", + "thumbnailUpdatedOn": "2025-07-03 18:41:44", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 536340, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js", + "width": 1000, + "height": 600 +} diff --git a/src/cached-data/openprocessing-sketches/2687209.json b/src/cached-data/openprocessing-sketches/2687209.json new file mode 100644 index 0000000000..79dfbf67b0 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2687209.json @@ -0,0 +1,32 @@ +{ + "visualID": 2687209, + "title": "Multi Colorfonts 4", + "description": "By Richard Bourne from original by Quark (Peter Lager)\r\nPOSITIVE RESULT. Fonts for personal use only.", + "instructions": "Tap to save a screenshot", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-03 21:55:21", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-04 03:57:54", + "thumbnailUpdatedOn": "2025-07-04 04:01:25", + "videoUpdatedOn": null, + "parentID": 2687055, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 519372, + "url": "https://opentype.js.org/dist/opentype.js", + "custom": 1 + } + ], + "templateID": null, + "userID": 162823, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js", + "width": 920, + "height": 690 +} diff --git a/src/cached-data/openprocessing-sketches/2687476.json b/src/cached-data/openprocessing-sketches/2687476.json new file mode 100644 index 0000000000..cf5bec1610 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2687476.json @@ -0,0 +1,24 @@ +{ + "visualID": 2687476, + "title": "Multilingual Breathe", + "description": "An animated multilingual breathing guide exploring the intersection of typography and mental health, using p5.js 2.0 features like variable fonts and animated text. Part of the p5.js Community Sketch 2025 Open Call.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-04 16:26:41", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-05 07:32:15", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 536298, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2687818.json b/src/cached-data/openprocessing-sketches/2687818.json new file mode 100644 index 0000000000..18ea35fe55 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2687818.json @@ -0,0 +1,24 @@ +{ + "visualID": 2687818, + "title": "Multilingual Breathe with Sound", + "description": "Breathing exercise to relax yourself\r\nAn animated multilingual breathing guide exploring the intersection of typography and mental health, using p5.js 2.0 features like variable fonts and animated text. Chinese and arabic lsnguages added. Sounds imcluded. Part of the p5.js Community Sketch 2025 Open Call.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-05 17:58:03", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-07 06:26:49", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 536298, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2688458.json b/src/cached-data/openprocessing-sketches/2688458.json new file mode 100644 index 0000000000..bda55d18a5 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2688458.json @@ -0,0 +1,24 @@ +{ + "visualID": 2688458, + "title": "Multilingual feeling wheel", + "description": "This interactive p5.js sketch visualizes human emotions across multiple languages. Users select a feeling from a menu; the chosen emotion is then displayed in ten different languages (including English, Spanish, Catalan, German, Italian, Portuguese, French, Dutch, Polish, and Turkish). Each word animates independently, moving around the canvas at varying speeds and sizes, creating a dynamic tapestry of language and emotion.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-07 10:57:39", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-07 11:16:57", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 536298, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2688500.json b/src/cached-data/openprocessing-sketches/2688500.json new file mode 100644 index 0000000000..cb71e49e7b --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2688500.json @@ -0,0 +1,24 @@ +{ + "visualID": 2688500, + "title": "peh oe ji combinations", + "description": "legal combinations of a syllable in peh oe ji", + "instructions": "mouse click", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-07 13:12:13", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-12 20:51:14", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 256391, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2688574.json b/src/cached-data/openprocessing-sketches/2688574.json new file mode 100644 index 0000000000..de77f65c5a --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2688574.json @@ -0,0 +1,26 @@ +{ + "visualID": 2688574, + "title": "Faces of emotional words", + "description": "This interactive p5.js project explores the universal language of human emotion through generative portraiture. Users can select from seven basic emotions—joy, sadness, anger, fear, disgust, surprise, and contempt—each represented by a unique facial expression composed entirely of emotion-related words in multiple languages. The facial contours, including the head, eyes, eyebrows, and mouth, are dynamically drawn using spaced, legible text, allowing the viewer to \"read\" the emotion visually and linguistically. This piece blends code, typography and emotional expression.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-07 17:10:21", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-07 17:36:20", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 536298, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js", + "width": 600, + "height": 600 +} diff --git a/src/cached-data/openprocessing-sketches/2688718.json b/src/cached-data/openprocessing-sketches/2688718.json new file mode 100644 index 0000000000..e2855825bd --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2688718.json @@ -0,0 +1,24 @@ +{ + "visualID": 2688718, + "title": "radiance-cascades-plinko-typing", + "description": "A sketch that allows users to type using their keyboard which will spawn balls in the shape of the typed text. These balls are used in a game of Plinko with each ball realistically emitting light using radiance cascades.\r\n\r\nhttps://github.com/sobecblobec/radiance-cascades-p5js", + "instructions": "Type and press enter to release balls!", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-07 23:51:36", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-10 03:47:11", + "thumbnailUpdatedOn": "2025-07-07 23:51:36", + "videoUpdatedOn": "2025-07-10 03:37:32", + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 317778, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2688829.json b/src/cached-data/openprocessing-sketches/2688829.json new file mode 100644 index 0000000000..b618e48f09 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2688829.json @@ -0,0 +1,24 @@ +{ + "visualID": 2688829, + "title": "Emotional Echoes: Multilingual Typography Experiment", + "description": "“Emotional Echoes” is an interactive generative art piece that visualizes six core emotions—happy, anxious, peaceful, angry, sad, hopeful—across five languages (English, Spanish, Japanese, Arabic, Hindi). A dynamic HSB gradient background smoothly transitions with each emotion, while floating “body sensation” particles and a circular typography display immerse you in the feeling. Hover-triggered character particles and an emotion wheel let you explore subtle visual and textual nuances of how different cultures express the same mood.", + "instructions": "Click anywhere on the canvas to cycle through the six emotions in sequence.\r\n\r\nHover your mouse over any floating word in the central ring to trigger tiny text‐particle bursts.\r\n\r\nClick the emotion wheel at top‐right to jump directly to a specific emotion.", + "tags": [], + "license": "by", + "isDraft": 0, + "createdOn": "2025-07-08 08:12:29", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-08 08:31:58", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": 10, + "userID": 303096, + "engineURL": "", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2689119.json b/src/cached-data/openprocessing-sketches/2689119.json new file mode 100644 index 0000000000..8d7c6cea42 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2689119.json @@ -0,0 +1,24 @@ +{ + "visualID": 2689119, + "title": "Boiling Point", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-09 00:06:54", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-10 00:57:39", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 67809, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2689698.json b/src/cached-data/openprocessing-sketches/2689698.json new file mode 100644 index 0000000000..33a394dfea --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2689698.json @@ -0,0 +1,24 @@ +{ + "visualID": 2689698, + "title": "community submission", + "description": "A submission for the P5js Community Sketch 2025 in solidarity with Palestine", + "instructions": "Emotion: sad, appalled, nauseated, grief, overwhelmed, furious", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-10 07:37:25", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-10 10:56:01", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": 13, + "userID": 230948, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2689746.json b/src/cached-data/openprocessing-sketches/2689746.json new file mode 100644 index 0000000000..7c20246447 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2689746.json @@ -0,0 +1,29 @@ +{ + "visualID": 2689746, + "title": "Flipped Script!", + "description": "", + "instructions": "CLICK to change easing mode!", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-10 12:10:44", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-10 23:22:53", + "thumbnailUpdatedOn": "2025-07-26 09:41:26", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 2076, + "url": "https://cdn.jsdelivr.net/gh/IDMNYU/p5.js-func@0.5.1/lib/p5.func.min.js" + } + ], + "templateID": null, + "userID": 110137, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2689926.json b/src/cached-data/openprocessing-sketches/2689926.json new file mode 100644 index 0000000000..aa798e1c4d --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2689926.json @@ -0,0 +1,24 @@ +{ + "visualID": 2689926, + "title": "Multilingual Affirmations", + "description": "Animated multilingual affirmations using point-contour typography. Includes English, Hindi, Spanish, Chinese, Japanese, and German. Gentle breathing background.", + "instructions": "Click anywhere to reveal the next set of affirmations in all six languages", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-10 21:43:53", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-12 00:11:11", + "thumbnailUpdatedOn": "2025-07-10 21:43:53", + "videoUpdatedOn": "2025-07-13 03:16:39", + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 514622, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2690038.json b/src/cached-data/openprocessing-sketches/2690038.json new file mode 100644 index 0000000000..b1ad382fe6 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2690038.json @@ -0,0 +1,30 @@ +{ + "visualID": 2690038, + "title": "Feelings make us human", + "description": "colorful text animation where the contours fly in different directions and will be accellerated by gravity.", + "instructions": "time", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-11 07:55:07", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-11 10:29:11", + "thumbnailUpdatedOn": "2025-07-11 11:52:46", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 522375, + "url": "https://cdn.jsdelivr.net/npm/p5.woff2@0.0.3/lib/p5.woff2.js", + "custom": 1 + } + ], + "templateID": null, + "userID": 363571, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2690045.json b/src/cached-data/openprocessing-sketches/2690045.json new file mode 100644 index 0000000000..a3972189b1 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2690045.json @@ -0,0 +1,29 @@ +{ + "visualID": 2690045, + "title": "Taiwanese(Tâi-gí) Idioms", + "description": "An interactive canvas that generates random Taiwanese (Tâi-gí) idiomatic expressions.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-11 09:17:07", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-13 13:27:49", + "thumbnailUpdatedOn": "2025-07-13 12:33:19", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 2285, + "url": "https://cdn.jsdelivr.net/gh/msawired/OPC@0.6.0/opc.js" + } + ], + "templateID": null, + "userID": 231571, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2690078.json b/src/cached-data/openprocessing-sketches/2690078.json new file mode 100644 index 0000000000..85ee1ad59e --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2690078.json @@ -0,0 +1,30 @@ +{ + "visualID": 2690078, + "title": "outside / inside", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-11 13:19:33", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-11 13:20:03", + "thumbnailUpdatedOn": "2025-07-11 13:22:13", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 519547, + "url": "simplexNoise.js", + "custom": 1 + } + ], + "templateID": null, + "userID": 183691, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2690405.json b/src/cached-data/openprocessing-sketches/2690405.json new file mode 100644 index 0000000000..2dcd383923 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2690405.json @@ -0,0 +1,30 @@ +{ + "visualID": 2690405, + "title": "Haiku", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-12 13:55:50", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-12 13:57:40", + "thumbnailUpdatedOn": "2025-07-12 14:09:42", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 519613, + "url": "https://cdn.jsdelivr.net/npm/p5.sound@0.2.0/dist/p5.sound.min.js", + "custom": 1 + } + ], + "templateID": null, + "userID": 536917, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2690534.json b/src/cached-data/openprocessing-sketches/2690534.json new file mode 100644 index 0000000000..fbd2de1470 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2690534.json @@ -0,0 +1,24 @@ +{ + "visualID": 2690534, + "title": "Parmenides", + "description": "A few lines from Plato's \"Parmenides\"", + "instructions": "click for Greek", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-12 21:57:00", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-12 21:57:01", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 523875, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2690571.json b/src/cached-data/openprocessing-sketches/2690571.json new file mode 100644 index 0000000000..aab6769a04 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2690571.json @@ -0,0 +1,34 @@ +{ + "visualID": 2690571, + "title": "Abracadabra (anamorphic 3D text)", + "description": "3D anamorphic words, that read different words when seen from different angles", + "instructions": "Left/Right arrows to swap views, Space to reset position, use OPC controls for additional settings", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-13 01:50:34", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-13 01:50:59", + "thumbnailUpdatedOn": "2025-07-13 02:09:09", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 2285, + "url": "https://cdn.jsdelivr.net/gh/msawired/OPC@0.6.0/opc.js" + }, + { + "libraryID": 523946, + "url": "https://cdn.jsdelivr.net/npm/@davepagurek/p5.csg@0.0.3", + "custom": 1 + } + ], + "templateID": null, + "userID": 314603, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2690613.json b/src/cached-data/openprocessing-sketches/2690613.json new file mode 100644 index 0000000000..31bd49fd03 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2690613.json @@ -0,0 +1,24 @@ +{ + "visualID": 2690613, + "title": "Inspiration", + "description": "Inspiration can be drawn from many places in the world. \r\nIt is not always clear, and can take time to interpret and understand,\r\nbut eventually you get better at recognizing it.", + "instructions": "- F for fullscreen\r\n- A to redraw to fit window \r\n- R to randomize and redraw\r\n- S to save an image (with a title that contains information on the word shown)", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-13 03:27:53", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-13 04:48:12", + "thumbnailUpdatedOn": "2025-07-13 05:12:24", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 327947, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2690833.json b/src/cached-data/openprocessing-sketches/2690833.json new file mode 100644 index 0000000000..5bfb720001 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2690833.json @@ -0,0 +1,24 @@ +{ + "visualID": 2690833, + "title": "Hello!", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-14 00:59:02", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-14 00:59:03", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 384913, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2691476.json b/src/cached-data/openprocessing-sketches/2691476.json new file mode 100644 index 0000000000..8a50d2f281 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2691476.json @@ -0,0 +1,24 @@ +{ + "visualID": 2691476, + "title": "Other Worlds", + "description": "Other Worlds for Space Stratego shows how life is like in another star system.", + "instructions": "mouse", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-15 15:44:31", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-15 16:59:39", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 537394, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2691712.json b/src/cached-data/openprocessing-sketches/2691712.json new file mode 100644 index 0000000000..9c014b9585 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2691712.json @@ -0,0 +1,24 @@ +{ + "visualID": 2691712, + "title": "PointsText", + "description": "Hundreds of points freely drift through space. When you click the mouse, a hidden message appears. :)\r\n\r\nThe Korean phrase “안녕하세요” means “Hello” in English.", + "instructions": "mouse click.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-16 07:22:29", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-17 06:42:38", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 537625, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2691722.json b/src/cached-data/openprocessing-sketches/2691722.json new file mode 100644 index 0000000000..4759f759da --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2691722.json @@ -0,0 +1,24 @@ +{ + "visualID": 2691722, + "title": "Keep Moving Forward. 3D Inspiring Text on Cityscape", + "description": "This sketch overlays the inspiring phrase \"Keep Moving Forward\" as 3D text above a stylized dystopian cityscape and train. The scene encourages perseverance and mental health awareness, inviting viewers to reflect on their own journeys.", + "instructions": "Click the target to reveal something :)", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-16 08:12:36", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-16 08:14:09", + "thumbnailUpdatedOn": "2025-07-18 19:16:55", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 537649, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2691837.json b/src/cached-data/openprocessing-sketches/2691837.json new file mode 100644 index 0000000000..79fda0b43b --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2691837.json @@ -0,0 +1,24 @@ +{ + "visualID": 2691837, + "title": "Anxiety in Motion", + "description": "", + "instructions": "Click for a different anxiety attack.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-16 17:15:41", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-16 17:16:15", + "thumbnailUpdatedOn": "2025-07-20 05:53:21", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 411850, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2692186.json b/src/cached-data/openprocessing-sketches/2692186.json new file mode 100644 index 0000000000..702000d1c4 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2692186.json @@ -0,0 +1,26 @@ +{ + "visualID": 2692186, + "title": "Her", + "description": "Her entire life rests in the opening line of a novel.\r\n\r\nWith each click, you piece together Mrs. Dalloway’s fragmented stream of consciousness.\r\n\r\nInspired by the iconic first line of Mrs. Dalloway,\r\nthis work uses minimalist pixel-style typography and interactive behavior to mimic the rhythm of poetic thinking—an exploration of memory, language, and emotional resonance.\r\n\r\n她的一生,躺在小说的开头。\r\n\r\n一个安静而富有诗意的互动作品,一句漂浮的句子缓缓在屏幕上游动,\r\n如同水面上的思绪。拖动鼠标,可以按顺序收集这些词语——\r\n每个词都记得自己的位置,慢慢地跟随而来。\r\n一旦松开,它们又会再次四散漂流。\r\n\r\n你可以点击鼠标,串联起达洛维夫人混乱的思绪。\r\n\r\n本作品灵感来自《达洛维夫人》的开篇句,\r\n旨在通过互动行为模仿诗意思维的过程\r\n探索记忆、语言与情感的内在关系。", + "instructions": "mouse", + "tags": [], + "license": "by-nc-sa", + "isDraft": 1, + "createdOn": "2025-07-17 08:25:31", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-17 08:25:32", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 1, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 399902, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js", + "width": 800, + "height": 600 +} diff --git a/src/cached-data/openprocessing-sketches/2692229.json b/src/cached-data/openprocessing-sketches/2692229.json new file mode 100644 index 0000000000..6bc95729b2 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2692229.json @@ -0,0 +1,26 @@ +{ + "visualID": 2692229, + "title": "RIVER", + "description": "A river of memories, where the dead become stars, and the living become stones.这是一条记忆之河,死人的心脏会变成星星,而活着的人心脏,却随之变成了河中的石头。", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-17 10:50:39", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-17 10:54:58", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 399902, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js", + "width": 400, + "height": 700 +} diff --git a/src/cached-data/openprocessing-sketches/2693019.json b/src/cached-data/openprocessing-sketches/2693019.json new file mode 100644 index 0000000000..78e5603851 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693019.json @@ -0,0 +1,32 @@ +{ + "visualID": 2693019, + "title": "memory pinball", + "description": "Childhood Memory Ball is a poetic interactive game that visualizes how present experiences collide with memories. You control a small ball — representing the present self — that bounces through a field of memory triggers. Each time it collides with one, a new ball is born, symbolizing the emergence of a new memory.\r\n\r\nThe game blends playful motion with metaphor, inviting reflection on how memory and identity evolve through interaction.", + "instructions": "Click anywhere on the screen to make the main ball jump.\r\nGuide the ball to collide with floating memory objects.\r\nEach collision creates a new ball, representing a newly awakened memory.\r\nWatch as the screen gradually fills with echoes of the past.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-19 10:08:35", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-19 10:11:59", + "thumbnailUpdatedOn": "2025-07-19 10:08:36", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 1, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 520343, + "url": "https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.19.0/matter.min.js", + "custom": 1 + } + ], + "templateID": null, + "userID": 450483, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js", + "width": 1280, + "height": 1920 +} diff --git a/src/cached-data/openprocessing-sketches/2693062.json b/src/cached-data/openprocessing-sketches/2693062.json new file mode 100644 index 0000000000..71b00649f9 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693062.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693062, + "title": "RGB Symphony", + "description": "Dots forming the Japanese text \"三原色 (sangenshoku),\" meaning \"primary three colors,\" animated in RGB primary colors (red, green, and blue).", + "instructions": "Squint a bit—it’ll look clearer.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-19 12:18:36", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-19 12:19:29", + "thumbnailUpdatedOn": "2025-07-19 13:16:02", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 537962, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693189.json b/src/cached-data/openprocessing-sketches/2693189.json new file mode 100644 index 0000000000..da4dd90e1e --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693189.json @@ -0,0 +1,29 @@ +{ + "visualID": 2693189, + "title": "cracks of light", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-19 22:53:18", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-19 22:53:18", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 2321, + "url": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/addons/p5.sound.min.js" + } + ], + "templateID": null, + "userID": 537994, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693274.json b/src/cached-data/openprocessing-sketches/2693274.json new file mode 100644 index 0000000000..c0bd21613b --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693274.json @@ -0,0 +1,30 @@ +{ + "visualID": 2693274, + "title": "confused", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-20 07:42:30", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-20 14:50:34", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [ + { + "libraryID": 520534, + "url": "https://cdn.jsdelivr.net/npm/p5.woff2@0.0.3/lib/p5.woff2.js", + "custom": 1 + } + ], + "templateID": null, + "userID": 421153, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693301.json b/src/cached-data/openprocessing-sketches/2693301.json new file mode 100644 index 0000000000..1452807731 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693301.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693301, + "title": "Tranquilizing blobs", + "description": "Randomly shaped, colored & moving bezier blobs filling the screen like gentle alien sea creatures. Features are customizable via keyboard - see (hideable) menu, Created this to mitigate some anxiety in my work, effectively replacing it with a sense of focus and creativity.", + "instructions": "Mouse & keyboard", + "tags": [], + "license": "by", + "isDraft": 0, + "createdOn": "2025-07-20 10:34:05", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-20 10:34:06", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 538024, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693310.json b/src/cached-data/openprocessing-sketches/2693310.json new file mode 100644 index 0000000000..589f1fc902 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693310.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693310, + "title": "Wobbly emojis", + "description": "", + "instructions": "Mouse or keyboard", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-20 11:41:11", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-20 11:47:51", + "thumbnailUpdatedOn": "2025-07-20 13:59:15", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 85638, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693345.json b/src/cached-data/openprocessing-sketches/2693345.json new file mode 100644 index 0000000000..3ff61d7202 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693345.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693345, + "title": "dyslexia", + "description": "simple story of perception", + "instructions": "mouse", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-20 14:22:24", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-20 14:22:25", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 538006, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693350.json b/src/cached-data/openprocessing-sketches/2693350.json new file mode 100644 index 0000000000..80e7d8a818 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693350.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693350, + "title": "Cognitive Pathway Interface", + "description": "Cognitive Pathway Interface is an interactive sketch designed to evoke memory, recognition, and focus through spatial geometry and perceptual rhythm. Six nodes encircle a central bloom, activating dynamically in response to user interaction. Each click initiates a shifting recall pattern, inviting engagement with cognitive cycles. This piece incorporates visual accessibility cues and offers a symbolic approach to clarity and mental resonance.", + "instructions": "Interaction Instructions \r\nClick the canvas to activate a memory pattern. \r\nWatch the glowing nodes and central bloom respond. \r\nEach click begins a new cycle of recognition.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-20 14:37:45", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-20 14:37:45", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 538036, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693437.json b/src/cached-data/openprocessing-sketches/2693437.json new file mode 100644 index 0000000000..90992c9331 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693437.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693437, + "title": "HO-NO-O", + "description": "'\"炎\" HO-NO-O (Japanese for “flame”) characters, gently deforming like a campfire.", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-20 19:31:43", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-20 19:33:41", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 537962, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693481.json b/src/cached-data/openprocessing-sketches/2693481.json new file mode 100644 index 0000000000..aeb876f56e --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693481.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693481, + "title": "Energetic", + "description": "The word energetic being spelled out in coloured sparks of red, yellow and white on a black background.", + "instructions": "None", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-20 22:22:04", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-20 22:22:25", + "thumbnailUpdatedOn": "2025-07-20 22:25:13", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 536917, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693512.json b/src/cached-data/openprocessing-sketches/2693512.json new file mode 100644 index 0000000000..8c431e4d6f --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693512.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693512, + "title": "softness is universal", + "description": "Softness is Universal ✿ is a visual meditation on tenderness, language, and calm. Inspired by mental health and emotional awareness, this sketch creates a slow, breathing space where softness becomes visual and poetic. Words for “soft” appear in fifteen languages, each bringing a new pastel palette. They orbit gently as clouds, bubbles, and words like “breathe” and “calm” drift softly. Everything moves with quiet care, inviting you to pause and exhale.", + "instructions": "Click or drag your mouse to gently release more words like “breathe” and “calm.” Watch them drift slowly. Move your mouse to create soft ripples. The breathing circle and orbiting words unfold on their own.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-21 01:55:40", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-21 02:10:00", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 536750, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2693514.json b/src/cached-data/openprocessing-sketches/2693514.json new file mode 100644 index 0000000000..2f43c791f5 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693514.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693514, + "title": "pullका phulका", + "description": "Multilingual type stretching", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-21 02:01:23", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-21 02:12:11", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 536065, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693520.json b/src/cached-data/openprocessing-sketches/2693520.json new file mode 100644 index 0000000000..5514216470 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693520.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693520, + "title": "Wave of Freedom", + "description": "Created with p5.js, this sketch displays the word \"FREE\" in multiple languages including English, French (\"GRATUIT\"), Chinese (\"自由\"), and Spanish (\"LIBRE\"). Each word is rendered as point-based typography and animated into a flowing wave of 3D terracotta tiles. The piece explores motion, shape, and form through creative coding and multilingual design.", + "instructions": "Click on the canvas to cycle through different translations of the word.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-21 02:28:05", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-21 02:36:47", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2325, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 536199, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@2.0.3/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693522.json b/src/cached-data/openprocessing-sketches/2693522.json new file mode 100644 index 0000000000..4bc3ea3bb3 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693522.json @@ -0,0 +1,26 @@ +{ + "visualID": 2693522, + "title": "textToPoints & Clip", + "description": "By Richard Bourne, July 2025.", + "instructions": "Tap to save a screenshot", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-21 02:40:42", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-21 03:56:45", + "thumbnailUpdatedOn": "2025-07-21 15:43:23", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 162823, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js", + "width": 920, + "height": 690 +} diff --git a/src/cached-data/openprocessing-sketches/2693533.json b/src/cached-data/openprocessing-sketches/2693533.json new file mode 100644 index 0000000000..64d7e94074 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693533.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693533, + "title": "创新(innovation)", + "description": "An interactive meditation on innovation as Pandora’s box — each gesture releases threads of freedom, chaos, fear, and hope, tracing my own relationship with creative tools.", + "instructions": "Using mouse to drag the line through the finger tips to see the changes.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-21 03:21:56", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-21 03:22:07", + "thumbnailUpdatedOn": "2025-07-21 03:31:58", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 538078, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2693572.json b/src/cached-data/openprocessing-sketches/2693572.json new file mode 100644 index 0000000000..48af55e201 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2693572.json @@ -0,0 +1,24 @@ +{ + "visualID": 2693572, + "title": "Colorful Timing", + "description": "Interact with a visual vortex with color!", + "instructions": "Controls:\r\nMouse: Draw\r\nWheel: Brush Size\r\nSpace: Toggle Orbit\r\nC: Clear\r\nB: Toggle Blur\r\nP: Toggle Particles", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-21 05:51:35", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-21 05:51:35", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2322, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 334658, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.7/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2694220.json b/src/cached-data/openprocessing-sketches/2694220.json new file mode 100644 index 0000000000..d8242993ee --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2694220.json @@ -0,0 +1,24 @@ +{ + "visualID": 2694220, + "title": "face", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-22 20:50:32", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-22 20:51:13", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 538305, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2694222.json b/src/cached-data/openprocessing-sketches/2694222.json new file mode 100644 index 0000000000..f0185f7265 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2694222.json @@ -0,0 +1,24 @@ +{ + "visualID": 2694222, + "title": "birds", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-22 20:53:56", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-22 20:55:31", + "thumbnailUpdatedOn": "2025-07-22 20:57:09", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 538305, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2694224.json b/src/cached-data/openprocessing-sketches/2694224.json new file mode 100644 index 0000000000..444857f0ac --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2694224.json @@ -0,0 +1,24 @@ +{ + "visualID": 2694224, + "title": "hello", + "description": "", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-22 20:58:03", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-22 21:02:35", + "thumbnailUpdatedOn": "2025-07-22 21:03:54", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 538305, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2694233.json b/src/cached-data/openprocessing-sketches/2694233.json new file mode 100644 index 0000000000..c8be62e3a2 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2694233.json @@ -0,0 +1,26 @@ +{ + "visualID": 2694233, + "title": "Petals", + "description": "A flower from 8 trees", + "instructions": "", + "tags": [], + "license": "by-sa", + "isDraft": 0, + "createdOn": "2025-07-22 22:14:42", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-07-22 22:14:44", + "videoUpdatedOn": null, + "parentID": 819688, + "engineID": 100, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 538311, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@0.10.2/lib/p5.js", + "mode": "p5js", + "width": 1000, + "height": 1400 +} diff --git a/src/cached-data/openprocessing-sketches/2697082.json b/src/cached-data/openprocessing-sketches/2697082.json new file mode 100644 index 0000000000..9e9558c0d5 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2697082.json @@ -0,0 +1,24 @@ +{ + "visualID": 2697082, + "title": "Airy Text", + "description": "inspired by the artwork of the 'Premiers Symptomes' album of AIR", + "instructions": "", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-07-29 12:53:46", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-07-29 13:20:10", + "thumbnailUpdatedOn": "2025-07-29 13:58:20", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2335, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 522855, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.9/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2722646.json b/src/cached-data/openprocessing-sketches/2722646.json new file mode 100644 index 0000000000..36236a3fb9 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2722646.json @@ -0,0 +1,24 @@ +{ + "visualID": 2722646, + "title": "inverse petals", + "description": "A flower from 8 trees", + "instructions": "", + "tags": [], + "license": "by-sa", + "isDraft": 0, + "createdOn": "2025-09-14 00:36:09", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-09-14 00:36:10", + "videoUpdatedOn": null, + "parentID": 2709605, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 284347, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2722917.json b/src/cached-data/openprocessing-sketches/2722917.json new file mode 100644 index 0000000000..8ee5f8c23a --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2722917.json @@ -0,0 +1,24 @@ +{ + "visualID": 2722917, + "title": "Refrigerator Poetry", + "description": "", + "instructions": "DRAG magnets to make poetry! Poems are SAVED in the browser. Click BUTTON to scatter the magnets and erase your poems.", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-09-14 20:28:03", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-09-18 16:20:21", + "videoUpdatedOn": null, + "parentID": null, + "engineID": 2335, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 110137, + "engineURL": "https://cdn.jsdelivr.net/npm/p5@1.11.9/lib/p5.js", + "mode": "p5js" +} diff --git a/src/cached-data/openprocessing-sketches/2752282.json b/src/cached-data/openprocessing-sketches/2752282.json new file mode 100644 index 0000000000..ca7f46e9e5 --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2752282.json @@ -0,0 +1,24 @@ +{ + "visualID": 2752282, + "title": "Arte de Código Aberto", + "description": "Homage to Vamoss (Carlos de Oliveira Junior). Inspired in https://openprocessing.org/sketch/1621550", + "instructions": "Just watch", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-10-11 16:30:24", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": "2025-10-11 16:31:35", + "thumbnailUpdatedOn": "2025-10-11 19:05:33", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 261766, + "engineURL": "", + "mode": "html" +} diff --git a/src/cached-data/openprocessing-sketches/2752620.json b/src/cached-data/openprocessing-sketches/2752620.json new file mode 100644 index 0000000000..9553654c6e --- /dev/null +++ b/src/cached-data/openprocessing-sketches/2752620.json @@ -0,0 +1,24 @@ +{ + "visualID": 2752620, + "title": "Curved Peano-Hilbert", + "description": "A Peano-Hilbert curve drawn with splines", + "instructions": "no interaction", + "tags": [], + "license": "by-nc-sa", + "isDraft": 0, + "createdOn": "2025-10-12 14:13:21", + "updatedOn": "2025-12-30 08:03:21", + "filesUpdatedOn": null, + "thumbnailUpdatedOn": "2025-10-12 16:09:56", + "videoUpdatedOn": null, + "parentID": null, + "engineID": null, + "isTutorial": 0, + "isTemplate": 0, + "hasTimeline": 0, + "libraries": [], + "templateID": null, + "userID": 261766, + "engineURL": "", + "mode": "html" +} diff --git a/src/layouts/SketchLayout.astro b/src/layouts/SketchLayout.astro index f4e1bce44a..3818d0507b 100644 --- a/src/layouts/SketchLayout.astro +++ b/src/layouts/SketchLayout.astro @@ -7,8 +7,7 @@ import { getSketch, makeSketchEmbedUrl, makeSketchLinkUrl, - makeThumbnailUrl, - getSketchSize, + makeThumbnailUrl } from "@/src/api/OpenProcessing"; import LinkButton from "@components/LinkButton/index.astro"; import { getCurrentLocale, getUiTranslator } from "../i18n/utils"; @@ -42,7 +41,7 @@ setJumpToState(null); const moreSketches = await getRandomCurationSketches(4); const featuredImageURL = makeThumbnailUrl(sketchIdNumber); -let { width, height } = await getSketchSize(sketchIdNumber); +let { width, height } = await getSketch(sketchIdNumber); let heightOverWidth = 1 / 1.5; if (width && height) { // Account for OP header bar diff --git a/vitest.config.ts b/vitest.config.ts index 1f9240cb20..d5f8a3882f 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -19,6 +19,7 @@ export default getViteConfig({ "test/**/*" ], exclude: [ + "test/api/OpenProcessing.test.ts", "test/pages/*", "test/mocks/*" ]