Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)C
Posts
1
Comments
135
Joined
7 mo. ago

  • Thanks, right-wing government of however long ago it was! ^(/s)

    Haha!

    Also, did your father install all that extra? It sounds expensive.

  • That was a super long response and I am not OP but I have heard that you can learn to drive with a private tutor in France, I think it was because they need to educate better drivers.

  • Featured

    Welcome to !selfhosted@lemmy.world - What do you selfhost?

    Jump
  • What was super fast indeed!

  • Featured

    Welcome to !selfhosted@lemmy.world - What do you selfhost?

    Jump
  • Set it up at home, open port 22 for SSH and configure some dynamic DNS service to auto update your IP to point at the IP of your home. No need to bring it with you!

  • And that is perfect. Instead of setting up one VM for each service and manually updating all dependencies, I’d much rather use that very handy bag with everything in it.

  • I feel with you, but at the same time I remember trying to setup Apache Guacamole and failing miserably. Doing it now with docker would remove everything that made me fail 10 years ago.

  • I have to follow this now!

  • Glad to hear that you got it working! The hard part for me was to figure out how to transform a JSON string into an array of n8n objects. I had already done that before so now I just copy that node whenever I need something like again.

    I’m doing a bit of tweaking

    I figured you would have. But that is half the fun. :-)

  • Do you have a link? OOTL

  • were pretty eager with that trmove button for that.

    Yeah, I only noticed that after it had been pointed out recently. I hope it didn't scare anyone away.

  • I had to implement drag and drop in a Windows application recently. Since you don't know the content type nor the size of the content, pointers has to be used, which makes sense. For the most part when working within the bounds of my own application, I haven't found a good use case for pointers. That could of course be because I am not used to thinking in that way.

  • Sharing a workflow requires a paid plan but could should be able to paste this in the editor to get the same effect.

    I made two different sample flows, on that call the api and responds with directly with the response data (transformed). The other workflow is to same the data in a data table, and call the weather api on a schedule. You could even use ntfy and send notifications on a schedule if it will rain within an hour.

    Edit the nodes to suite your need (URL, content of response etc).

     json
        
    {
      "nodes": [
        {
          "parameters": {
            "url": "https://opendata-download-metfcst.smhi.se/api/category/snow1g/version/1/geotype/point/lon/16.158/lat/58.5812/data.json",
            "options": {}
          },
          "type": "n8n-nodes-base.httpRequest",
          "typeVersion": 4.4,
          "position": [
            656,
            336
          ],
          "id": "d47a17c9-9bc7-448c-841a-f3b2d787b2cb",
          "name": "Sample weather JSON data"
        },
        {
          "parameters": {
            "jsCode": "let output = [];\n\nfor (const item of $input.first().json.timeSeries) {\n  output.push({\n    Time: item.time,\n    \"Current temperature\": item.data.air_temperature + ' °C'\n    // Add more as needed\n  });\n}\n\nreturn output;\n\n"
          },
          "type": "n8n-nodes-base.code",
          "typeVersion": 2,
          "position": [
            880,
            240
          ],
          "id": "cf4f11a6-0ecc-4e96-afcb-a7903113da19",
          "name": "Convert json to array"
        },
        {
          "parameters": {
            "mode": "raw",
            "jsonOutput": "={\n  \"Time\": {{ $json.timeSeries[0].time }},\n  \"Current temperature\": {{ $json.timeSeries[0].data.air_temperature }},\n}\n",
            "options": {}
          },
          "type": "n8n-nodes-base.set",
          "typeVersion": 3.4,
          "position": [
            880,
            432
          ],
          "id": "2f3765ba-6ee5-44b7-ac45-c5a407ed43e9",
          "name": "Manual mapping of one item",
          "disabled": true
        },
        {
          "parameters": {
            "options": {}
          },
          "type": "n8n-nodes-base.respondToWebhook",
          "typeVersion": 1.5,
          "position": [
            1104,
            240
          ],
          "id": "badd76a3-2920-4592-baa6-5202b4badba0",
          "name": "Respond to Webhook"
        },
        {
          "parameters": {
            "operation": "upsert",
            "dataTableId": {
              "__rl": true,
              "mode": "list",
              "value": ""
            },
            "columns": {
              "mappingMode": "defineBelow",
              "value": {},
              "matchingColumns": [],
              "schema": [],
              "attemptToConvertTypes": false,
              "convertFieldsToString": false
            },
            "options": {}
          },
          "type": "n8n-nodes-base.dataTable",
          "typeVersion": 1.1,
          "position": [
            1104,
            16
          ],
          "id": "c76d9dfa-9ec1-421f-a96b-d1a65efb0dd7",
          "name": "insert (or update if exists) table with data"
        },
        {
          "parameters": {
            "content": "Create the table first, then edit and select how to map the fields\n\n",
            "height": 224,
            "width": 320
          },
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            992,
            -48
          ],
          "typeVersion": 1,
          "id": "51347b11-fcb8-49db-bd17-405ec8719ec0",
          "name": "Sticky Note"
        },
        {
          "parameters": {
            "jsCode": "let output = [];\n\nfor (const item of $input.first().json.timeSeries) {\n  output.push({\n    Time: item.time,\n    \"Current temperature\": item.data.air_temperature + ' °C'\n    // Add more as needed\n  });\n}\n\nreturn output;\n\n"
          },
          "type": "n8n-nodes-base.code",
          "typeVersion": 2,
          "position": [
            880,
            16
          ],
          "id": "3967c4c5-5443-40d2-b1fe-830aa9327118",
          "name": "Convert json to array1"
        },
        {
          "parameters": {
            "url": "https://opendata-download-metfcst.smhi.se/api/category/snow1g/version/1/geotype/point/lon/16.158/lat/58.5812/data.json",
            "options": {}
          },
          "type": "n8n-nodes-base.httpRequest",
          "typeVersion": 4.4,
          "position": [
            656,
            16
          ],
          "id": "f0043f80-c940-43cf-a5ef-2f7fe6dcc6a7",
          "name": "Sample weather JSON data1"
        },
        {
          "parameters": {
            "path": "1572b231-edc5-4516-935c-f205b737c5d2",
            "responseMode": "responseNode",
            "options": {}
          },
          "type": "n8n-nodes-base.webhook",
          "typeVersion": 2.1,
          "position": [
            432,
            336
          ],
          "id": "30953c4e-7627-4646-8b8d-ca46cc06c841",
          "name": "Webhook - Respond after API call",
          "webhookId": "1572b231-edc5-4516-935c-f205b737c5d2"
        },
        {
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "minutes"
                }
              ]
            }
          },
          "type": "n8n-nodes-base.scheduleTrigger",
          "typeVersion": 1.3,
          "position": [
            448,
            16
          ],
          "id": "e242dea7-dc3c-4c0a-9630-786bf2a39b8a",
          "name": "Schedule to get weather data"
        },
        {
          "parameters": {
            "path": "1572b231-edc5-4516-935c-f205b737c5d2",
            "responseMode": "responseNode",
            "options": {}
          },
          "type": "n8n-nodes-base.webhook",
          "typeVersion": 2.1,
          "position": [
            448,
            -240
          ],
          "id": "1c1ac8d1-5f64-4bab-a3ac-20f223b1411e",
          "name": "Webhook - respond with table data",
          "webhookId": "1572b231-edc5-4516-935c-f205b737c5d2"
        },
        {
          "parameters": {
            "operation": "get",
            "dataTableId": {
              "__rl": true,
              "mode": "list",
              "value": ""
            }
          },
          "type": "n8n-nodes-base.dataTable",
          "typeVersion": 1.1,
          "position": [
            656,
            -240
          ],
          "id": "7433815b-229c-4ad8-88ce-2bcff688ece5",
          "name": "Get row(s)"
        },
        {
          "parameters": {
            "options": {}
          },
          "type": "n8n-nodes-base.set",
          "typeVersion": 3.4,
          "position": [
            864,
            -240
          ],
          "id": "76cd6bfe-da95-41c0-a3ee-812956eab79f",
          "name": "Edit Fields"
        },
        {
          "parameters": {
            "options": {}
          },
          "type": "n8n-nodes-base.respondToWebhook",
          "typeVersion": 1.5,
          "position": [
            1072,
            -240
          ],
          "id": "3c83ebc3-2c09-4d80-8278-e325237ae0e2",
          "name": "Respond to Webhook1"
        },
        {
          "parameters": {
            "content": "No code behind these nodes, only a skeleton sample for the workflow could look like",
            "height": 208,
            "width": 944
          },
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            384,
            -304
          ],
          "typeVersion": 1,
          "id": "db35642a-04dd-427b-9a21-d4ad64dd5522",
          "name": "Sticky Note1"
        },
        {
          "parameters": {
            "content": "## Via data tabel\n",
            "height": 592,
            "width": 1088,
            "color": 3
          },
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            288,
            -384
          ],
          "typeVersion": 1,
          "id": "877a2308-c70f-4b9e-8ef7-5dea94a812b8",
          "name": "Sticky Note2"
        },
        {
          "parameters": {
            "content": "## Direct response from remote API",
            "height": 400,
            "width": 1088,
            "color": 5
          },
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            288,
            224
          ],
          "typeVersion": 1,
          "id": "d06d7c02-a8eb-494b-8d10-142fb2c04037",
          "name": "Sticky Note3"
        }
      ],
      "connections": {
        "Sample weather JSON data": {
          "main": [
            [
              {
                "node": "Convert json to array",
                "type": "main",
                "index": 0
              },
              {
                "node": "Manual mapping of one item",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Convert json to array": {
          "main": [
            [
              {
                "node": "Respond to Webhook",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Convert json to array1": {
          "main": [
            [
              {
                "node": "insert (or update if exists) table with data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Sample weather JSON data1": {
          "main": [
            [
              {
                "node": "Convert json to array1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Webhook - Respond after API call": {
          "main": [
            [
              {
                "node": "Sample weather JSON data",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Schedule to get weather data": {
          "main": [
            [
              {
                "node": "Sample weather JSON data1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Webhook - respond with table data": {
          "main": [
            [
              {
                "node": "Get row(s)",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Get row(s)": {
          "main": [
            [
              {
                "node": "Edit Fields",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Edit Fields": {
          "main": [
            [
              {
                "node": "Respond to Webhook1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      },
      "pinData": {},
      "meta": {
        "instanceId": "139fc1c0283616d9fae3813879a161cf8e8e0992eea7a9e87dc980c7d4ed97ec"
      }
    }
    
      
  • Since you are using n8n, pull the data on a schedule and save it in a data table. Then create a webhook to serve the content as you want it. N8n can transform the JSON data, I can provide a sample tomorrow.

  • Have you tried running it but not exposing any ports using docker compose? EDIT: Saw that it worked with 4443:443.

  • In addition, rule 7 (low effort posts) is deleted as everyone seems to agree its handled just fine with votes.

    Completely agree with this one. I like to browse new and I'd rather keep the occasional low effort post than delete them. There are relatively few posts at it is.

  • I still don't get the point of pointers.

    I want my language to pass by reference. I give a variable to a function and the variable in the function scope should be a reference to the same place in memory as the original variable.

    How can pointers help me here? What value does it provide? Genuine question.

  • This is my commander. 😢

  • I remember when the maintainer for discord.py stepped down. He eventually stepped back in because no one wanted took over the project and he didn't want to see it die. This was before the current AI era, all someone had to do was continue to develop it.

    I think almost everyone will do step 2 and 3 but not step 4.

  • If you copy the DB file to your computer, you should be able to inspect them with some kind of viewer. Perhaps you can figure out the username/password that way?