Created
November 26, 2016 15:27
-
-
Save lkLeonov/99a8a317fc0a7023ed132b2abe291efb to your computer and use it in GitHub Desktop.
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
var INVITER = { | |
//chas: '53a8d957e483483cf5', // unique for specific account //lkleonov | |
chas: 'e796d178a8fd0c3cfb', // unique for specific account //laukye | |
message: 'Хей, привет! Меня зовут Алексей. В рамках проекта по объединению креативных людей Constellation, мы запустили кампанию по поиску единомышленников. Мы решили, что если ты вдруг тоже заинтересован в поисках оных, то у меня есть для тебя хорошая новость! Попутно мы можем помочь с поисками единомышленников тебе, если ты в них нуждаешься!\n\nРаботает это так: ставишь тег #constellate на стене (или где-нибудь, чтобы тебя можно было найти через поиск) и рядом теги твоих увлечений, в чём ты, может, разбираешься, можешь свободно обсуждать и делиться опытом, творить что-то (ну, например, вот так: "#art #photography #dogbreeding #webdev #handmade #constellate"). И люди смогут потом находить по тегу #constellate тех, кто тоже находится в поисках и видеть, чем они увлекаются, чтобы завязать общение. Или, чтобы дать своим друзьям понять, о чём речь, можешь поставить таких тегов поверх нашей оригинальной записи (https://vk.com/wall-131414654_214), сделав репост.\n\nИ да, если у тебя есть желание быть в команде, считаешь себя готовым перевернуть мир - присоединяйся к нам, вливайся, участвуй. Мы открыты новым людям. Удачи и хорошего дня. (Алексей Леонов, сооснователь Constellation Project)' | |
} | |
INVITER.invited = []; | |
INVITER.failed = []; | |
var Msg = function() { | |
var serialize = function(obj) { | |
var str = []; | |
for(var p in obj) | |
if (obj.hasOwnProperty(p)) { | |
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); | |
} | |
return str.join("&"); | |
} | |
var sendMsg = function(data, callback) { | |
var xhr = new XMLHttpRequest(); | |
xhr.open("POST", '/al_mail.php', true); | |
//xhr.setRequestHeader("X-CSRFToken", csrf_token); | |
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); | |
xhr.onreadystatechange = function() { | |
if (this.readyState != 4) return; | |
callback(this.responseText); | |
} | |
xhr.send(serialize(data)); | |
} | |
return function(id, message, callback) { | |
var data = { | |
//_smt: 'profile:23', | |
act: 'a_send', | |
al: 1, | |
chas: INVITER.chas, | |
from: 'box', | |
media: '', | |
message: message, | |
title: '', | |
to_ids: id | |
} | |
sendMsg(data, callback) | |
} | |
}(); | |
// test | |
// Msg(50595075, 'Hello', function(d){console.log(d)}) | |
// Rand num between 1 and 6 | |
// Math.floor(Math.random() * 6) + 1 | |
var i = 0; | |
function inviteLoop () { | |
if (INVITER.ids.length === 0 ) return; | |
if (inviteLoop.stop) { | |
console.log('--------------STOPPED-----------------'); | |
console.log('Processed subscribers: ' + INVITER.invited.length + INVITER.failed.length, 'Invited: ' + INVITER.invited.length, 'Failed: ' + INVITER.failed.length); | |
return; | |
} | |
setTimeout(function () { | |
Msg(INVITER.ids[i], INVITER.message, function(res) { | |
var success = /Сообщение отправлено/.test(res); | |
if (success) { | |
localStorage.setItem(INVITER.ids[i], 'INVITE: SUCCESS'); | |
INVITER.invited.push(INVITER.ids[i]); | |
} else { | |
localStorage.setItem(INVITER.ids[i], 'INVITE: FAIL ' + res); | |
INVITER.failed.push(INVITER.ids[i]); | |
} | |
console.log(INVITER.ids[i], res); | |
i++; | |
if (i < INVITER.ids.length) { | |
inviteLoop(); | |
} else { | |
console.log('--------------DONE-----------------'); | |
console.log('Processed subscribers: ' + INVITER.ids.length, 'Invited: ' + INVITER.invited.length, 'Failed: ' + INVITER.failed.length); | |
alert('Processed subscribers: ' + INVITER.ids.length) | |
} | |
}); | |
}, (Math.floor(Math.random() * 8) + 1) * 1000 // between 1 and 8 seconds | |
// }, (Math.floor(Math.random() * 3000) + 1000) | |
) | |
} | |
//INVITER.ids = [0, 50595075, 376951404, 17337286]; | |
//INVITER.ids = [0, 376951404, 17337286, 389931173, 6863583, 51463499, 14212917]; | |
// RUN INVITING | |
//inviteLoop(); | |
/************************************************/ | |
// Calculating average time for inviting | |
var minInterv = 1; | |
var maxInterv = 3 | |
var subsCount = 3000000 | |
var usersInterv = 1000 | |
timeInMin = subsCount / usersInterv * ( (minInterv + maxInterv)/2 ) / 60 | |
// => 100 | |
// Сто минут (час сорок) при среднем интервале запросов 2 сек. | |
// Т.о. для теста на период времени 15 мин. со средним интервалом 2 сек (1-3), нужно сообщество в ~500 000 чел. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment