Last active
May 22, 2024 09:54
-
-
Save ngtrieuvi92/03baddd89ba02c4b6ce677600fd1995c to your computer and use it in GitHub Desktop.
Pet Project: GT News - a simple tool broadcast news use N8N & Raindrop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "GT-Engine-Workflow", | |
"nodes": [ | |
{ | |
"parameters": {}, | |
"id": "a668af24-5543-4f2a-808e-bf69b81667b5", | |
"name": "When clicking \"Execute Workflow\"", | |
"type": "n8n-nodes-base.manualTrigger", | |
"typeVersion": 1, | |
"position": [ | |
100, | |
300 | |
] | |
}, | |
{ | |
"parameters": { | |
"operation": "getAll", | |
"returnAll": true | |
}, | |
"id": "ad88f1aa-d458-47bc-a6ad-c9f4060f6aef", | |
"name": "Raindrop", | |
"type": "n8n-nodes-base.raindrop", | |
"typeVersion": 1, | |
"position": [ | |
480, | |
360 | |
], | |
"credentials": { | |
"raindropOAuth2Api": { | |
"id": "3", | |
"name": "Raindrop account" | |
} | |
} | |
}, | |
{ | |
"parameters": { | |
"resource": "bookmark", | |
"operation": "getAll", | |
"collectionId": "={{ $json[\"_id\"] }}", | |
"limit": 10 | |
}, | |
"id": "f0d5142e-4402-4343-8830-a6ce5336b316", | |
"name": "Raindrop1", | |
"type": "n8n-nodes-base.raindrop", | |
"typeVersion": 1, | |
"position": [ | |
700, | |
360 | |
], | |
"credentials": { | |
"raindropOAuth2Api": { | |
"id": "3", | |
"name": "Raindrop account" | |
} | |
} | |
}, | |
{ | |
"parameters": { | |
"chatId": "@geektool_news", | |
"text": "={{ $json.link }}", | |
"additionalFields": {} | |
}, | |
"id": "6a038cc9-292a-46d9-80d6-37de6c3f517a", | |
"name": "Telegram", | |
"type": "n8n-nodes-base.telegram", | |
"typeVersion": 1, | |
"position": [ | |
1140, | |
360 | |
], | |
"credentials": { | |
"telegramApi": { | |
"id": "4", | |
"name": "Telegram account" | |
} | |
} | |
}, | |
{ | |
"parameters": { | |
"operation": "executeQuery", | |
"query": "SELECT value FROM raindrop_config WHERE `config` = 'latest_bookmark_created_time';" | |
}, | |
"id": "7aef6c8b-8d32-4cb0-9fa5-49fcbf7ddbd9", | |
"name": "MySQL", | |
"type": "n8n-nodes-base.mySql", | |
"typeVersion": 1, | |
"position": [ | |
300, | |
360 | |
], | |
"credentials": { | |
"mySql": { | |
"id": "5", | |
"name": "MySQL account" | |
} | |
} | |
}, | |
{ | |
"parameters": { | |
"jsCode": "// Loop over input items and add a new field\n// called 'myNewField' to the JSON of each one\n// Loop over input items and add a new field\n// called 'myNewField' to the JSON of each one\nconst latestBookmarkCreatedTimeString = $('MySQL').last().json.value\nlet latestBookmarkCreatedUnix = DateTime.fromISO(latestBookmarkCreatedTimeString).toMillis();\n\nconst newBookMarks = $('FilterNewBookmarks').all()\nfor (const item of newBookMarks) {\n const createdTimeUnix = DateTime.fromISO(item.json.created).toMillis();\n if(createdTimeUnix > latestBookmarkCreatedUnix) {\n latestBookmarkCreatedUnix = createdTimeUnix;\n }\n}\nconst isoString = DateTime.fromMillis(latestBookmarkCreatedUnix).toISO();\nreturn [\n {\n latest_bookmark_created_time: isoString\n }\n]" | |
}, | |
"id": "e8ba57ec-c34f-432b-a356-bf08558bbe96", | |
"name": "GetLatestBookmarkCreateTime", | |
"type": "n8n-nodes-base.code", | |
"typeVersion": 1, | |
"position": [ | |
1580, | |
360 | |
] | |
}, | |
{ | |
"parameters": { | |
"rule": { | |
"interval": [ | |
{ | |
"field": "hours", | |
"triggerAtMinute": 5 | |
} | |
] | |
} | |
}, | |
"id": "af4f0520-d156-4686-a7f2-6a577b58096a", | |
"name": "Schedule Trigger", | |
"type": "n8n-nodes-base.scheduleTrigger", | |
"typeVersion": 1, | |
"position": [ | |
120, | |
560 | |
] | |
}, | |
{ | |
"parameters": { | |
"operation": "executeQuery", | |
"query": "=UPDATE raindrop_config SET value = \"{{ $json.latest_bookmark_created_time }}\" WHERE config = \"latest_bookmark_created_time\";" | |
}, | |
"id": "8fa81058-cfe1-450f-9d83-1151be33f758", | |
"name": "StoreLatestBookmarkTime", | |
"type": "n8n-nodes-base.mySql", | |
"typeVersion": 1, | |
"position": [ | |
1780, | |
360 | |
], | |
"credentials": { | |
"mySql": { | |
"id": "5", | |
"name": "MySQL account" | |
} | |
} | |
}, | |
{ | |
"parameters": { | |
"jsCode": "// Loop over input items and add a new field\n// called 'myNewField' to the JSON of each one\nconst latestBookmarkCreatedTimeString = $('MySQL').last().json.value\nconst latestBookmarkCreatedUnix = DateTime.fromISO(latestBookmarkCreatedTimeString).toMillis();\nconst newBookmarks = [];\nfor (const item of $input.all()) {\n const createdTimeUnix = DateTime.fromISO(item.json.created).toMillis();\n if(createdTimeUnix > latestBookmarkCreatedUnix) {\n newBookmarks.push(item);\n }\n}\nreturn newBookmarks;" | |
}, | |
"id": "8668c6aa-edd8-4967-8e14-a1c60714ac51", | |
"name": "FilterNewBookmarks", | |
"type": "n8n-nodes-base.code", | |
"typeVersion": 1, | |
"position": [ | |
920, | |
360 | |
], | |
"notesInFlow": true, | |
"notes": "Filter Bookmark have created time > latest created time stored in DB" | |
}, | |
{ | |
"parameters": { | |
"method": "POST", | |
"url": "https://mattermost.internal.dummylink/hooks/hook ", | |
"sendHeaders": true, | |
"headerParameters": { | |
"parameters": [ | |
{ | |
"name": "Content-Type", | |
"value": "application/json" | |
} | |
] | |
}, | |
"sendBody": true, | |
"bodyParameters": { | |
"parameters": [ | |
{ | |
"name": "text", | |
"value": "={{ $node.FilterNewBookmarks.json.link }}" | |
} | |
] | |
}, | |
"options": {} | |
}, | |
"id": "b680d69b-7a3e-4ac4-aaf5-322bc09468cf", | |
"name": "Mattermost", | |
"type": "n8n-nodes-base.httpRequest", | |
"typeVersion": 3, | |
"position": [ | |
1360, | |
360 | |
] | |
} | |
], | |
"pinData": {}, | |
"connections": { | |
"When clicking \"Execute Workflow\"": { | |
"main": [ | |
[ | |
{ | |
"node": "MySQL", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Raindrop": { | |
"main": [ | |
[ | |
{ | |
"node": "Raindrop1", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Raindrop1": { | |
"main": [ | |
[ | |
{ | |
"node": "FilterNewBookmarks", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"MySQL": { | |
"main": [ | |
[ | |
{ | |
"node": "Raindrop", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Telegram": { | |
"main": [ | |
[ | |
{ | |
"node": "Mattermost", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"GetLatestBookmarkCreateTime": { | |
"main": [ | |
[ | |
{ | |
"node": "StoreLatestBookmarkTime", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Schedule Trigger": { | |
"main": [ | |
[ | |
{ | |
"node": "MySQL", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"FilterNewBookmarks": { | |
"main": [ | |
[ | |
{ | |
"node": "Telegram", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
}, | |
"Mattermost": { | |
"main": [ | |
[ | |
{ | |
"node": "GetLatestBookmarkCreateTime", | |
"type": "main", | |
"index": 0 | |
} | |
] | |
] | |
} | |
}, | |
"active": true, | |
"settings": {}, | |
"versionId": "5a79e40d-5765-4758-9906-d468171ea868", | |
"id": "1", | |
"meta": { | |
"instanceId": "bcbab56ea3124b410a116080a077c5961dbd417173437ee53fbc12971e1ef1e1" | |
}, | |
"tags": [ | |
{ | |
"createdAt": "2023-03-18T00:18:08.197Z", | |
"updatedAt": "2023-03-18T00:18:08.197Z", | |
"id": "1", | |
"name": "geektool" | |
}, | |
{ | |
"createdAt": "2023-03-18T00:18:09.475Z", | |
"updatedAt": "2023-03-18T00:18:09.475Z", | |
"id": "2", | |
"name": "pff" | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment