blog/

Как разыграть бесплатные места на курсе вёрстки для архитекторов (JS+Instagram)

Ivan @ 22 / 01 / 2021 @ Blog / Медиа / Программирование / Скрипты
( / / )

Время чтения: ~ 6 мин.

Перед праздниками раздавали бесплатные места на курс вёрстки для архитекторов.?

Ну а чтобы не просто разыгрывать через готовые сервисы, написал коротенький скрипт для выбора победителя.

Код скрипта для выбора победителей в Instagram розыгрыше:

let userNameList = document.querySelectorAll(".sqdOP.yWX7d._8A5w5.ZIAjV "); // here goes the selector we search for
console.log(userNameList.length);
nameSet = new Set();

for (let i=0; i<userNameList.length; i++) {
  nameSet.add(userNameList[i].firstChild.nodeValue);
  console.log(userNameList[i].firstChild.nodeValue);
}

console.log(nameSet.size);
let keys = Array.from(nameSet.keys());

console.log("!!!!!!!!!!!!!!!!!!!!!!!!");
console.log("!!!!!!!!!!!!!!!!!!!!!!!!");
console.log("!!!!!!!!!!!!!!!!!!!!!!!!");
console.log("!!!!!!!!!!!!!!!!!!!!!!!!");
console.log("Selected randomly:");

console.log(keys[Math.floor(Math.random() * keys.length)]);
console.log(keys[Math.floor(Math.random() * keys.length)]);
console.log(keys[Math.floor(Math.random() * keys.length)]);

Угадайте, для чего вот это может пригодиться: document.querySelector('.dCJp8.afkep').click();

UPD 15.10.22. Обновлённая версия скрипта, см. комментарии в конце кода:

// WRITTEN BY I. Tolstikov of DMTRVK.RU
// THANKS TO GeorgeCrisan from https://forum.freecodecamp.org/t/how-to-make-math-random-not-repeat-same-numbers/417973/3 for the generateUniqueRandom function

let haveIt = [];
function generateUniqueRandom(maxNr) {
    //Generate random number
    let random = (Math.random() * maxNr).toFixed();

    //Coerce to number by boxing
    random = Number(random);

    if(!haveIt.includes(random)) {
        haveIt.push(random);
        return random;
    } else {
        if(haveIt.length < maxNr) {
          //Recursively generate number
         return  generateUniqueRandom(maxNr);
        } else {
          console.log('No more numbers available.')
          return false;
        }
    }
}


let userNameList = document.querySelectorAll("._aap6._aap7._aap8"); // here goes the selector we search for
console.log(userNameList.length);
nameSet = new Set();

for (let i=0; i<userNameList.length; i++) {
  nameSet.add(userNameList[i].firstChild.textContent);
  console.log(userNameList[i].firstChild.textContent);
}

console.log(nameSet.size);
let keys = Array.from(nameSet.keys());

console.log("!!!!!!!!!!!!!!!!!!!!!!!!");
console.log("!!!!!!!!!!!!!!!!!!!!!!!!");
console.log("!!!!!!!!!!!!!!!!!!!!!!!!");
console.log("!!!!!!!!!!!!!!!!!!!!!!!!");
console.log("Selected randomly:");

for (let i=0; i<3; i++){ //CHANGE THIS TO THE NUMBER OF WINNERS
     //console.log(keys[Math.floor(Math.random() * keys.length)]);
     randomNumber = generateUniqueRandom(keys.length);
     if (keys[randomNumber] == "dmtrvk.ru" | keys[randomNumber] == undefined){ //CHANGE THIS TO EXCLUDE YOUR ACCOUNT
         i--;
     } else {
         console.log("№",i+1," —", keys[randomNumber]);
     }
}

И код для того, чтобы не нажимать кнопку загрузки комментариев вручную:

(function myLoop(i) {
  setTimeout(function() {
    try {
        document.querySelector('.dCJp8.afkep').click();
        console.log('>')
    } catch(e) {
        console.log('Can find any button to click, moving on.')
        return;
    }
    console.log('>'); //  your code here                
    if (--i) myLoop(i);   //  decrement i and call myLoop again if i > 0
  }, 500)
})(100);                   //  pass the number of iterations as an argument

 

 


Может быть интересно:


Подпишитесь на нас в социальных сетях!

Instagram
VK
Facebook
YouTube!
Telegram!

Подпишитесь на обновления



* нажимая на кнопку «Подписаться», вы даете согласие на обработку своих персональных данных