This flow was submitted before accounts existed, so nobody owns it yet. If you submitted it, open the edit link you were given — it still works — and you can attach the flow to an account from there. There is no deadline, and attaching it retires the link for good.
Duolingo CN streak
Show your Duolingo CN streak
| System | Node-RED |
|---|---|
| Firmware | AWTRIX 3 |
| Topic | Social |
| Built by | UniqueDing |
| File | QE6B5QmQ5Mq0.json · 4.0 KB |
| Icons | 1 |
| Published | 25 Aug 2025 · updated 25 Aug 2025 |
| Downloads | 39 |
Show your Duolingo CN streak
Go to www.duolingo.cn and login
Get Cookie logged_out_uuid
Modify https-request node uuid to your uuid
email: uniqueding@uniqueding.xyz
QE6B5QmQ5Mq0.json
[
{
"id": "a91dee77a51d2c0b",
"type": "group",
"z": "07631b920c07d557",
"name": "App: Duolingo streak",
"style": {
"label": true
},
"nodes": [
"9d3492d4f7911e86",
"bed83e9f5d68398f",
"9548ee618dd0cf7c",
"732d2c2559b84655",
"e8b713ecea8dc5eb"
],
"x": 74,
"y": 299,
"w": 792,
"h": 122
},
{
"id": "9d3492d4f7911e86",
"type": "inject",
"z": "07631b920c07d557",
"g": "a91dee77a51d2c0b",
"name": "",
"props": [],
"repeat": "3600",
"crontab": "",
"once": true,
"onceDelay": "1",
"topic": "",
"x": 170,
"y": 380,
"wires": [
[
"bed83e9f5d68398f"
]
]
},
{
"id": "bed83e9f5d68398f",
"type": "http request",
"z": "07631b920c07d557",
"g": "a91dee77a51d2c0b",
"name": "",
"method": "GET",
"ret": "obj",
"paytoqs": "query",
"url": "https://www.duolingo.cn/2017-06-30/users/uuid?fields=streak",
"tls": "",
"persist": false,
"proxy": "",
"insecureHTTPParser": false,
"authType": "",
"senderr": false,
"headers": [
{
"keyType": "other",
"keyValue": "User-Agent",
"valueType": "other",
"valueValue": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
}
],
"x": 340,
"y": 380,
"wires": [
[
"9548ee618dd0cf7c"
]
]
},
{
"id": "9548ee618dd0cf7c",
"type": "function",
"z": "07631b920c07d557",
"g": "a91dee77a51d2c0b",
"name": "parser",
"func": "const json = msg.payload;\nconst streak = json.streak;\nmsg.payload = {\n text: streak,\n icon: \"55815\",\n};\n\nreturn msg;",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 530,
"y": 380,
"wires": [
[
"732d2c2559b84655"
]
]
},
{
"id": "732d2c2559b84655",
"type": "mqtt out",
"z": "07631b920c07d557",
"g": "a91dee77a51d2c0b",
"name": "",
"topic": "awtrix/custom/duolingo",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "mqtt_broker",
"x": 740,
"y": 380,
"wires": []
},
{
"id": "e8b713ecea8dc5eb",
"type": "comment",
"z": "07631b920c07d557",
"g": "a91dee77a51d2c0b",
"name": "Duolingo streak",
"info": "Go to www.duolingo.cn and login\nGet Cookie logged_out_uuid\nModify https-request node uuid to your uuid",
"x": 180,
"y": 340,
"wires": []
},
{
"id": "mqtt_broker",
"type": "mqtt-broker",
"name": "MQTT Broker",
"broker": "nas.uniqueding.xyz",
"port": "1883",
"clientid": "",
"autoConnect": true,
"usetls": false,
"protocolVersion": "4",
"keepalive": 15,
"cleansession": true,
"autoUnsubscribe": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willPayload": "",
"willMsg": {},
"userProps": "",
"sessionExpiry": ""
}
]
These icons belong on the device, in /ICONS. Each one is at
most 32×8
pixels — shown here magnified, at their real proportions.
8×8 px