Правила оформления сообщений в данном топике:
Адрес сайта и страницы, на которой возникла проблема, размещается в тегах [ spoiler][ noindex]http://адрес_сайта/название_страницы[ /noindex][ /spoiler]
Для размещения кода, используйте тег "Code" внутри тега "Spoiler" - [ spoiler][ code]ваш код[ /code][ /spoiler]
или выложите на сайт «Pastebin».
При размещении объемных материалов, используйте тег "Spoiler" - [ spoiler]ваш текст[ /spoiler]
или выложите на сайт «Pastebin».
Размещать изображения в открытом виде. Для размещения скриншотов и других изображений, используйте тег "Spoiler" - [ spoiler][ img]http://ссылка_на_изображение[ /img][ /spoiler]
.
«Можно ответить на любой вопрос, если вопрос задан правильно.»
Платон
«Не каждый вопрос заслуживает ответа.»
Сайрус
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Если делать такой командой:
iimPlayCode('TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:NoFormName ATTR=NAME:username CONTENT='+iimGetExtract());
В общем не понятно. Почему текст из файла не вставляется такой строкой (EVENT):
iimPlayCode('EVENTS TYPE=KEYPRESS SELECTOR="HTML>BODY>MAIN>HEADER>DIV>DIV:nth-of-type(3)>DIV>DIV:nth-of-type(2)>DIV:nth-of-type(2)>FORM>DIV>DIV>DIV>DIV>INPUT" CHARS="'+iimGetExtract()+'"');
Отредактировано dvitkovs2 (03-10-2018 11:32:17)
Отсутствует
dvitkovs2
так по скрину видно что у вас нет текста в iimGetExtract()
Добавлено 30-09-2018 22:07:31
dvitkovs2
приведите кусок кода начиная с импорта данных из файла и заканчивая строкой с event
Добавлено 30-09-2018 22:14:55
dvitkovs2
хотелось бы напомнить что значение iimGetExtract() хранится только до следующего вызова iimPlayCode()
т.е. если вы получили значение через !extract после чего еще раз вызывали iimPlayCode() то после второго вызова - значение iimGetExtract() будет равно булевому false, либо значению переданному через !extract именно в последнем iimPlayCode()
чтобы этого избежать, используйте промежуточную переменную
Добавлено 30-09-2018 22:18:15
для примера:
iimPlayCode('set !extract 123') var result=iimGetExtract() alert(iimGetExtract()) // выведет 123 iimPlayCode('') alert(iimGetExtract()) // выведет пустоту alert(result) // выведет 123
Отредактировано InfSub (30-09-2018 22:18:15)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Здравствуйте! Я давно не использовал расширение iMacros for Firefox, да и не знаток js, так что извините если для кого вопрос буде обыденным.
А теперь собственно к вопросу, имеется код:
var macros = ''; var n = '\n'; macros += 'URL GOTO=https://link.na.kran' + n; /*здесь ссылка на кран*/ for (var i = 1; i = 3; i++) { /* здесь я присваиваю начальное значение i=1 с приращением +1, цикл должен был, как я думал, завершиться когда i=3*/ macros += 'TAG POS=1 TYPE=BUTTON FORM=NAME:NoFormName ATTR=TXT::Faucet' + n; macros += 'WAIT SECONDS=3600' + n; iimPlayCode(macros);} /*здесь я закрываю тело цикла*/
Отсутствует
Где я ошибся?
for (var i = 1; i = 3; i++)
ваше условие (расшифровываю):
при старте цикла присваиваем переменной i значение 1
во всех следующих итерациях (повторениях цикла) у вас выполняются следующие действия: присваиваем переменной i значение 3, проверяем i равно true, результат проверки true (так как переменная не равна false или null, или 0)
обращаю ваше внимание, что в вашем примере, вы проверяете не на равенство чему либо в вашем цикле, а присваиваете значение и потом просто проверяете значение переменной на true/false (собственно, в этом и ошибка)
возможно-ли запустить цикл на определённое время, например на 4 часа?
да, в начале скрипта, присваиваете переменной, например, переменной start_time - текущее время (в формате timestamp - в миллисекундах), прибавляете к ней 4*60*60*1000 (часы*минуты*секунды*миллисекунды) далее сравниваете текущее время (в миллисекундах) c переменной start_time
возможно-ли через расширение iMacros управлять приложениями в области уведомлений Windows?
что вы имеете ввиду под приложениями в области уведомлений?
пример работы с внешними приложениями есть в Мини FAQ на нашем форуме, в разделе iMacros (запуск внешней программы с аргументами из js-скрипта)
если приложение умеет работать через командную строку/принимать команды, то скорее всего удастся, что-то с ним сделать через iMacros версии 8.9.7
Отредактировано InfSub (06-10-2018 22:46:23)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Спасибо за пояснения к коду!
Насчет внешнего приложения имелся OpenVPN. Оно ушло в трей, там его основной функционал. Смысл был в том чтобы переходя на сайты, которые блокирует РосКомНадзор поднималось VPN-соединение, на других же вкладках(которые не блокирует РКН) VPN отключался. Не знаю, возможно только такое или нет?
Отредактировано koljan8115 (06-10-2018 22:55:45)
Отсутствует
OpenVPN
OVPN у вас работает для всего ПК а не для конкретной вкладки в браузере
не знаток js
ребят, скоро буду банить за вот такие фразу, вам гугл лень открыть и посмотреть принцип синтаксис записи цикла?
если вы, все же, пришли сюда с подобным вопросом, и с ошибкой уровня 1 урока по js, то не надо писать, подобные фразы, это и так понятно из ваших ошибок и вопросов, после подобной же фразы хочется отправить на уроки по использованию гугла
Отредактировано InfSub (06-10-2018 23:04:28)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Извиняюсь, я уже понял почему в условии цикла: for (var i = 1; i < 3; i++). Здесь 2 круга т.к. начальное значение i=1, а условие i<3 и значит 2 не приращается; но остаётся вопрос почему не сходится количество "Claim'ов"(нажатий на кнопку).
Прогоняя цикл с условием for (var i = 1; i < 4; i++) видно что в первом кругу 1 клайм, во втором - 2, в третьем - 3, конец цикла, т.е. в сумме 6 клаймов, а не 4. Почему?
Отсутствует
koljan8115
что такое клайм и где, собственно, видно, что их стало 3? или вы говорите о том что у вас переменная i стала равна 3?
и что такое 6 и 4? от куда эти значения взялись?
совершенно не понимаю вашей логики.. во всяком случае исходя из приведенного выше кода, в котором присутствует одна переменна i и по условию, данная переменная увеличивается на 1 в каждом цикле - пока условие возвращает true, т.е. в первом цикле i равно 1, во втором i равно 2, в третьем i равно 3, далее цикл прерывается исходя из условия i<4 или i ==3
для справки: раз уж вам лень было погуглить, i равно 3 пишется как i==3 (двойной знак равно - означает равенство, одинарный знак равенства - означает присвоение значения переменной)
Отредактировано InfSub (07-10-2018 01:07:57)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Клайм, как написано выше - это клик по кнопке "Собрать". Числа немного другие, здесь я изменял код.
Тестировал я на этом коде:
var macros = ''; var n = '\n'; macros += 'URL GOTO=http://demo.imacros.net/Automate/TestForm1' + n; macros += 'TAG POS=1 TYPE=INPUT:TEXT FORM=ID:demo ATTR=ID:name CONTENT=цикл' + n; macros += 'WAIT SECONDS=10' + n; for ( i = 1; i < 4; i++) { macros += 'TAG POS=1 TYPE=INPUT:RADIO FORM=ID:demo ATTR=ID:medium' + n; macros += 'WAIT SECONDS=5' +n; macros += 'TAG POS=1 TYPE=INPUT:RADIO FORM=ID:demo ATTR=ID:large' + n; macros += 'WAIT SECONDS=5' + n; macros += 'TAG POS=1 TYPE=INPUT:RADIO FORM=ID:demo ATTR=ID:small' + n; macros += 'WAIT SECONDS=7' + n; iimPlayCode(macros);}
Отсутствует
Как ты скрипт составил так он и работает !!!
У тебя сначала ставит галочку в чекбоксе medium
потом ждёт 5 секунд
потом ставит следующую галочку large
опять ждёт 5 секунд
потом ставит следующую на small
и опять ждёт 7 секунд
и всё заново, новый цикл
так нахрена ты в одном цикле по всем чекбоксам кликаешь ???
В итоге все равно последняя галочка ставится на small и так и остаётся.
Напиши что ты хочешь, что скрипт делать должен,
и зачем тебе цикл
Отредактировано PRESIDENT (07-10-2018 18:18:25)
Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.
Отсутствует
PRESIDENT, Всё правильно так я и хотел но с одним исключением чтобы кликов по "Small" суммарно было 3 раза за 3 прохода, а не 6 раз за три прохода. Конечно я могу поставить i<3 и тогда цикл выполнится пусть за 2 круга, но сделает 3 клика по "Small". Но проблема в том, что я не могу выставить ни 4 клика ни 5 кликов, так как за 2 круга совершается 3 клика по "Small", а за 3 круга уже 6 кликов.
Почему в одном чекбоксе клики сделаны? Так это для наглядности чтобы не ждать по 1 часу( в последствии хочу цикл использовать на кране).
Добавлено 07-10-2018 18:51:49
и всё заново, новый цикл
Почти, только на втором круге делается почему-то всё дважды, а на третьем - трижды, если добавить четвертый круг - то четырежды и тд.
А нужно первый круг единожды(каждое действие), второй круг снова тоже самое единожды, и тд.
Добавлено 07-10-2018 18:56:39
На скринах показано сколько действий делает каждый круг, где видно больше строк - это всё новый круг, каждый скрин это отдельный круг.
Отредактировано koljan8115 (07-10-2018 18:56:39)
Отсутствует
Руки бы повыдергивать за такую писанину
macros += ...
тут ты в перемененную macros добавляешь все новые команды, т.е. к старым добавляются новые.
Пиши нормально и будет работать нормально.
iimPlayCode('URL GOTO=http://demo.imacros.net/Automate/TestForm1'); iimPlayCode('TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:name CONTENT=цикл'); iimPlayCode('WAIT SECONDS=10'); for (i = 1; i < 4; i++){ iimPlayCode('TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:medium'); iimPlayCode('WAIT SECONDS=5'); iimPlayCode('TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:large'); iimPlayCode('WAIT SECONDS=5'); iimPlayCode('TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:small'); iimPlayCode('WAIT SECONDS=7'); }
var macros = '', n = '\n'; macros += 'URL GOTO=http://demo.imacros.net/Automate/TestForm1' + n; macros += 'TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:name CONTENT=цикл' + n; macros += 'WAIT SECONDS=10'; iimPlayCode(macros); for (i = 1; i < 4; i++){ var macros = ''; macros += 'TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:medium' + n; macros += 'WAIT SECONDS=5' +n; macros += 'TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:large' + n; macros += 'WAIT SECONDS=5' + n; macros += 'TAG POS=1 TYPE=INPUT:RADIO ATTR=ID:small' + n; macros += 'WAIT SECONDS=7'; iimPlayCode(macros);}
Отредактировано PRESIDENT (07-10-2018 19:13:39)
Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.
Отсутствует
Здравствуйте! Подскажите как в Javascript, работающем в цикле сделать чтоб включалась команда PAUSE в заданное время, например в 22:38 по времени компьютера?
То есть чтоб результат был аналогичен нажатию кнопки пауза\продолжить в браузере фаерфокс 56 и аймакрос 8.9.7
Вот тут есть один скрипт, который вроде как должен был бы работать, да не работает почему-то. Там простую операцию делает: открывает в цикле одну и ту же страницу сайта. И в заданное время надо чтоб скрипт сделал паузу. А потом в заданное время снова продолжил бы цикл дальше.
Вот сам скрипт:
for(a=1; a<99999; a++) { iimDisplay('Номер '+a); iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=https://2ip.ru/'); function getTime(date){ return date.toLocaleTimeString('en-US', { hour12: false, hour: "numeric", minute: "numeric", second: "numeric" }); } var createDate = function(time){ return new Date('01.01.2000' + time); } var loop = { act: true, doNotPlay: [ { from: createDate('13:33:00'), to: createDate('13:34:00') }, { from: createDate('13:45:00'), to: createDate('13:46:00') }, ], start : function() { // проверка на то что текущая дата между датами window.setInterval(function(){ this.act = this.doNotPlay.every(function(dates){ var currentDate = createDate(getTime(new Date())); if (dates.to - currentDate < dates.to - dates.from && dates.to - currentDate > 0) { return false; } else return true; }); }, 1000); // job window.setInterval(function(){ if (this.act) { iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=https://2ip.ru/'); iimPlayCode('PAUSE'); } this.act && console.log('action: ' + new Date().toString()); }, 1000); } }; loop.start(); }
Отредактировано Герман (16-10-2018 23:21:45)
Отсутствует
да не работает почему-то
ох уж эти горе программисты, все бы им в цикл запихнуть, и инициализацию функции, и setInterval ....
может вообще-то есть какой-то другой, более простой способ, более простой скрипт (код), который бы выполнял подобную задачу, делать паузы в заданное время?
есть - пишется за 5 минут - час, в зависимости от знаний и умения гулить
принцип такого скрипта - описан несколькими постами выше
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
есть - пишется за 5 минут - час, в зависимости от знаний
не, ну за 5 минут и даже за час, это вы явно преувеличили! Я тут уже несколько дней не могу состряпать такой скрипт, чтоб паузу делал в заданное время
Добавлено 14-10-2018 23:16:38
Понял только что всё в кучу пихать в цикл не надо. Это грубейшая ошибка, и так не бывает. Надо как-то иначе, по отдельности (типа мухи отдельно, коклеты отдельно)..
Отредактировано Герман (14-10-2018 23:16:38)
Отсутствует
скрипт, чтоб паузу делал в заданное время
Могу предложить костыль: перед запуском скрипта вручную высчитывате количество секунд до нужного для паузы времени и перед командой PAUSE вставляете команду WAIT SECONDS=хххтутКоличествоСекундДоПаузы
Отсутствует
udalov
а зачем пауза?
либо пауза либо вайт секондс
Добавлено 15-10-2018 22:58:13
это вы явно преувеличили!
хотите сказать 4 строчки текста пишутся больше? даже с учетом гугла?
вот простейший вариант без проверок на то что время уже прошло и надо увеличить дату:
var r=prompt('Остановить в, (чч:мм):').split(':'); var date = new Date(); var stop = +new Date(date.getFullYear(),date.getMonth(),date.getDate(),r[0],r[1]); if(Date.now()>=stop){iimPlayCode('pause');};
Отредактировано InfSub (15-10-2018 22:58:13)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
или вообще можно в 1 строчку, но скрипт править каждый раз придется:
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Уважаемые знатоки !!! Стоит вопрос мониторинга ботов удаленно. Т.е. мониторить стату ботов в любое время и месте.
Как проще это реализовать? Кроме как веб-сокеты , ни чего в голову не приходит.
Отсутствует
dim222 Удаленный доступ к рабочему столу? Закинуть ботов на VPSку?
Логировать работу ботов на удалённый сервер?
Можно и без WebSocket посылать данные обычными XMLHttpRequest и fetch запросами в обход браузерных кроссдоменных ограничений.
Отсутствует
вот простейший вариант без проверок на то что время уже прошло и надо увеличить дату
удалено избыточное цитирование
Спасибо огромное! Это уже хорошо, что скрипт на паузу может поставить в заданное время. Хотя вообще-то надо чтоб скрипт не только на паузу ставил в назначенное время, но и потом "нажимал продолжить" тоже в назначенное время. И так несколько раз, сколько требуется.
Вот хороший кусок кода:
function getTime(date){ return date.toLocaleTimeString('en-US', { hour12: false, hour: "numeric", minute: "numeric", second: "numeric" }); } var createDate = function(time){ return new Date('01.01.2000' + time); } var loop = { act: true, doNotPlay: [ { from: createDate('13:33:00'), to: createDate('13:34:00') }, { from: createDate('13:45:00'), to: createDate('13:46:00') }, ], start : function() { // проверка на то что текущая дата между датами window.setInterval(function(){ this.act = this.doNotPlay.every(function(dates){ var currentDate = createDate(getTime(new Date())); if (dates.to - currentDate < dates.to - dates.from && dates.to - currentDate > 0) { return false; } else return true; }); }, 1000); // job window.setInterval(function(){ if (this.act) { iimPlayCode('TAB CLOSEALLOTHERS\nCLEAR\nURL GOTO=адрес'); iimPlayCode('PAUSE'); } this.act && console.log('action: ' + new Date().toString()); }, 1000); } }; loop.start();
{ from: createDate('13:33:00'), to: createDate('13:34:00') }, { from: createDate('13:45:00'), to: createDate('13:46:00') },
InfSub
Отредактировано Герман (16-10-2018 23:31:55)
Отсутствует
Можно и без WebSocket посылать данные обычными XMLHttpRequest и fetch запросами в обход браузерных кроссдоменных ограничений.
Ok! Допустим каждый бот посылает данные на сервер в формате .json.
Но как(чем) их обработать и вставить в нужные div-ы тяму васче не хватает. При этом обновление должно происходить в реальном времени.
Отсутствует
dim222 Можно на php принять и обработать.
Самое простое - закидываем на любой шаред два файла.
Пустой log.txt, куда будет писаться лог
и какой-нибудь
recording_log.php в кодировке UTF-8 без BOM следующего содержимого
<?php #Принимаем входные данные JSON $json_str = file_get_contents('php://input'); #Декодируем json в объект $obj = json_decode($json_str); #Дальше можно циклом foreach() перебрать объект или как ниже по ключам выбирать из объекта параметры нужные для логирования #Собираем в переменную $text нужные параметры объекта для сохранения (конкатенация в php идёт через точку) $text = $obj["key1"] . "\n" . $obj["key2"] . "\n" . $obj["key3"] . "\n"; $text .= str_repeat("=", 50);//Прибавляем разделитель для украшательства $text .= date('Y-m-d H:i:s') . "\n";//Прибавляем текущую дату и время если нужно #Открываем файл куда логируем действия $file = fopen("log.txt", "a"); #Записываем в файл содержимое переменной $text fwrite($file, $text); fclose($file);//Закрываем файл ?>
Вывести значение или информацию о переменной можно
var_dump($var);
или
echo print_r($var);
Можно логировать сразу в БД и кошерно выводить в виде динамической странички, для этого знакомьтесь с SQL языком запросов.
Можно разбить на несколько логов(для каждого бота свой) и идентифицировать каждого бота по кукисам или URL параметрам.
Вариантов много.
Отредактировано Squatter (17-10-2018 04:33:23)
Отсутствует