Полезная информация

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 27-10-2018 22:22:47

Duh в новых версиях помимо ограничений "стимулирующих коммерческое развитие продукта", есть функции, которые в принципе больше не доступны

Не поддерживается в iMacros 10.x.x.x

CLICK
EVENT, EVENTS
FILEDELETE
FILTER
ONDIALOG
PROXY
!POPUP_ALLOWED
!SINGLESTEP
File upload is not supported
iMacros for Firefox is disabled in Private Browsing mode due to restrictions in Firefox.


Подозреваю, что дело тут в API WebExtensions. Если со всеми хаками реализовать утерянные функции iMacrosa для quantum на новом API, то наверно расширение просто не пройдёт валидацию на AMO.

Duh пишет:

на iMacros проще все, но вы портите знания программирования. лучше сразу учится чистому язику программирования.

Неистово плюсую.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 17-10-2018 15:32:31

Да, кстати, для тех, кто не знает, чтобы запрос отображался на вкладке "Сеть"

скрытый текст
https://i5.imageban.ru/out/2018/10/17/b4269ff15b2658ea6d7e3cbc6c1c877b.jpg

его нужно формировать не через конструктор, а в контексте текущей вкладки

скрытый текст

Выделить код

Код:

    var someObj = {key1:"value1",key2:"value2",key3:"value3"};
    var x = new window.XMLHttpRequest();
    x.open('POST', 'http://logs.ru/recording_log.php');
    x.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    x.send(encodeURIComponent(JSON.stringify(someObj)));


Естественно при этом домен запроса должен быть открыт в текущей вкладке, чтобы запрос получился.

Это удобно для отладки запроса, чтобы видеть какие данные отправляются

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 17-10-2018 14:16:47

dim222

    Правильно. Вот пример с циклом, логируем и ключ и значение.
    В заголовке ставим application/json

js

Выделить код

Код:

    var X = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
    var someObj = {key1:"value1",key2:"value2",key3:"value3"};
    var x = new X();
    x.open('POST', 'http://test.ru/recording_log.php');
    x.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    x.send(encodeURIComponent(JSON.stringify(someObj)));


[spoiler=php]

Выделить код

Код:

<?php
#Принимаем входные данные JSON
$json_str = file_get_contents('php://input');
#Декодируем json в объект
$obj = json_decode(urldecode($json_str), true);
$result = str_repeat("=", 30);//Ставим разделитель
$result .= date('Y-m-d H:i:s') . "\n";//Прибавляем текущую дату и время если нужно
foreach ($obj as $key => $val) {
    $result .= $key . " => " . $val . "\n";
}
#Открываем файл куда логируем действия
$file = fopen("log.txt", "a");
#Записываем в файл содержимое переменной

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 17-10-2018 04:32:07

dim222 Можно на php принять и обработать.
Самое простое - закидываем на любой шаред два файла.

Пустой log.txt, куда будет писаться лог

и какой-нибудь

recording_log.php в кодировке UTF-8 без BOM следующего содержимого

[spoiler][code]<?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

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 16-10-2018 20:17:45

dim222 Удаленный доступ к рабочему столу? Закинуть ботов на VPSку?
Логировать работу ботов на удалённый сервер?
Можно и без WebSocket посылать данные обычными XMLHttpRequest и fetch запросами в обход браузерных кроссдоменных ограничений.

iMacros » iMacros: Капчи, сохранение и распознавание. reCaptcha, Solve Media. » 14-08-2018 18:14:23

dim222, так попробуйте

скрытый текст

Выделить код

Код:

var elem = window.document.querySelector('#overlay');
var img = window.getComputedStyle(elem).getPropertyValue('background-image');
window.console.log(img);


UPD Доступ к фрейму
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

iMacros » Не работает конструкция filter (js) » 10-08-2018 10:51:41

Тогда ещё проще

скрытый текст

Выделить код

Код:

var node = window.document.querySelectorAll('a[href*="kino.mail.ru"]');
var links = Array.from(node, x => x.href);
window.console.log(links);

iMacros » Не работает конструкция filter (js) » 10-08-2018 07:41:26

Пожалуйста. А чем тривиальный цикл for...of не устраивает?
ИМХО Быстрее и ещё короче

скрытый текст

Выделить код

Код:

var node = window.document.querySelectorAll("a");
var link = [];
for (let i of node) if(i.href.length < 30) link.push(i.href);
window.console.log(link);


Какое условие?

iMacros » Не работает конструкция filter (js) » 10-08-2018 06:30:24

Scorp1978 пишет:

Вот так ругается на строку
ReferenceError: array is not defined, line 29 (Error code: -991)

"Array" c заглавной буквы

скрытый текст

Выделить код

Код:

var node = window.document.querySelectorAll("a");

var links = Array.from(node, x => x.href);

window.console.log(links);

var rez = links.filter(a => a.length < 30);

window.console.log(rez);


Прежде чем городить огород, почитайте описание метода

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

iMacros » Не работает конструкция filter (js) » 10-08-2018 00:48:27

querySelectorAll() – возвращает не массив, а массивоподобный объект

вместо Array.filter() используйте Array.from()

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 22-07-2018 22:41:34

SH0N пишет:

я не понял как достать селектор кнопки

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

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 17-07-2018 14:28:41

Compunella пишет:

Так строчка может растянуться на киломерт.

Конкатенация в помощь

скрытый текст

Выделить код

Код:

iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT\n'+
            'TAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT\n'+
            'TAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT\n'+
            'SAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv');


Или использовать гравис
скрытый текст

Выделить код

Код:

iimPlayCode(`
    TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT
    TAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT
    TAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT
    SAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv
`);


Да, ещё обратным слешем можно разбивать строковый литерал

[spoiler]

Выделить код

Код:

iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT\n\
             TAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT\n\
             TAG POS=19 TYPE=DD ATTR=TXT:Группа:* EXTRACT=TXT\n\
             SAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 17-07-2018 12:20:58

OMG, понеслась клоунада со сменой пола и размножением клонов. Если б ты с таким же рвением FAQ по макросу читал. ;)

Compunella пишет:

Я так поняла, что форумчанин Squatter умышленно написал так код js, чтоб он не сохранял нужный текст.

Да, совершенно верно. Умышленно, чтобы кое-кто включил наконец соображалку и допетрил подогнать чистый пример под свои нужды. Но этого, увы, не произошло. Видимо злые чары мешают сделать это третий день подряд. :D

Уже два раза чёрным по белому написали, смени экстракты с колами на свои директивы, извлекающие текст со страницы и засунь их в один iimPlayCode(). В конечном итоге, готовый пример посмотреть не судьба? https://forum.mozilla-russia.org/viewto … 35#p759535


Это что, так трудно?
[spoiler][code]//При условии что команды извлекающие контент составлены правильно
iimPlayCode('TAG POS=19 TYPE=STRONG ATTR=TXT:Участник EXTRACT=TXT\nTAG POS=19 TYPE=STRONG ATTR=TXT:Members EXTRACT=TXT\nTAG POS=19 TYPE=DD ATTR=TXT:Г

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 16-07-2018 14:03:21

Герман пишет:

Потому и облажались вы, когда вызвались помочь хорошему человеку (мне)

Продолжайте уныло троллить и сотрясать воздух демонстрируя своё задетое самолюбием, если до сиих пор не сообразили засунуть свои команды извлекающие контент в один iimPlayCode(), на что вам уже указали.
Позабавьте меня ещё припадками неблагодарного критиканства, не забывая при этом параллельно называть себя хорошим человеком. :)

Герман пишет:

А где сохранение текста?

На скриншоте, который вы выложили. На нём сохранённый по колонкам текст, который перед этим извлекли через ADD !EXTRACT.
И вы мне ещё тут что-то про зрение будете говорить, когда сами в упор не видите что заскринили?

P.S. Не умеете корректно формулировать вопрос и понимать что вам подсказывают – не жалуйтесь на плохую помощь.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 16-07-2018 13:33:05

Герман нерабочий и бездарный тут пока только ваш код, т.к. вы не знаете элементарного как iim код переложить в JS
Прежде чем глупо дерзить и бестолковиться, читайте что сами писали

Герман пишет:

У меня не получается решить такую задачку: как написать код, который сохраняет текст в файл с расширением csv в разные столбцы? Например в столбец A, B, C

Слов "c сайта" в ваших первых двух постах нет. Как сформулировали, так вам и ответил. Поэтому не вам заикаться о "туфте", коль сами не помните, что спрашивали.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 16-07-2018 12:45:23

Герман пишет:

И что этот ваш код сохраняет?

Сохраняет по колонкам, как и было задумано. Или вы думали вам тут всё расскажут, разжуют и ещё и сценарий за вас напишут? Тогда вам в отдел заказов платных скриптов.
А с тем, что вам нужно извлечь с сайта – справляйтесь сами.
Вопрос был как сохранять по колонкам? Ответ дан два раза с рабочими примерами для iim и JS.
Что ещё надо? Cпарсить за вас всё нужное с сайта? Или начнёте уже самостоятельно знакомиться с темой, коль уж бравурно заявили, что учитесь "программированию на java-скрипт языке"? ;)

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 16-07-2018 11:49:16

Герман
Разницу не видите, что я написал и что вы выложили? Естественно у вас ничего не сохраняется, т.к. экстракты и сохранение в разных вызовах iimPlayCode()
Читайте вики по макросу

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


скрытый текст

Выделить код

Код:

iimPlayCode('ADD !EXTRACT col-A\nADD !EXTRACT col-B\nADD !EXTRACT col-C\nSAVEAS TYPE=EXTRACT FOLDER=C:\\ FILE=1.csv');


Герман пишет:

Ну вы раз взялись подсказать, помочь человеку, дак хоть напишите что, да как.

Уже написал. А разжевывать до молекул такую элементарщину вам тут никто не обязан. Есть wiki.imacros  и есть поиск по форуму, где ответ на этот вопрос уже неоднократно дан. Мало того вам даже лень пример посмотреть на предыдущей странице :facepalm:

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 15-07-2018 18:23:24

Пример на предыдущей странице

скрытый текст

Выделить код

Код:

ADD !EXTRACT A
ADD !EXTRACT B
ADD !EXTRACT C
//И только потом сохранение
SAVEAS TYPE=EXTRACT FOLDER=D:\ FILE=1.txt
SET !EXTRACT NULL


Так экстракты в порядке их вызова лягут по колонкам.


З.Ы. Это не JS, а лишь обёртка на него и некоторые браузерные методы.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 10-07-2018 02:50:31

kariorambo пишет:

В общем так я и не понял, для чего надо убирать точки

Они никуда не убираются, а лишь строго воспринимаются движком регулярок как точки при экранировании. В противном случае точка означает поиск любого одиночного символа, кроме символа новой строки. И в следующем примере IP будет найден там, где вместо точек в строке стоят другие символы

скрытый текст

Выделить код

Код:

var str = "169x42z102y87";

if (str.match(/169.42.102.87/)) {
    alert("Нашел IP в строке");
} else {
    alert("Не нашел IP в строке");
}


Хотя это не критично в вашем простом случае, но забывать об экранировании спецсимволов не стоит. Изучайте регулярные выражения
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 06-07-2018 03:07:26

При условии, что в файле только список адресов в одну колонку, и этот список сохранён чисто (без случайных пробелов и прочего мусора)

скрытый текст

Выделить код

Код:

//ip который ищем
var ip = "185.220.102.4";
//Массив строк из файла
var arrIp = imns.FIO.readTextFile(imns.FIO.openNode("C:\\Users\\ip.txt")).match(/^.+/mg);
//Смотрим в массиве наличие ip
if (arrIp.indexOf(ip) !== -1) {
    alert("Нашел IP в файле");
} else {
    alert("Не нашел IP в файле");
}


Значение переменной arrIp естественно должно обновляться после сохранения в файл новых адресов.


Еслли в файле не одна колонка, то придётся дополнительно прогонять строки в цикле примерно так

[spoiler]

Выделить код

Код:

//ip который ищем
var ip = "185.220.102.4";
//Массив строк из файла
var arrIp = imns.FIO.readTextFile(imns.FIO.openNode("C:\\Users\\ip.txt")).match(/^.+/mg);

for (i=0;i<arrIp.length;i++) {
    //Смотрим в массиве наличие ip
    if (arrIp[i].match(/[^"",;]+/g)[0] == ip) {
        alert("Нашел IP в файле");
    } else 

iMacros » [РЕШЕНО] Цикл чтения построчно из тхт файла. » 13-06-2018 15:40:19

Как вариант

скрытый текст

Выделить код

Код:

var locPath = "C:\\test.txt";//Полный путь до файла

/********************************* описание функции *********************************/

var readFile = path => imns.FIO.readTextFile(imns.FIO.openNode(path)).match(/^.+/mg);

/********************************** вызов функции ***********************************/

var arr = readFile(locPath);//Вернёт массив всех не пустых строк из файла
window.console.log(arr);

var str_1 = readFile(locPath)[0];//Вернёт первую строку из файла
window.console.log(str_1);

var str_2 = readFile(locPath)[1];//Вернёт вторую строку из файла
window.console.log(str_2);

var str_3 = readFile(locPath)[2];//Вернёт третью строку из файла
window.console.log(str_3);

//и т.д.


Правда для себя так и не определился, хранить в переменной весь текст/массив или каждый раз обращаться к файлу. Делаю по-разному в зависимости от размера файла.

iMacros » [РЕШЕНО] Работа с поисковиком google.com » 07-06-2018 09:58:11

И в чём сложность? Два параметра в ссылке

скрытый текст

Выделить код

Код:

https://www.google.com/search?q=тест&start=0

//ключевое слово для поиска

q=тест

//Шаг 10

start=0//1 стр.
start=10//2 стр.
start=20//3 стр.

iMacros » [РЕШЕНО] Подскажите по циклу » 23-04-2018 13:48:50

Как вариант вложенными циклами.

1. Можно собрать имена файлов в массив и перебирать этот массив циклом подставляя в локальный путь полученное имя файла

скрытый текст

Выделить код

Код:

var arrFileName = ['1.txt','2.txt','3.txt','4.txt','5.txt','6.txt'];

for (var a=0;a<arrFileName.length;a++) {
    var send = imns.FIO.readTextFile(imns.FIO.openNode(path+'\\'+arrFileName[a])).match(/^.+/mg);
    for (var i=0;i<send.length;i++) {
        var tx = window.document.querySelector('textarea.replyarea');
        if(tx === null) { continue; }
        tx.value = send[i];
    }
}


2. Можно делать инкремент цифры подставленной в имя файла, заведомо назначив файлам имена с цифрами
[spoiler]

Выделить код

Код:

var sumFile = 6;//Количество файлов

for (var a=1;a<=sumFile;a++) {
    var send = imns.FIO.readTextFile(imns.FIO.openNode(path+'\\'+a+'.txt')).match(/^.+/mg);//1.txt на первой итерации, 2.txt на второй и т.д.
    for (var i=0;i<send.length;i++) {
        var tx = window.document.querySelector('textarea.rep

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]