Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * SocialMNST 1.0.0
- * Автор: tanckov
- * Версия датируется: 25.11.2016
- */
- // Библиотеки и модули
- var http = require('http');
- var request = require('request');
- var urlutills = require('url');
- var _ = require('underscore');
- var Promise = require('bluebird');
- var Client = require('instagram-private-api').V1;
- var querystring = require('querystring');
- var conf = require('./config');
- var socialmnst = {
- db: conf.init(),
- isJSON: function(something){
- if (typeof something != 'string')
- something = JSON.stringify(something);
- try {
- JSON.parse(something);
- return true;
- } catch (e) {
- return false;
- }
- },
- onlyId: function(arr){
- return _.map(arr, function(user) {
- return user.id;
- });
- },
- applyMode: function(arr, mode){
- switch (mode*1) {
- case 1:
- var new_arr = [];
- for(var i = 0;i<arr.length;i++){
- if(!arr[i].isPrivate){
- new_arr[new_arr.length] = arr[i];
- }
- }
- return new_arr;
- break;
- case 2:
- var new_arr = [];
- for(var i = 0;i<arr.length;i++){
- if(arr[i].isPrivate){
- new_arr[new_arr.length] = arr[i];
- }
- }
- return new_arr;
- break;
- default:
- return arr;
- }
- },
- login: function(login, password, target, step, unFollowDelay, mode, action, per){
- if(!socialmnst.db[login]){
- var device = new Client.Device(login);
- var storage = new Client.CookieFileStorage(__dirname + '/cookies/'+login+'.json');
- Client.Session.create(device, storage, login, password).catch(Client.Exceptions.AuthenticationError, function(error){
- return {'AuthenticationErroror':true};
- }).then(function(session) {
- if(session.AuthenticationErroror){
- conf.delete(__dirname + '/cookies/'+login+'.json');
- } else {
- socialmnst.db[login] = {
- 'login': login,
- 'password': password,
- 'step': step,
- 'cfg': {
- 'timestamp': Date.now()/1000,
- 'target': target,
- 'referer': 'start',
- 'unFollowDelay': unFollowDelay,
- 'mode': mode,
- 'action': action,
- 'per': per
- }
- }
- socialmnst.core(login, session);
- }
- })
- } else {
- if(password==0){
- socialmnst.db[login].cfg.force = true;
- } else {
- if(socialmnst.db[login].cfg.timestamp<(Date.now()/1000)-30){
- var device = new Client.Device(login);
- var storage = new Client.CookieFileStorage(__dirname+'/cookies/'+login+'.json');
- Client.Session.create(device, storage, login, password).catch(Client.Exceptions.AuthenticationError, function(error){
- return {'AuthenticationError':true};
- }).then(function(session) {
- if(session.AuthenticationErroror){
- conf.delete(__dirname+'/cookies/'+login+'.json');
- return;
- }
- socialmnst.db[login].password = password;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.db[login].cfg.target = target;
- socialmnst.db[login].cfg.unFollowDelay = unFollowDelay;
- socialmnst.db[login].cfg.mode = mode;
- socialmnst.db[login].cfg.action = action;
- socialmnst.db[login].cfg.per = per;
- socialmnst.core(login, session);
- })
- }
- }
- }
- },
- core: function(login, session){
- console.log(socialmnst.db[login].step);
- if(!socialmnst.db[login] || socialmnst.db[login].cfg.force){
- delete socialmnst.db[login].cfg.force;
- return;
- }
- var check_timestamp = socialmnst.db[login].cfg.timestamp;
- var step = socialmnst.db[login].step;
- switch (step) {
- case 'start':
- Client.Account.searchForUser(session, socialmnst.db[login].cfg.target).then(function(account) {
- socialmnst.db[login].cfg.targetId = account.id;
- socialmnst.db[login].cfg.referer = socialmnst.db[login].step;
- socialmnst.db[login].step = 'getAccountToFollow';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- })
- break;
- case 'getAccountToFollow':
- Promise.map(_.range(1), function() {
- if(!session.__targetFeed){
- session.__targetFeed = new Client.Feed.AccountFollowing(session, socialmnst.db[login].cfg.targetId);
- socialmnst.db[login].cfg.getAccountToFollowCount = 0;
- return session.__targetFeed.get();
- } else {
- if(socialmnst.db[login].cfg.getAccountToFollowCount>30 || !session.__targetFeed.isMoreAvailable()){
- socialmnst.db[login].cfg.referer = socialmnst.db[login].step;
- socialmnst.db[login].step = 'getNextTarget';
- delete session.__targetFeed;
- return;
- } else{
- if(step == socialmnst.db[login].cfg.referer) socialmnst.db[login].cfg.getAccountToFollowCount++;
- return session.__targetFeed.get();
- }
- }
- }).then(function(results) {
- if(socialmnst.db[login].step=='getNextTarget'){
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- var arr = _.flatten(results);
- followList = socialmnst.applyMode(_.map(arr, function(user) {
- return {id:user.id,isPrivate:user._params.isPrivate};
- }), socialmnst.db[login].cfg.mode);
- if(followList.length!=0){
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- check_timestamp = socialmnst.db[login].cfg.timestamp;
- setTimeout(function() {
- Client.Relationship.getMany(session, socialmnst.onlyId(followList)).then(function(relationship) {
- socialmnst.db[login].cfg.followList = [];
- for(var i=0;i<relationship.length;i++){
- if(!relationship[i]._params.following){
- socialmnst.db[login].cfg.followList[socialmnst.db[login].cfg.followList.length] = {
- 'id': relationship[i].accountId,
- 'isPrivate': relationship[i]._params.isPrivate
- }
- }
- }
- if(socialmnst.db[login].cfg.followList.length==0){
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- socialmnst.db[login].cfg.referer = socialmnst.db[login].step;
- socialmnst.db[login].step = 'follow';
- socialmnst.db[login].cfg.getAccountToFollowCount = 0;
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- });
- }, Math.random()*(7000)+0);
- } else {
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- }
- });
- break;
- case 'follow':
- socialmnst.db[login].cfg.referer = socialmnst.db[login].step;
- if(socialmnst.db[login].cfg.nextFollow && Date.now()/1000<socialmnst.db[login].cfg.nextFollow){
- socialmnst.db[login].step = 'followDelay';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- socialmnst.db[login].cfg.stackFollowList = socialmnst.db[login].cfg.stackFollowList || [];
- socialmnst.db[login].cfg.trueFollowList = socialmnst.db[login].cfg.trueFollowList || [];
- if(socialmnst.db[login].cfg.trueFollowList.length==0){
- if(socialmnst.db[login].cfg.followList.length==0){
- socialmnst.db[login].step = 'getAccountToFollow';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- Client.Account.getById(session, socialmnst.db[login].cfg.followList[0].id).then(function(relationship) {
- var trigger = relationship._params.followersCount>conf.minFollowersCount;
- trigger = trigger && relationship._params.followersCount<conf.maxFollowersCount;
- trigger = trigger && relationship._params.followingsCount>conf.minFollowingsCount;
- trigger = trigger && relationship._params.followingsCount<conf.maxFollowingsCount;
- console.log('followersCount: '+relationship._params.followersCount+', followingsCount: '+relationship._params.followingsCount);
- if(trigger){
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- check_timestamp = socialmnst.db[login].cfg.timestamp;
- setTimeout(function() {
- Client.Relationship.create(session, socialmnst.db[login].cfg.followList[0].id).catch(Client.Exceptions.ActionSpamError, function(error){
- return {'ActionSpamError':true};
- }).then(function(relationship) {
- if(relationship.ActionSpamError){
- socialmnst.db[login].cfg.nextFollow = (Date.now()/1000)+1800;
- socialmnst.db[login].step = 'followDelay';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- var stackFollowList = [];
- for(var i=0;i<socialmnst.db[login].cfg.stackFollowList.length;i++){
- if(socialmnst.db[login].cfg.stackFollowList[i]>Date.now()/1000|0-socialmnst.db[login].cfg.per)
- stackFollowList[stackFollowList.length] = socialmnst.db[login].cfg.stackFollowList[i];
- }
- socialmnst.db[login].cfg.stackFollowList = stackFollowList;
- socialmnst.db[login].cfg.stackFollowList[socialmnst.db[login].cfg.stackFollowList.length] = Date.now()/1000|0;
- if(socialmnst.db[login].cfg.stackFollowList.length>=socialmnst.db[login].cfg.action){
- socialmnst.db[login].cfg.nextFollow = (Date.now()/1000)
- +(socialmnst.db[login].cfg.per-((Date.now()/1000)-socialmnst.db[login].cfg.stackFollowList[0]));
- socialmnst.db[login].cfg.stackFollowList = [];
- socialmnst.db[login].step = 'followDelay';
- }
- socialmnst.db._cfg.reFollowList[socialmnst.db._cfg.reFollowList.length] = {
- 'id': socialmnst.db[login].cfg.followList[0].id,
- 'isPrivate': socialmnst.db[login].cfg.followList[0].isPrivate,
- 'followedBy': encodeURIComponent(login),
- 'targetBy': socialmnst.db[login].cfg.targetId,
- 'timestamp': Date.now()/1000|0
- };
- socialmnst.db[login].cfg.followList.shift();
- if(socialmnst.db[login].cfg.followList.length==0){
- socialmnst.db[login].step = 'getAccountToFollow';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- }
- });
- }, Math.random()*(7000)+0);
- } else {
- socialmnst.db[login].cfg.followList.shift();
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- });
- }
- } else {
- Client.Relationship.create(session, socialmnst.db[login].cfg.trueFollowList[0].id).catch(Client.Exceptions.ActionSpamError, function(error){
- return {'ActionSpamError':true};
- }).then(function(relationship) {
- if(relationship.ActionSpamError){
- socialmnst.db[login].cfg.nextFollow = (Date.now()/1000)+1800;
- socialmnst.db[login].step = 'followDelay';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- var stackFollowList = [];
- for(var i=0;i<socialmnst.db[login].cfg.stackFollowList.length;i++){
- if(socialmnst.db[login].cfg.stackFollowList[i]>Date.now()/1000|0-socialmnst.db[login].cfg.per)
- stackFollowList[stackFollowList.length] = socialmnst.db[login].cfg.stackFollowList[i];
- }
- socialmnst.db[login].cfg.stackFollowList = stackFollowList;
- socialmnst.db[login].cfg.stackFollowList[socialmnst.db[login].cfg.stackFollowList.length] = Date.now()/1000|0;
- if(socialmnst.db[login].cfg.stackFollowList.length>=socialmnst.db[login].cfg.action){
- socialmnst.db[login].cfg.nextFollow = (Date.now()/1000)
- +(socialmnst.db[login].cfg.per-((Date.now()/1000)-socialmnst.db[login].cfg.stackFollowList[0]));
- socialmnst.db[login].cfg.stackFollowList = [];
- socialmnst.db[login].step = 'followDelay';
- }
- socialmnst.db._cfg.reFollowList[socialmnst.db._cfg.reFollowList.length] = {
- 'id': socialmnst.db[login].cfg.trueFollowList[0].id,
- 'isPrivate': socialmnst.db[login].cfg.trueFollowList[0].isPrivate,
- 'followedBy': encodeURIComponent(login),
- 'targetBy': socialmnst.db[login].cfg.targetId,
- 'timestamp': Date.now()/1000|0
- };
- socialmnst.db[login].cfg.trueFollowList.shift();
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- });
- }
- }
- break;
- case 'getNextTarget':
- if(!socialmnst.db[login].cfg.parentTarget){
- socialmnst.db[login].cfg.parentTarget = socialmnst.db[login].cfg.targetId;
- }
- var parentTarget = encodeURIComponent(socialmnst.db[login].cfg.parentTarget);
- var target = encodeURIComponent(socialmnst.db[login].cfg.targetId);
- var params = 'parentTarget=' + parentTarget +
- '&target=' + target +
- '&followedBy=' + encodeURIComponent(login) +
- '&app=getNextTarget&key='+conf.apiKey;
- var options = {
- host: 'mpu.96.lt',
- path: '/api.php?'+params
- };
- function onError(){
- // HZ
- }
- var req = http.get(options, function(res) {
- var bodyChunks = '';
- res.on('data', function(chunk) {
- bodyChunks+=chunk;
- }).on('end', function() {
- if(socialmnst.isJSON(bodyChunks) && res.statusCode==200){
- var data = JSON.parse(bodyChunks);
- if(!data.status || data.status!='ok' || data.data.length==0){
- onError();
- } else {
- Client.Relationship.getMany(session, socialmnst.onlyId(data.data)).then(function(relationship) {
- socialmnst.db[login].cfg.nextTargetList = [];
- for(var i=0;i<relationship.length;i++){
- if(relationship[i]._params.following || !relationship[i]._params.isPrivate){
- socialmnst.db[login].cfg.nextTargetList[socialmnst.db[login].cfg.nextTargetList.length] = {
- 'id': relationship[i].accountId,
- 'isPrivate': relationship[i]._params.isPrivate,
- 'following': relationship[i]._params.following
- }
- }
- }
- if(socialmnst.db[login].cfg.nextTargetList.length==0){
- if(data.data.length==20){
- socialmnst.db[login].cfg.parentTarget = data.parentTarget;
- socialmnst.db[login].cfg.targetId = data.targetId;
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- onError();
- }
- } else {
- socialmnst.db[login].cfg.parentTarget = data.parentTarget;
- socialmnst.db[login].cfg.targetId = data.targetId;
- socialmnst.db[login].cfg.referer = socialmnst.db[login].step;
- socialmnst.db[login].step = 'checkNextTarget';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- });
- }
- } else {
- onError();
- }
- })
- });
- req.on('error', function(e) {
- onError();
- });
- break;
- case 'checkNextTarget':
- if(socialmnst.db[login].cfg.nextTargetList.length==0){
- socialmnst.db[login].cfg.referer = socialmnst.db[login].step;
- socialmnst.db[login].step = 'getNextTarget';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- Client.Account.getById(session, socialmnst.db[login].cfg.nextTargetList[0].id).then(function(relationship) {
- var trigger = relationship._params.followersCount>conf.minFollowersCount;
- trigger = trigger && relationship._params.followersCount<conf.maxFollowersCount;
- trigger = trigger && relationship._params.followingsCount>conf.minFollowingsCount;
- trigger = trigger && relationship._params.followingsCount<conf.maxFollowingsCount;
- if(trigger){
- socialmnst.db[login].cfg.targetId = socialmnst.db[login].cfg.nextTargetList[0].id;
- delete socialmnst.db[login].cfg.nextTargetList;
- socialmnst.db[login].cfg.referer = socialmnst.db[login].step;
- socialmnst.db[login].step = 'getAccountToFollow';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- socialmnst.db[login].cfg.nextTargetList.shift();
- socialmnst.db[login].cfg.referer = socialmnst.db[login].step;
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- });
- }
- break;
- case 'followDelay':
- socialmnst.db[login].cfg.referer = socialmnst.db[login].step;
- if(Date.now()/1000>=socialmnst.db[login].cfg.nextFollow){
- delete socialmnst.db[login].cfg.nextFollow;
- socialmnst.db[login].step = 'follow';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- socialmnst.db[login].cfg.trueFollowList = socialmnst.db[login].cfg.trueFollowList || [];
- var trigger = socialmnst.db[login].cfg.trueFollowList.length<socialmnst.db[login].cfg.action;
- trigger = trigger || socialmnst.db[login].cfg.trueFollowList.length<socialmnst.db[login].cfg.followList.length;
- if(trigger){
- if(socialmnst.db[login].cfg.followList.length!=0){
- Client.Account.getById(session, socialmnst.db[login].cfg.followList[0].id).then(function(relationship) {
- var trigger = relationship._params.followersCount>conf.minFollowersCount;
- trigger = trigger && relationship._params.followersCount<conf.maxFollowersCount;
- trigger = trigger && relationship._params.followingsCount>conf.minFollowingsCount;
- trigger = trigger && relationship._params.followingsCount<conf.maxFollowingsCount;
- if(trigger){
- socialmnst.db[login].cfg.trueFollowList[socialmnst.db[login].cfg.trueFollowList.length] = socialmnst.db[login].cfg.followList[0];
- socialmnst.db[login].cfg.followList.shift();
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- } else {
- socialmnst.db[login].cfg.followList.shift();
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- });
- } else {
- socialmnst.db[login].step = 'getAccountToFollow';
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- } else {
- setTimeout(function() {
- if(check_timestamp!=socialmnst.db[login].cfg.timestamp)
- socialmnst.db[login].cfg.force = true;
- socialmnst.db[login].cfg.timestamp = Date.now()/1000;
- socialmnst.core(login, session);
- }, Math.random()*(7000)+0);
- }
- }
- break;
- }
- socialmnst.db[login].cfg.lastUnfollowListDelay = socialmnst.db[login].cfg.lastUnfollowListDelay || (Date.now()/1000-conf.unFollowListDelay);
- socialmnst.db[login].cfg.unfollowList = socialmnst.db[login].cfg.unfollowList || [];
- socialmnst.db[login].cfg.stackUnfollowList = socialmnst.db[login].cfg.stackUnfollowList || [];
- socialmnst.db[login].cfg.nextUnfollow = socialmnst.db[login].cfg.nextUnfollow || Date.now()/1000;
- if(socialmnst.db[login].cfg.lastUnfollowListDelay<=(Date.now()/1000-conf.unFollowListDelay) && socialmnst.db[login].cfg.unfollowList.length==0){
- var stackUnfollowList = socialmnst.db[login].cfg.stackUnfollowList;
- var params = 'followedBy=' + encodeURIComponent(login) +
- '&unFollowDelay=' + encodeURIComponent((Date.now()/1000|0)-socialmnst.db[login].cfg.unFollowDelay) +
- '&app=getUnfollowList&key='+conf.apiKey;
- var post_data = "data="+JSON.stringify({"unfollow":socialmnst.db[login].cfg.stackUnfollowList});
- var options = {
- host: 'mpu.96.lt',
- path: '/api.php?'+params,
- method: 'POST',
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Content-Length': Buffer.byteLength(post_data)
- }
- };
- function onError(){
- // HZ
- }
- var req = http.request(options, function(res) {
- res.setEncoding('utf8');
- var bodyChunks = '';
- res.on('data', function(chunk) {
- bodyChunks+=chunk;
- }).on('end', function() {
- if(socialmnst.isJSON(bodyChunks) && res.statusCode==200){
- var data = JSON.parse(bodyChunks);
- if(!data.status || data.status!='ok'){
- onError();
- } else {
- socialmnst.db[login].cfg.unfollowList = data.data;
- socialmnst.db[login].cfg.lastUnfollowListDelay = Date.now()/1000;
- var clearedStackUnfollowList = [];
- for(var i=0;i<stackUnfollowList.length;i++){
- var trigger = true;
- for(var k=0;k<socialmnst.db[login].cfg.stackUnfollowList.length;k++){
- if(stackUnfollowList[i]==socialmnst.db[login].cfg.stackUnfollowList[k]) trigger = false;
- }
- if(trigger) clearedStackUnfollowList[clearedStackUnfollowList.length] = stackUnfollowList[i];
- }
- socialmnst.db[login].cfg.stackUnfollowList = clearedStackUnfollowList;
- }
- } else {
- onError();
- }
- });
- });
- req.on('error', function(e) {
- onError();
- });
- req.write(post_data);
- req.end();
- } else {
- if(socialmnst.db[login].cfg.unfollowList.length!=0 && socialmnst.db[login].cfg.nextUnfollow<=Date.now()/1000){
- var id = socialmnst.db[login].cfg.unfollowList[0];
- socialmnst.db[login].cfg.nextUnfollow = (Date.now()/1000)+socialmnst.db[login].cfg.per/(socialmnst.db[login].cfg.action*1.2);
- Client.Relationship.destroy(session, id).catch(Client.Exceptions.ActionSpamError, function(error){
- return {'ActionSpamError':true};
- }).then(function(relationship) {
- if(!relationship.ActionSpamError) {
- socialmnst.db[login].cfg.stackUnfollowList[socialmnst.db[login].cfg.stackUnfollowList.length] = id;
- var unfollowList = [];
- for(var i=0;i<socialmnst.db[login].cfg.unfollowList.length;i++){
- if(socialmnst.db[login].cfg.unfollowList[i]!=id) unfollowList[unfollowList.length] = socialmnst.db[login].cfg.unfollowList[i];
- }
- socialmnst.db[login].cfg.unfollowList = unfollowList;
- }
- });
- }
- }
- }
- };
- setInterval(function() {
- if(socialmnst.db._cfg.reFollowList && socialmnst.db._cfg.reFollowList.length!=0){
- var params = 'app=regMultiFollow&key='+conf.apiKey;
- var req_data = socialmnst.db._cfg.reFollowList;
- var post_data = "data="+JSON.stringify({"data":req_data});
- var options = {
- host: 'mpu.96.lt',
- path: '/api.php?'+params,
- method: 'POST',
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Content-Length': Buffer.byteLength(post_data)
- }
- };
- function onError(){
- // HZ
- }
- var req = http.request(options, function(res) {
- res.setEncoding('utf8');
- var bodyChunks = '';
- res.on('data', function(chunk) {
- bodyChunks+=chunk;
- }).on('end', function() {
- if(socialmnst.isJSON(bodyChunks) && res.statusCode==200){
- var data = JSON.parse(bodyChunks);
- if(!data.status || data.status!='ok'){
- onError();
- } else {
- reFollowList = [];
- for(var i=0;i<socialmnst.db._cfg.reFollowList.length;i++){
- var trigger = true;
- for(var k=0;k<req_data.length;k++){
- if(_.isEqual(req_data[k], socialmnst.db._cfg.reFollowList[i])) trigger = false;
- }
- if(trigger) reFollowList[reFollowList.length] = socialmnst.db._cfg.reFollowList[i];
- }
- socialmnst.db._cfg.reFollowList = reFollowList;
- }
- } else {
- onError();
- }
- });
- });
- req.on('error', function(e) {
- onError();
- });
- req.write(post_data);
- req.end();
- }
- }, conf.regFollowDelay);
- setInterval(function() {
- conf.save(socialmnst.db);
- }, conf.saveDelay);
- function userConnected(req, res){
- res.writeHead(200, {"Content-Type": "text/html"});
- var url = urlutills.parse(req.url, true);
- switch(url.pathname){
- default:
- res.write('<HTML><HEAD><TITLE>Error</TITLE></HEAD><BODY>Bad login</BODY></HTML>');
- break;
- case "/favicon.ico":
- break;
- case "/api":
- if(url.query.login && url.query.password && url.query.target){
- res.write('<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>');
- var unFollowDelay = url.query.unFollowDelay || 86400;
- var mode = url.query.mode || 1;
- var action = url.query.action || 50;
- var per = url.query.per || 3600;
- socialmnst.login(url.query.login, url.query.password, url.query.target, 'start', unFollowDelay, mode, action, per);
- } else {
- res.write('<HTML><HEAD><TITLE>Error</TITLE></HEAD><BODY>Bad login</BODY></HTML>');
- }
- break;
- }
- res.end();
- }
- http.createServer(userConnected).listen(conf.port);
- console.log("Сервер запущен");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement