2015-04-08 10:56:39 +02:00
|
|
|
/**
|
|
|
|
* Copyright 2013 Chris Mobberly
|
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
**/
|
|
|
|
|
|
|
|
module.exports = function(RED) {
|
|
|
|
"use strict";
|
|
|
|
var snapchat = require('snapchat'),
|
|
|
|
client = new snapchat.Client(),
|
|
|
|
fs = require('fs');
|
|
|
|
|
|
|
|
function SnapChatAccountNode(n) {
|
|
|
|
RED.nodes.createNode(this,n);
|
|
|
|
this.username = n.username;
|
|
|
|
var credentials = this.credentials;
|
|
|
|
if ((credentials) && (credentials.hasOwnProperty("password"))) { this.password = credentials.password; }
|
|
|
|
else { this.error("No password set"); }
|
|
|
|
}
|
|
|
|
|
|
|
|
function SnapChatNode(n) {
|
|
|
|
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(){
|
|
|
|
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);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
RED.nodes.registerType("Snap Chat",SnapChatNode);
|
|
|
|
RED.nodes.registerType("snapchat-account",SnapChatAccountNode,{
|
|
|
|
credentials: {
|
|
|
|
password: {type: "password"}
|
|
|
|
}
|
|
|
|
});
|
2013-12-15 20:11:46 +01:00
|
|
|
}
|