|
1 | 1 | {
|
2 | 2 | "title": "Mastodon Fractal Tree Bot",
|
3 | 3 | "description": "In part 1 of this coding challenge, I create a node.js Mastodon bot that posts images (fractal trees) generated with Processing code. In part 2, I revise the node.js Mastodon bot to post images (fractal trees) in response to user mentions.",
|
4 |
| - "videoId": "luxczHFn1rU", |
5 | 4 | "videoNumber": "118",
|
6 | 5 | "date": "2018-10-16",
|
7 |
| - "languages": ["Processing", "JavaScript", "Java", "Node.js"], |
| 6 | + "languages": ["Processing", "JavaScript", "Java", "Node.js", "command-line interface (CLI)"], |
8 | 7 | "topics": ["Mastodon", "bots", "fractals"],
|
9 | 8 | "canContribute": true,
|
10 |
| - "relatedChallenges": [], |
| 9 | + "relatedChallenges": [ |
| 10 | + "174-graphics-applesoft-basic", |
| 11 | + "14-fractal-trees-recursive", |
| 12 | + "15-object-oriented-fractal-trees", |
| 13 | + "18-3d-fractal-trees" |
| 14 | + ], |
11 | 15 | "timestamps": [],
|
12 | 16 | "parts": [
|
13 | 17 | {
|
14 |
| - "title": "Part 1 - ?", |
| 18 | + "title": "Part 1 - Creating fractal tree images and posting them with a Mastodon bot", |
15 | 19 | "videoId": "luxczHFn1rU",
|
16 |
| - "timestamps": [{ "time": "0:00", "title": "Introduction" }] |
| 20 | + "timestamps": [ |
| 21 | + { "time": "0:00", "title": "Introduction" }, |
| 22 | + { "time": "0:52", "title": "Inspiration for the challenge" }, |
| 23 | + { "time": "1:06", "title": "Generate a random fractal tree image with Processing" }, |
| 24 | + { "time": "2:48", "title": "How can Node.js and Processing communicate?" }, |
| 25 | + { "time": "3:50", "title": "Calling a Processing sketch from the command line" }, |
| 26 | + { "time": "6:10", "title": "Using Node.js to execute the sketch" }, |
| 27 | + { "time": "9:00", "title": "Async with promises" }, |
| 28 | + { "time": "11:57", "title": "Reading stdout value" }, |
| 29 | + { "time": "13:50", "title": "Use `mastodon-api` to POST the image" }, |
| 30 | + { "time": "21:40", "title": "Refactor promises chain to async/await" }, |
| 31 | + { "time": "25:20", "title": "Reference the image in a new status" }, |
| 32 | + { "time": "30:07", "title": "Extract the angle value from stdout" }, |
| 33 | + { "time": "33:00", "title": "Make the bot post at a predetermined interval" }, |
| 34 | + { "time": "36:30", "title": "Hosting and Part 2 tutorial teaser" } |
| 35 | + ] |
17 | 36 | },
|
18 | 37 | {
|
19 |
| - "title": "Part 2 - ?", |
| 38 | + "title": "Part 2 - Revising the bot to reply to user mentions", |
20 | 39 | "videoId": "PUPWPjjkNqQ",
|
21 | 40 | "timestamps": [
|
22 | 41 | { "time": "0:00", "title": "Introduction" },
|
|
32 | 51 | ]
|
33 | 52 | }
|
34 | 53 | ],
|
35 |
| - "codeExamples": [], |
36 |
| - "groupLinks": [], |
| 54 | + "codeExamples": [ |
| 55 | + { |
| 56 | + "title": "Source code", |
| 57 | + "description": "Mastodon bot and fractal tree generator source code", |
| 58 | + "urls": { |
| 59 | + "node": "https://github.com/CodingTrain/Mastodon-Bot" |
| 60 | + } |
| 61 | + } |
| 62 | + ], |
| 63 | + "groupLinks": [ |
| 64 | + { |
| 65 | + "title": "References", |
| 66 | + "links": [ |
| 67 | + { |
| 68 | + "icon": "🔗", |
| 69 | + "title": "Lowpoly Bot", |
| 70 | + "url": "https://twitter.com/lowpolybot", |
| 71 | + "description": "" |
| 72 | + }, |
| 73 | + { |
| 74 | + "icon": "🔗", |
| 75 | + "title": "Node.js", |
| 76 | + "url": "https://nodejs.org/en", |
| 77 | + "description": "" |
| 78 | + }, |
| 79 | + { |
| 80 | + "icon": "🔗", |
| 81 | + "title": "Mastodon", |
| 82 | + "url": "https://mastodon.social/about", |
| 83 | + "description": "" |
| 84 | + }, |
| 85 | + { |
| 86 | + "icon": "🔗", |
| 87 | + "title": "The Coding Train on Mastodon", |
| 88 | + "url": "https://mastodon.social/@[email protected]", |
| 89 | + "description": "" |
| 90 | + }, |
| 91 | + { |
| 92 | + "icon": "🔗", |
| 93 | + "title": "Mastodon API on npm", |
| 94 | + "url": "https://www.npmjs.com/package/mastodon-api", |
| 95 | + "description": "" |
| 96 | + }, |
| 97 | + { |
| 98 | + "icon": "🎥", |
| 99 | + "title": "What is Mastodon?", |
| 100 | + "url": "/tracks/mastodon/mastodon/what-is-mastodon", |
| 101 | + "description": "" |
| 102 | + }, |
| 103 | + { |
| 104 | + "icon": "🔗", |
| 105 | + "title": "The 'procesing-java' command", |
| 106 | + "url": "https://github.com/processing/processing/wiki/Command-Line", |
| 107 | + "description": "Running Processing sketches from the command line" |
| 108 | + } |
| 109 | + ] |
| 110 | + } |
| 111 | + ], |
37 | 112 | "credits": [
|
38 | 113 | { "title": "Editing", "name": "Mathieu Blanchette" },
|
39 | 114 | { "title": "Animations", "name": "Jason Heglund" }
|
|
0 commit comments