UserScript name New Userscript namespace http tampermonkey net version

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
// ==UserScript===
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://www.instagram.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function sleep (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
async function process (node) {
console.log('Ищу ноду, которая открывает окно фото');
if (node.childNodes[0] === undefined) {
console.error('Не смог найти ноду');
return false;
}
console.log('Нода найдена, эмулирую клик');
node.childNodes[0].click();
await sleep(1000);
console.log('Ищу кнопку лайка');
let likeButton = document.querySelector('.dCJp8.afkep.coreSpriteHeartOpen._0mzm-');
if (likeButton == null) {
console.error('Не смог найти кнопку лайка');
return false;
}
let likeChild = likeButton.childNodes[0];
if (likeChild.classList.contains('glyphsSpriteHeart__filled__24__red_5')) {
console.log('Нашёл кнопку лайка, лайк уже стоит');
} else {
console.log('Нашёл кнопку лайка, эмулирую клик');
likeButton.click();
}
await sleep(300);
console.log('Закрываю фото, иду к следующей');
document.querySelector('.ckWGn').click();
node.remove();
await sleep(1500);
};
function getNodes () {
let nodes = document.querySelectorAll('.v1Nh3.kIKUG._bz0w');
if (nodes.length == 0) {
console.error('Не смог собрать массив фото');
return false;
}
return nodes;
}
let injectStyle = document.createElement('style');
injectStyle.appendChild(document.createTextNode(`.injectedContainer:disabled{opacity: 0.6;}.injectedContainer{top:10px;left:10px;z-index:50;outline:none;font:inherit;position:absolute;border:1px solid #ddd;border-radius:10px;padding:10px;color:#fff;background-color:#000;cursor:pointer;border:3px solid #000;font-family:sans-serif}.injectedContainer--enable{border:3px solid red}`));
document.body.appendChild(injectStyle);
let injectButton = document.createElement('button');
injectButton.setAttribute('class', 'injectedContainer');
injectButton.innerHTML = '_#: state';
document.body.appendChild(injectButton);
document.querySelector('.injectedContainer').addEventListener('click', function (event) {
this.classList.add('injectedContainer--enable');
this.disabled = true;
document.querySelector('.EZdmt > div:nth-child(2)').remove();
console.log('Удалил фото из раздела "Лучшие Публикации"');
let nodes = getNodes();
console.log('Собрал массив фото, на данный момент их: ', nodes.length);
(async () => {
let iteration = 0;
while (nodes.length != 0) {
if (nodes.length == (iteration + 1)) {
await sleep(600);
window.scrollTo(0, document.body.scrollHeight);
await sleep(600);
nodes = getNodes();
iteration = 0;
}
console.log(nodes.length, iteration);
await process(nodes[iteration]);
iteration++;
}
})();
});
})();