Работа с файлами - чтение из файла на iMacros. - урок 9

Здесь рассмотрел, как подключать файл с данными на iMacros, как быстро переносить их в переменные яваскрипт для дальнейшего использования во всем скрипте. Код не сложный и конструкция его почти всегда одинакова и не нужно ничего придумывать лишнего. Для чтения файла и забора данных из него этого достаточно и удобно. Подробнее будет видео.



Код из видеоролика:

var d1,d2,d3,d4;
var logpas;

for (i=1;i<=4000;i++) {
logpas = "SET !DATASOURCE_DELIMITER ;" + "\n";
logpas += "CMDLINE !DATASOURCE bazareg.csv" + "\n";
logpas += "SET !DATASOURCE_COLUMNS 13" + "\n";
logpas += "SET !LOOP " + i + "\n";
logpas += "ADD !EXTRACT {{!COL2}}" + "\n";
logpas += "ADD !EXTRACT {{!COL3}}" + "\n";
logpas += "ADD !EXTRACT {{!COL4}}" + "\n";
logpas += "ADD !EXTRACT {{!COL5}}" + "\n";
iimPlayCode(logpas);

d1=iimGetLastExtract(1);
d2=iimGetLastExtract(2);
d3=iimGetLastExtract(3);
d4=iimGetLastExtract(4);

alert(d1);
}

Простая конструкция и большие возможности.

iMacros 8 - Запись в файл

В этом примере показано, как делать запись в файл данных работы скрипта. Он может пригодиться при написании многих скриптов, в частности - для регистраторов и сборщиков данных.
Код выполняет только запись в файл. Если файла не существует, то он создастся сам. Если существует - то он будет дополняться, но не перезаписываться. Для перезаписи нужно придумывать обходные пути, например, с использованием процедуры удаления файла и создания нового, или же с ява скриптом.
Код примера:

var strlog="тестовое<SP>слово";
var logfile;

logfile = 'SET !EXTRACT NULL' + '\n';
logfile += 'SET !EXTRACT '+ strlog + '\n';
logfile += 'SAVEAS TYPE=EXTRACT FOLDER=* FILE=LOG.txt' + '\n';
iimPlayCode(logfile);

Этот код создаст файл с именем LOG.txt в папке по умолчанию  ..\iMacros\Downloads
и запишет туда слова "тестовое слово" через пробел с ковычками.

Подключаем старые жесткие диски IDE к SATA, - адаптер из Китая

Вторая посылка из Китая, которую я закал примерно 45-50 дней назад (то есть столько дней шла посылка) сегодня пришла и я уже протестил комплект. Содержимое посылки - адаптер 2в1 Sata to IDE и обратно IDE to Sata, SATA-кабель и молекс-проводок для подключения к плате.
Весь набор завернут в пакет, внутри которого еще пупырчатый пакет, сильно склеенный с внешним пакетом - и внутри этой композиции пакетик с содержимым, который на фото ниже:
По фото все понятно. Стоимость: - за это заплатил около 120р. Зачем мне это нужно, опишу ниже.
Куплен примерно год назад системник, его я уже показывал с процессором А4 4000, на котором я запускал скрипты и по 10 профилей мозилл. Оперативки там 6 гигов и на работу 10 профилей не хватает и приходится включать файл подкачки. Если не включать файл подкачки - то через некоторое время, может через полчаса, может через час - мозиллы автоматически закрываются из за недостатка памяти, да еще к тому же наблюдается "подвисания" системы. С файлом подкачки куда лучше - и не закрываются профили и подвисаний меньше. Но у файла подкачки есть один не хороший минус - постоянное чтение-запись данных уменьшают срок работы жесткого диска, а так же он греется больше. Конечно можно было докупить 4-8 гигов оперативки для решения этой проблемы, но тратить на это до 3тыс рублей не хотелось. А к тому же у меня есть пара дисков от старого компа на 40 гигов, но они IDE-шные. Поэтому то мне и понадобился этот адаптер, так как данные жесткие диски на 40гигов не жалко и можно гонять их до полного краха. Родному диску от этого старого компа порядка более 10 лет, как и самому компьютеру. Может расскажу еще про него в обзоре или в видеоролике.
Подключил этот адаптер к компу - поставил винду. По времени установка винды на такой жесткий заняла много больше времени чем на прямой сата - да, там скоростя поменьше будут.
А жесткий на 500г от нового системника еще пригодится, возможно под новое железо, - пока его отключил. Теперь можно гонять 10 мозил и не бояться за жесткий диск: - если сломается, то есть второй такой же, да и не жаль его.
Жесткий положил прямо на дно системника. Для подключения понадобилось 2 провода Молекс - для питания от блока питания - один в платку - второй непосредственно в сам жесткий диск.




freebitco.in x6 скрипт - снова этот лохотрон

В общем увидел на одном сайте алгоритм для мульти-игры на фрибиткоине, суть которого в следующем (копирую текст с того сайта):

механизм заключается в том
что надо сделать ставку начиная с x6
далее начинаем с минимальной ставкой 0.00000001BTC
при проигрыше ставим уже 0.00000002
при проигрыше 0.00000003 ( считаем ставка вместе с этой 0.00000001+0.00000002+0.00000003=0.00000006
выигрыш=0.00000003*6=0.00000018 итого мы выиграли 0.00000018-0.00000006=0.00000012
при проигрыше 0.00000004 выигрыш=0.00000024-0.00000010=0.00000014
при проигрыше 0.00000005 выигрыш=0.00000030-0.00000015=0.00000015
при проигрыше 0.00000006 выигрыш=0.00000036-0.00000021=0.00000015
при проигрыше 0.00000007 выигрыш=0.00000042-0.00000028=0.00000014
при проигрыше 0.00000008 выигрыш=0.00000048-0.00000036=0.00000012
при проигрыше 0.00000009 выигрыш=0.00000056-0.00000045=0.00000011
при проигрыше 0.000000010 выигрыш=0.00000060-0.00000055=0.00000005

после этого повышает по этой схеме
при проигрыше 0.00000010
при проигрыше 0.00000020 выигрыш=0.000000120-0.00000075=0.00000045
при проигрыше 0.00000030 выигрыш=0.000000180-0.00000105=0.00000065
при проигрыше 0.00000040 выигрыш=0.000000240-0.00000145=0.00000085
при проигрыше 0.00000050 выигрыш=0.000000300-0.00000195=0.00000105
при проигрыше 0.00000060 выигрыш=0.000000360-0.00000255=0.00000105
-------------------
-------------------
-------------------
после этого повышает по этой схеме
при проигрыше 0.00000100
при проигрыше 0.00000200 выигрыш=0.00000795-0.00001200=0.00000405
при выигрыше начинает с минимальной ставки не меняя x6

Задумка не плохая и для интереса набрал 4000 сатоши на мулти-игре как то получилось и написал скрипт, который работает по этой схеме, записав ставки данной игры тупо в массив. Если идет проигрыш, то берется следующая ставка из массива. Ставки прописал до '0.00010000' - это последняя ставка в массиве. То есть кому нужно больше - тот дальше через запятую дописывает столько ставок сколько нужно. Иначе скрипт когда начнет искать следующую ставка, а ее нет, выдаст ошибку и скорее всего остановится. Выкладываю скрипт и отпишу свое мнение по этому алгоритму и свои результаты. Скрипт написан не совсем грамотно и на самом деле можно сократить в разы и без всякого массива, но на скорую руку пойдет, а главное полностью рабочий. Дата 09.02.2017.

var stavka1='0.00000001';//начальная ставка
var mass = ['0.00000001','0.00000002','0.00000003','0.00000004','0.00000005','0.00000006','0.00000007','0.00000008','0.00000009','0.00000010',
'0.00000020','0.00000030','0.00000040','0.00000050','0.00000060','0.00000070','0.00000080','0.00000090','0.00000100',
'0.00000200','0.00000300','0.00000400','0.00000500','0.00000600','0.00000700','0.00000800','0.00000900','0.00001000',
'0.00002000','0.00003000','0.00004000','0.00005000','0.00006000','0.00007000','0.00008000','0.00009000','0.00010000'];

//-----------------------------------------------------------------
var bh="";
var macro1,i,extract;

while (true) {window.parent.scrollTo(0,0);
iimPlayCode("WAIT SECONDS=1");
iimPlayCode('TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:stake CONTENT='+stavka1);

rdm2 = Math.floor(Math.random() * 2) + 1;
if (rdm2==1) bh="TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>HI"; else bh="TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>LO";

macro1 = bh + "\n";//жмем кнопку BET H илиI LO
macro1 += "WAIT SECONDS=5" + "\n";
macro1 += "SET !EXTRACT NULL" + "\n";
macro1 += "TAG POS=2 TYPE=DIV ATTR=TXT:You<SP>BET<SP>*<SP>so<SP>you<SP>* EXTRACT=TXT" + "\n";

i=0;
while (true){
iimPlayCode("WAIT SECONDS=1");
iimPlayCode('TAG POS=1 TYPE=INPUT:TEXT ATTR=NAME:stake CONTENT='+mass[i]);
iimPlayCode(macro1);
extract = iimGetLastExtract().charAt(18);iimDisplay(extract);
if(extract == "l") i++;
if(extract == "w") break;
rdm2 = Math.floor(Math.random() * 2) + 1;
if (rdm2==1) bh="TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>HI"; else bh="TAG POS=1 TYPE=BUTTON ATTR=TXT:BET<SP>LO";

macro1 = bh + "\n";//жмем кнопку BET H илиI LO
macro1 += "WAIT SECONDS=5" + "\n";
macro1 += "SET !EXTRACT NULL" + "\n";
macro1 += "TAG POS=2 TYPE=DIV ATTR=TXT:You<SP>BET<SP>*<SP>so<SP>you<SP>* EXTRACT=TXT" + "\n";
}
}


Итог: 1 раз выиграл 35 сатош, и второй раз 50 сатош, а дальше - слив, то есть на хватило баланса. Ставка дошла до 800 сатош и дальше не хватило. Вполне вероятно что нужно определенный баланс хотя бы 100 тыс сатош. Но мой опыт подсказывает, что слив гарантирован 100%. Тут даже при проценте выигрыша в 50% - выпадало по 22 проигрыша подряд -Что тут говорить про 15% ??? - Такой процент получается, когда вы поставить множитель на 6. Слив гарантирован! Решайте сами.


Чтение из файла и запись в файл на iMacros

Добавляю в копилку к себе в блог строчки кода в виде функции яваскрипт. Очень полезный код, о котором я недавно узнал и, думаю, что он очень пригодится в будущем. Сам пользовался стандартными средствами из аймакрос с работой с файлом как с базой, а вот запись в файл полноценной я не нашел как делать. Теперь же все это сделать можно будет гораздо проще и быстрее. То есть чтение файла в аймакросе осуществлялась построчно, а в новой функции это делается моментально за 1 проход. Там же используется метод разбивки на массивы split. Этот метод мне знаком, так как уже натыкался на него и тестировал. Теперь же можно полноценно будет воспользоваться файлами и методом split.
Так же посоветую сайт для более подробного обучения аймакрос как для начинающего, так и сейчас ведется курс для продвинутого пользователя, то есть продвинутый курс аймакрос. К сожалению, когда мне нужна была информация по изучению аймакроса - этого сайта не было и мне приходило собирать все с разных источников. И когда я обнаружил этот сайт, мне стало жаль, что мне он уже не так был нужен как раньше. Сейчас же автор рассказывает о новых функциях, о которых я не знаю и не использую и, по его словам, будут еще много полезных функций - так как, например, запуск exe файлов с аймакросом - то есть даже не как я делал с помощью MacroRecorder'ом, а непосредственно самим аймакросом. А так как мне приходилось выкручиваться другими путями, тут мне приходилось подключать смекалку и логику - и получалось! Сам жду кодов для запуска екзешников. Источник и ссылку на код оставлю в конце статьи - материалы сделаны качественно - не как у меня )) ну да ладно, это моя копилка и инфа в основном для себя и для других.
Код чтения и записи\перезаписи файлов.

function readExt(filename){return imns.FIO.readTextFile(imns.FIO.openNode(filename))}//ЧТЕНИЕ ФАЙЛА
function writeExt(filename, cont){imns.FIO.writeTextFile(imns.FIO.openNode(filename),cont)}//ПЕРЕЗАПИСЬ ФАЙЛА
function appendExt(filename,cont){imns.FIO.appendTextFile(imns.FIO.openNode(filename),cont)}//ДОБАВЛЕНИЕ В КОНЕЦ


В выше указанном коде указаны 3 функции. Их можно объявлять в самом начале любого скрипта, где вы планируете использовать файлы. А ниже по абазацам указаны примеры - их нужно тестировать по-отдельности.

 var test = readExt('D:\\text.txt')// поместим в переменную test данные из файла text.txt
 var arrData = test.split('\n') // создаем массив (разделяем по переносу строк)
 for(i=0;i<arrData.length;i++){ // создаем цикл по количеству строк в массиве
 alert('логин: '+ arrData[i].split(':')[0]+' пароль: '+ arrData[i].split(':')[1]+' эмейл: ' +arrData[i].split(':')[2])// выведем на дисплейчик переменную
 }


 for(cont=1;cont<=3;cont++){ // создаем цикл
 var cont1=cont+'\n'// добавляем перенос строки, чтоб не писало все в одну строку
 appendExt('C:\\text.txt',cont1)// записываем переменную цикла в файл
 alert(readExt('C:\\text.txt'))//выводим переменную на экран


Источник на сайт - он же и форум: http://sistem.in.ua/forum_sistema_imacros/?view=thread&id=22