blog/
Как разыграть бесплатные места на курсе вёрстки для архитекторов (JS+Instagram)
Перед праздниками раздавали бесплатные места на курс вёрстки для архитекторов.?
Ну а чтобы не просто разыгрывать через готовые сервисы, написал коротенький скрипт для выбора победителя.
Код скрипта для выбора победителей в 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
Может быть интересно:
- Скрипт для выбора победителя в инстаграме (из лайков)
- Скрипт для выбора победителя в инстаграме (из комментариев)
- Урок — Буквы от больших к маленьким в InDesign
- Поменять картинки местами в InDesign
- Calculate inclination of a roof valley with Python
▚