mirror of
				https://github.com/node-red/node-red-nodes.git
				synced 2025-03-01 10:37:43 +00:00 
			
		
		
		
	
							
								
								
									
										53
									
								
								social/snapchat/79-snapchat.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								social/snapchat/79-snapchat.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | ||||
| <script type="text/x-red" data-template-name="Snap Chat"> | ||||
|     <div class="form-row"> | ||||
|         <label for="node-input-name"><i class="icon-tag"></i> Name</label> | ||||
|         <input type="text" id="node-input-name" placeholder="Name"> | ||||
|     </div> <div class="form-row"> | ||||
|         <label for="node-input-account"><i class="icon-tasks"></i> Account</label> | ||||
|         <input type="text" id="node-input-account"> | ||||
|     </div> <div class="form-row"> | ||||
|         <label for="node-input-path"><i class="icon-tag"></i> Save Path</label> | ||||
|         <input type="text" id="node-input-path" placeholder="./snapchat_images"> </div> </script> | ||||
|  <script type="text/x-red" data-help-name="Snap Chat"> | ||||
|     <p>Downloads SnapChat images from the account specified to the path specified. <b>msg.payload</b> contains the count of images downloaded. <b>msg.snaps</b> | ||||
| contains information on the snap downloaded such as path, sent from and id of the image. | ||||
|  </script> <script type="text/javascript"> | ||||
|     RED.nodes.registerType('Snap Chat',{ | ||||
|         category: 'social-input', | ||||
|         color:"Yellow", | ||||
|         defaults: { | ||||
|                 name:{value:"Snap Chat"}, | ||||
|                 account: {type:"snapchat-account",required:true}, | ||||
|                 path: {value:"./snapchat_images/",required:true} | ||||
|         }, | ||||
|         inputs:1, | ||||
|         outputs:1, | ||||
|         icon: "arrow-in.png", | ||||
|         label: function() { | ||||
|             return this.name||"Snap Chat"; | ||||
|         }, | ||||
|         labelStyle: function() { | ||||
|             return this.name?"node_label_italic":""; | ||||
|         } | ||||
|     }); | ||||
| </script> <script type="text/x-red" data-template-name="snapchat-account"> | ||||
|     <div class="form-row"> | ||||
|         <label for="node-config-input-username"><i class="icon-tasks"></i> Username</label> | ||||
|         <input type="text" id="node-config-input-username" placeholder="billy-bob"> | ||||
|     </div> | ||||
|     <div class="form-row"> | ||||
|         <label for="node-config-input-password"><i class="icon-tasks"></i> Password</label> | ||||
|         <input type="password" id="node-config-input-password" placeholder=""> | ||||
|     </div> </script> | ||||
| <script type="text/javascript"> | ||||
|     RED.nodes.registerType('snapchat-account',{ | ||||
|         category: 'config', | ||||
|         defaults: { | ||||
|             username: {value:"",required:true}, | ||||
|      password: {value:"",required:true}, | ||||
|         }, | ||||
|         label: function() { | ||||
|             return this.username; | ||||
|         } | ||||
|     }); | ||||
| </script> | ||||
							
								
								
									
										68
									
								
								social/snapchat/79-snapchat.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								social/snapchat/79-snapchat.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | ||||
| // Require main module | ||||
| var RED = require(process.env.NODE_RED_HOME+"/red/red"); | ||||
| var snapchat = require('snapchat'), | ||||
| client = new snapchat.Client(), | ||||
| fs = require('fs'); | ||||
|  | ||||
|  | ||||
|  | ||||
| function SnapChatAccountNode(n) { | ||||
| RED.nodes.createNode(this,n); | ||||
| this.username = n.username; | ||||
| this.password = n.password; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| function SnapChatNode(n) { | ||||
|  // Create a RED node | ||||
| RED.nodes.createNode(this,n); | ||||
| var node = this; | ||||
|  | ||||
| this.account = n.account; | ||||
| this.path = n.path; | ||||
| this.accountConfig = RED.nodes.getNode(this.account); | ||||
| this.username = this.accountConfig.username; | ||||
| this.password = this.accountConfig.password; | ||||
|  | ||||
|  | ||||
| this.on("input",function(){ | ||||
|  | ||||
| // Make sure the images folder exists | ||||
| if(!fs.existsSync(this.path)) { | ||||
|     fs.mkdirSync(this.path); | ||||
| } | ||||
|  | ||||
| var path = this.path; | ||||
| var msg ={}; | ||||
| msg.snaps =[]; | ||||
| client.login(this.username, this.password).then(function(data){ | ||||
| msg.payload = data.snaps.length; | ||||
| data.snaps.forEach(function(snap){ | ||||
|       if (snap.st == 1 && typeof snap.t !== 'undefined') | ||||
|       { | ||||
|                 var full_path = path + snap.id + '.jpg'; | ||||
|                 var snapObject = {Sender:snap.sn,Path:full_path,SnapId:snap.id}; | ||||
|                 msg.snaps.push(snapObject); | ||||
|  | ||||
|               var stream = fs.createWriteStream(full_path, { flags: 'w', encoding: null, mode: 0666}); | ||||
|               client.getBlob(snap.id).then(function(blob){ | ||||
|               blob.pipe(stream); | ||||
|               blob.resume(); | ||||
|               }); | ||||
|       } | ||||
|  | ||||
| }); | ||||
| client.clear(); | ||||
| node.send(msg); | ||||
|  | ||||
| }); | ||||
|  | ||||
| }); | ||||
|  | ||||
| } | ||||
|  | ||||
| // Register the node by name. This must be called before overriding any of the | ||||
| // Node functions. | ||||
| RED.nodes.registerType("Snap Chat",SnapChatNode); | ||||
| RED.nodes.registerType("snapchat-account",SnapChatAccountNode); | ||||
		Reference in New Issue
	
	Block a user