Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
log = function (text, color, define){ var id, time, thread, logHtml, textLog; define = (typeof define == 'string') ? define.split(/[\s,.|:;]+/g) : define; if(typeof define === 'object' && define !== null){ if(Array.isArray(define)){ id = define.indexOf('id') > -1; time = define.indexOf('time') > -1; thread = define.indexOf('thread') > -1; } else{ id = define.id == true; time = define.time == true; thread = define.thread == true; } } else id = time = thread = true; id = id ? '<a href="action://action' + ScriptWorker.GetCurrentAction() + '" style="color:gray;">[' + ScriptWorker.GetCurrentAction() + ']</a>' : ''; time = time ? ' ' + getTime() : ''; thread = thread ? ' Поток №' + thread_number() : ''; logHtml = (id || time || thread) ? id + '<span style="color: white">' + time + thread + ' : </span>' : ''; logHtml += '<span style="color:' + (color ? color : 'white') + '">' + text + '</span>'; textLog = '[' + ScriptWorker.GetCurrentAction() + ']' + time + thread + ' : ' + text function getTime(){ var checkTime = function(i){ return (i < 10) ? "0" + i : i; }; var checkMilliSeconds = function(ms){ if (ms < 10) { return "00" + ms; } else if (ms < 100) { return "0" + ms; } else { return ms; } }; var d = new Date(); var hh = checkTime(d.getHours()); var mm = checkTime(d.getMinutes()); var ss = checkTime(d.getSeconds()); var ms = checkMilliSeconds(d.getMilliseconds()); return '[' + hh + ':' + mm + ':' + ss + '.' + ms + ']'; }; Logger.WriteHtml(logHtml, textLog); }Не подставляется переменная в регулярку
-
@fox есть конфигурационный файл. В нём есть код, и есть комменты. У меня любая строка кода начинается с префикса, а любой коммент с решётки (#). Данный цикл работает в два этапа: первая регулярка отделяет код от комментов по преффиксу ( можно делать наоборот, исключать комменты по #, но думаю, удобнее так, в комменты тогда можно вообще что угодно вставлять безо всяких спецсимволов, главное, чтобы там преффикса не было ). А вторая регулярка уже берёт готовый код без преффикса. Данный цикл берёт из массива данных считанного построчно конфига все строки с кодом и формирует из них отдельный массив, чтобы работало быстрее. Далее по такому же принципу я нахожу по преффиксу нужный мне код в этом массиве и присваиваю нужным переменным. В итоге массив данных хранится в файле и считывается очень удобным образом. Удобнее базы данных, так как конфиги можно править в блокноте.
-
@fox пример строчек конфига:
#Настройки прокси:
VAR_AR_ACCOUNT_PROXY: http,185.232.168.40:9172,aAz6A7,FoP1fZ
#Имя аккаунта:
VAR_AR_ACCOUNT_NAME: David Miller
#Логин аккаунта:
VAR_AR_ACCOUNT_LOGIN: miller.david2015@yandex.ru
#Пароль аккаунта
VAR_AR_ACCOUNT_PASSWORD: K72+r/Q8iljkhz0r6B
#Accept-Language аккаунта
VAR_AR_ACCOUNT_LANGUAGE: ru-RU,ru;q=0.6,en-US,en;q=0.6
#User-Agent аккаунта
VAR_AR_ACCOUNT_USERAGENT: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 YaBrowser/18.6.1.770 Yowser/2.5 Safari/537.36
И так далее... Ещё fibgerprint туда же запихнул и кучу логинов-паролей для разных сайтов, завязанных на этот профиль. -
@Pragmatik Прикольно, BAS работает по схожему принципу
:D
Я прибегаю к работе с файлами в отладочных версиях скрипта. Для быстрого теста необходимых узлов.
Но объявлять переменные в конфиге черевато, так как дальше по скрипту ты эти переменные используешь, возможны ошибки.
Хотя всё зависит от цели самого скрипта
-
@Pragmatik Или у тебя переменные уже объявлены, а значение из файла ищется по имени переменной?
-
@fox да в том-то и беда, что через eval невозможно объявить переменную чтобы она с нуля появилась в БАС. Я тупо считываю эти значения и через if подставляю нужной переменной нужное значение. Там же, в коде с if эти переменные впервые и появляются. Очень неудобно, если честно. Если бы был безопасный способ создать переменную через код, было бы круто, может ещё реализуют.
-
@pragmatik Храните свой конфиг в json в виде объекта и делов
-
@denis_krsk said in Не подставляется переменная в регулярку:
Храните свой конфиг в json в виде объекта и делов
Предлагаете преобразовать файл в json или же сам массив данных из файла для хранения в переменной?
Я о таком не задумывался потому, что у меня в конфиге fingerprint хранится, а он уже в формате json. Json в json наврятли можно пережать.
Впрочем, с такой идейкой можно и два файла сделать, один для конфигурации, второй для слепка браузера.
-
@pragmatik Если уж вы выбрали такой подход к хранению данных, то json самое правильное решение. JSON способ передачи объектов в виде строки. Потому вам некто не мешает создать сколько угодно сложный объект и хранить в нем все, в том числе и фингер принт.
например:var config={ name:'Ivan' commens:[ 'hi', 'way' ], finger:fingerprint } //Потом в json var json=JSON.stringify(config); //Затем его записываете в файл //А после чтения var json=JSON.parse(file); //А потом распарсиваете его свойства var name=json.name; var commens=json.commens; var finger=json.fingerprint;