Правила оформления сообщений в данном топике:
Адрес сайта и страницы, на которой возникла проблема, размещается в тегах [spoiler][noindex]http://адрес_сайта/название_страницы[/noindex][/spoiler]
Для размещения кода, используйте тег "Code" внутри тега "Spoiler" - [spoiler][code]ваш код[/code][/spoiler]
или выложите на сайт «Pastebin».
При размещении объемных материалов, используйте тег "Spoiler" - [spoiler]ваш текст[/spoiler]
или выложите на сайт «Pastebin».
Размещать изображения в открытом виде. Для размещения скриншотов и других изображений, используйте тег "Spoiler" - [spoiler][img]http://ссылка_на_изображение[/img][/spoiler]
.
«Можно ответить на любой вопрос, если вопрос задан правильно.»
Платон
«Не каждый вопрос заслуживает ответа.»
Сайрус
Отсутствует
Вопрос по циклам в js.
//два цикла повтора всего кода for(b=1; b<2; b++){ // 10 циклов поиска первого запроса for(a=1; a<10; a++){ iimSet("a", a); if(iimPlay("CODE:SET !TIMEOUT_STEP 0\n TAB T=1\n TAG POS={{a}} TYPE=A ATTR=TXT:ИскомыйТекст1*")<=0){ iimPlayCode('SET !TIMEOUT_STEP 0'); break; }else{ iimPlayCode('SET !TIMEOUT_STEP 0\n TAG POS=1 TYPE=A ATTR=TXT:*') } } // 10 циклов поиска второго запроса for(a=1; a<10; a++){ iimSet("a", a); if(iimPlay("CODE:SET !TIMEOUT_STEP 0\n TAB T=1\n TAG POS={{a}} TYPE=A ATTR=TXT:ИскомыйТекст2*")<=0){ iimPlayCode('SET !TIMEOUT_STEP 0');break; }else{ iimPlayCode('SET !TIMEOUT_STEP 0\n TAG POS=1 TYPE=A ATTR=TXT:*') } } iimPlayCode('SET !TIMEOUT_STEP 0\n TAG POS=1 TYPE=A ATTR=TXT:2'); }
После всего выполненного строка iimPlayCode('SET !TIMEOUT_STEP 0\n TAG POS=1 TYPE=A ATTR=TXT:*') открывает на вторую страницу сайта и там повторяются все действия циклом b<2.
Сами по себе конструкции if... else работают, как задумано.
Проблема вот в чём: после срабатывания break в цикле второго запроса прерывается не только второй цикл с десятью повторами a<10, но и общий "верхний" цикл b<2, нет перехода к выполнению строки iimPlayCode('SET !TIMEOUT_STEP 0\n TAG POS=1 TYPE=A ATTR=TXT:2');
Что я неправильно понимаю? Команда break работает только внутри "своего" цикла, или прерывает вообще все циклы выше? Тогда почему после срабатывание первого break у меня работает поиск второго запроса?
Отсутствует
udalov
Зачем делать два идентичных цикла, отличающихся только искомым текстом? А текстов будет не 2 а 100, вы 100 циклов влепите?
скрытый текст
это, простите, что за бред?!
Не за компом, на вскидку, не проверяя, сказать из-за чего у вас прерывается верхний цикл, не могу, но ни кто не отменял label'ы для указания, какой из циклов нужно прервать
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Зачем делать два идентичных цикла, отличающихся только искомым текстом?
Затем, что я пока не освоил поиск сразу двух условий в одной команде, через && или ||. Знаю, что эта возможность есть, примеры сохранены в файл. Освою по отдельности, буду осваивать два в одном.
это, простите, что за бред?!
А это я не знал, можно ли в конструкции, взятой мной в качестве примера:
Отсутствует
Затем, что я пока не освоил поиск сразу двух условий
при чем тут выполнение сразу 2 условий, вы код дублируете, зачем?
нужно выполнить цикл из 10 операций дважды, так и сделайте цикл на 10 операций внутри цикла с перебором поисковых фраз
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Подскажите, почему при отправки капчи на сервер 2captcha, возникает данная ошибка
"ERROR_TOO_BIG_CAPTCHA_FILESIZE"
И как сделать, что бы при сохранение капчи, картинка весила меньше?
Отсутствует
kani339
В теме капчь в первом посте, есть варианты уменьшения размера картинки/капчи.
Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.
Отсутствует
Добрался сегодня до того скрипта, что обсуждали на предыдущей странице *.js получился вот такой:
var InputPath = 'D:\\\\Program files\\\\imacros\\\\data\\\\LikeList.csv' var macro; macro="CODE:SET !DATASOURCE {{InputPath}}\n" macro+="SET !DATASOURCE_LINE {{Line}}\nURL GOTO={{!COL1}}\n" macro+="SET !ERRORIGNORE YES\nTAG POS=1 TYPE=button ATTR=class:*PageLikeButton*\n" for(Line=1;Line>=0;Line++){ iimSet("Line",Line); iimSet("InputPath",InputPath); var Indicator; Indicator=iimPlay(macro); iimSet("Indicator",Indicator); if(Indicator<0) break; } //If you need to close all tabs and browser window in the end, uncomment the next line //iimPlay("CODE:TAB CLOSEALLOTHERS\nTAB CLOSE");
'D:\\\\Program files\\\\imacros\\\\data\\\\UnLikeList.csv'
- Получается, что скрипт всегда завершается с ошибкой:
"RuntimeError: Invalid DATASOURCE_LINE value: *, line 4 (Error code: -951)"
, можно ли сделать, чтобы она не отображалась внизу на панели iMacros?
- Всё-таки выход через break выглядит коряво, можно ли как-то эту проверку запихнуть в условие цикла? Вариант for(Line=1;iimPlay(macro)==1;Line++) не сработал (видимо из-за обращения к переменным InputPath и Line)
Спасибо!
Отсутствует
Можно ли как-то избежать четырехкратных слешей
Зачем вам столько? или вы забор строите?) достаточно 2
можно ли сделать, чтобы она не отображалась внизу на панели iMacros?
можно, iimDisplay('') в конце кода, возвращающего ошибку
можно ли как-то эту проверку запихнуть в условие цикла?
можно, вы его и написали, только не полностью
Добавлено 26-05-2016 00:13:32
при использовании iimSet() - iimSet() должен всегда идти перед iimPlay()/iimPlayCode(),
вызовом
либо, используйте конкатенацию строк, вместо iimSet(), непосредственно в условии
Отредактировано InfSub (26-05-2016 00:13:32)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Зачем вам столько? или вы забор строите?) достаточно 2
Точно, перемудрил, моя вина)
можно, iimDisplay('') в конце кода, возвращающего ошибку
Супер, спасибо. Теперь вместо кода ошибки у меня счётчик обработанных URL.
при использовании iimSet() - iimSet() должен всегда идти перед iimPlay()/iimPlayCode(), перед каждым вызовом
либо, используйте конкатенацию строк, вместо iimSet(), непосредственно в условии
Не могу понять как это реализовать, я же в конструкцию цикла for не могу добавлять iimset(). А если перед циклом, то переменная Line объявляется в цикле, так что бесполезно её передавать через iimset(). Остаётся делать конкатенацию, но это получается всё в одну строку записывается, редактировать потом неудобно(
Отсутствует
я же в конструкцию цикла for не могу добавлять iimset()
кто вам такое сказал?
for( Line=1; iimSet("InputPath",InputPath), iimSet("Line",Line), iimPlay(macro)==1; Line++ ){...}
но это получается всё в одну строку записывается, редактировать потом неудобно(
не обязательно, см. пример выше
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
кто вам такое сказал?
Круто, спасибо. Я пытался через ";" не знал, что можно запятую в javascript использовать в этом случае, естественно ошибка получалась. Надо подучить его синтаксис.
Отсутствует
Объясните мне, тупому, почему этот код (найденый тут https://forum.mozilla-russia.org/viewto … 35#p670735) работает
SET !EXTRACT "Текст1 » Текст2 » Иванов В.А. " SET !VAR1 EVAL("\"{{!EXTRACT}}\".replace(/Текст1 » Текст2 » /,\"\")") prompt {{!VAR1}}
А вот этот, который делает я адаптировал для Экстракта со страницы, не работает?
TAG POS=1 TYPE=TD ATTR=TXT:Текст1 » Текст2 » * EXTRACT=TXT SET !VAR1 EVAL("\"{{!EXTRACT}}\".replace(/Текст1 » Текст2 » /,\"\")") PROMPT {{!VAR1}}
Вообще, цель: экстрактся фраза "Текст1 » Текст2 » Иванов В.А. " и из неё удаляется всё до четвёртого пробела, который идёт после второго »
И как сделать, чтобы работал второй код?
Отсутствует
udalov
Кавычки где? Или по вашему: » Текст2 » * - это команда?
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
который идёт после второго »
iimPlayCode('TAG POS=1 TYPE=TD ATTR=TXT:"Текст1*Текст2*" EXTRACT=TXT'); nam=iimGetExtract().split('»')[2]; alert(nam);
Отредактировано PRESIDENT (05-06-2016 22:08:54)
Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.
Отсутствует
Ребята как можно узнать значение настройки из about:config? мне скриптом надо вытащить значение настройки...
Сам отвечу на вопрос)) Все оказалось достаточно просто, для получение и редактирование используются разные атрибуты, get и set.
Так при редактирование мы передаем имя и значение настройки
var prefs = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch); path = prefs.setCharPref("extensions.imacros.defdatapath", "C:");
var prefs = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch); path = prefs.getCharPref("extensions.imacros.defdatapath");
function checkPath () { var prefs = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch); path = prefs.getCharPref("extensions.imacros.defdatapath"); var utf8Converter = Components.classes["@mozilla.org/intl/utf8converterservice;1"]. getService(Components.interfaces.nsIUTF8ConverterService); var path = utf8Converter.convertURISpecToUTF8 (path, "UTF-8"); return path; }; alert(checkPath())
Отредактировано Hamzat (27-05-2016 13:47:52)
iMacros скрипты на заказ!
Отсутствует
Сам отвечу на вопрос))
да, как бы, уже год назад на этот вопрос отвечали, поиском просто пользоваться надо...
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
InfSub
да, как бы, уже год назад на этот вопрос
Странно, вроде как пробовал. Хотя было интересно узнать все самому...
iMacros скрипты на заказ!
Отсутствует
как отключить ADBLOCK с помощью Imacros/JS
var Cc=Components.classes, Ci=Components.interfaces; var prf=Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); prf.setBoolPref("extensions.adblockplus.enabled",0);
чтобы сохранялось всегда в первую строку
Если старые данные не нужны, то сначала удали старый файл, потом просто создай новый, он сам создастся когда сохранять будешь.
Если нужно к старым добавить новые, и всё в одну строку, то сначала извлеки старые, потом в туже переменную добавь новые, и уже это сложенное сохраняй. Так же вначале удалив старый файл.
Отредактировано PRESIDENT (27-05-2016 16:40:52)
Backend developer
PHP, JAVA, C#, Python
В личку только с серьёзными предложениями по заказу скриптов/программ.
Отсутствует
Запутался в TYPE= и ATTR=CLASS: , как взять в Екстракт фразу "Город Уфа"?
<tr id="ctl00_cphBody_trRegion" class="row"> <td nowrap="nowrap"> Регион </td> <td> <b> Город Уфа </b> </td> </tr>
TAG POS=1 TYPE=TR ATTR=ID:ctl00_cphBody_trRegion&&CLASS:row&&NOWRAP:nowrap&&TXT: EXTRACT=TXT
Отсутствует
kani339 пишеткак отключить ADBLOCK с помощью Imacros/JS
скрытый текстВыделить кодКод:
var Cc=Components.classes, Ci=Components.interfaces; var prf=Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); prf.setBoolPref("extensions.adblockplus.enabled",0);
где можно документацию по данному коду найти?
Отсутствует
kani339
Отредактировано InfSub (27-05-2016 17:18:35)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
udalov если нужно отталкиваться от параметра id тега tr (id="ctl00_cphBody_trRegion"), то обрезайте "лишние" данные с помощью js
.
Спасибо... Я так и пытался, но у меня в голове вместо правильной команды EXTRACT=HTM намертво засела EXTRACT=HREF , которой я и пытался извлекать данные из кода странички... Только сейчас сообразил, в чём у меня была проблема :-(
Отсутствует
udalov
Я бы сделал так:
Отсутствует