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

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 22-11-2017 01:13:02

InfSub
я изначально написал, что в js слаб, да, написал код в iim, но как в js его реализовать знаний не хватает. Egorushka1974 отозвался, и перевел код в js, InfSub подправил его в рабочее состояние. Но код сработал с ошибками.  Egorushka1974 кинул мне ссылку на сайт по js. Там я и прочел о функциях if. Попробовал его прописать, js выдал ошибки. JS только на стадии моего изучения, и я обратился на форум с вопросом, в чем может быть проблема.karginaolga дала варианты, в чем может быть проблема, с вариантами решения. Она кидала варианты решения, я тестировал, и выдавал результат, параллельно читал и искал, как эти варианты можно адаптировать под мой код. Вот у нас и дискуссия образовалась. Возможно я и ошибаюсь, но форумы для того и создаются, что бы задавать вопросы если не знаешь, и получать ответы от знающих людей людей, если они хотят помочь тебе и поделиться. А вы InfSub за это накидали мне 1 зам + (1/3). Тогда пропишите в правилах, что в э

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

karginaolga
не чего не поменялось. после каждой "пусто", пропускается следующая группа после этого "пусто" и к предыдущим лайкам из группы +3 еще +3, и так по нарастающей.

21-11-2017 21:54:07
karginaolga
кажется я понял в чем дело. вот тут прописан цикл пробега по дому

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

Выделить код

Код:

for (let i=j=1, r; i<=25; j=++i*2-1) {
    
        iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
                +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
        );
        r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
        iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
                +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
                +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
                +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
        );
    }


и когда срабатывает else цикл ломается, вот и получается кто в лес кто по дрова пошло записываться, он же продолжает перебирать из

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

karginaolga пишет

у меня так работает:

да, но: после проработки по else он перепрыгивает одну группу, а лайки прописывает из группы через +3й, в итоге одна пропущенная группа после "пусто", и лайки берет из группы которая следующая 3я по счету. чет каша получается. Но в целом заканчивает без ошибок.

21-11-2017 21:26:33
karginaolga
а лайки он берет от сюда

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

Выделить код

Код:

+'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n


скорее всего тут и происходит путаница [spoiler][code]const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=25; j=++i*2-1){

var q = window.document.querySelectorAll('div._glm')[i-1].textContent.match(/\d+/);
if (q != null) {

    iimPlayCode('TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
            +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
    );
    r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
    iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
            +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n

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

karginaolga
здесь?

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

Выделить код

Код:

if (window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i-1])


не работает, вот результат [spoiler]

"Wow Реклама","Community","80K like this","https://www.facebook.com/wowreklama/?ref=br_rs"
"Реклама Экспо","5.0(3) · Company","73 like this","https://www.facebook.com/ReclamaExpo/?ref=br_rs"
"Sostav.ru: реклама и маркетинг в России","Business & Economy Website","61K like this","https://www.facebook.com/Sostav.ru/?ref=br_rs"
"СпортАкадемРеклама","5.0(4) · Event Planner","165 like this","https://www.facebook.com565774/?ref=br_rs"
"Parking Реклама","Organization","19 like this","https://www.facebook.com/ParkingReklama/?ref=br_rs"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","П

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 21-11-2017 20:13:47

karginaolga

вот так сейчас сработало, но он доходя до сектора без лайков, начинает с else и все последующие циклы пишет как в условиях else, как будто не выходит из цикла else

[spoiler][code]const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=25; j=++i*2-1){


if (window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i]) {
    iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
            +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
    );
    r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
    iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
            +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
            +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
            +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
    );
}

  else {
      iimPlayCode('SET !EXTRACT NULL'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'ADD !EXTRACT "'+a+'"'+n
            +'ADD !EXTRACT "'+a+'"'+

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 21-11-2017 19:52:04

karginaolga
И так не работает. Там если не поставил ни кто like, в DOM этого сектора вообще нет. Скрипт доходит до этого сектора и ошибка.
Вот загляните в дом

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


ссылки публикуются в тегах noindex под спойлером
7й-8й-9й блок без лайков, скрипт и не знает на что смотреть.

21-11-2017 19:53:50
karginaolga
только нужно залогинеться для начала. я могу скрин сделать и прислать.

InfSub

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 21-11-2017 19:29:48

karginaolga пишет

и научитесь задавать конкретные вопросы

учту:D
через GetLastExtract не получаеться. два блока подряд с отсутствующим

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

<a style="outline: 1px solid blue;" href="/search/302615623128218/likers?ref=snippets">80K like this</a>


и ошибка, ему не откуда брать предыдущие дынные.
А можно GetLastExtract заменить на другую команду.
Заходим в DOM сектора, если есть like this работаем, если нет тогда else

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 21-11-2017 18:47:37

karginaolga
попадает 80K like this. Где - 80K постоянно меняется, а like this неизменно. Это мне и нужно. Если нет like this, то и нужно пропускать этот блок. А точнее, если вообще нет этого

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

<a style="outline: 1px solid blue;" href="/search/302615623128218/likers?ref=snippets">80K like this</a>


тогда else. Но как это вставить в условие?

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 21-11-2017 18:01:08

Egorushka1974 пишет

вот, кстати, рекомендую

Спасибо.

Пытаюсь выставить условия для цикла, но чет не хочет он работать. Битый час бьюсь уже. Суть в том, что бы перед выполнением кода, проверялось, если нет такого, то записываем "пусто".
Может подскажете, где и что делаю не так
[spoiler][code]const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=10; j=++i*2-1){

iimPlayCode( 'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT')
q=iimGetLastExtract()

if (q == true) {
    iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
                +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
    );
    r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
    iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
                +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
                +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
                +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
    );
}
if (q == false) {
      iimPlayCode(

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 21-11-2017 15:01:44

InfSub
Еще потревожу. Столкнулся с тем, что не во всех блоках прописана нужная для извлечения информация. Например: есть только название, или название и url... И как только доходит до такого блока, js выдает ошибку и останавливается

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


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

Выделить код

Код:

if (iimGetLastExtract().match() == null) {
      iimPlayCode('SET !EXTRACT NULL'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'ADD !EXTRACT "'+a+'"'+n
              +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
      );
};


но он не срабатывает. Не подскажите где ошибка?

Весь код целиком [spoiler][code]const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=20; j=++i*2-1){
    iimPlayCode( 'TAG

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 21-11-2017 01:51:12

InfSub
Спасибо!!! Ты гуру:) Работает идеально.

Egorushka1974
Спасибо что подключился!!! Круто что можно обратиться за советом и помощью, и ты получишь и то и другое.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 20-11-2017 23:50:01

InfSub
а возможно ли в цикле прописывать еще один цикл?
как в данном цикле js прописать цикл

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

Выделить код

Код:

SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1") 
TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF

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

InfSub
Тут нельзя поставить условие w++ для всего цикла.
И дело не в том что переносит по пол строки, сам код, он как бы разбит на 2. Да, для разных переменных, но все же дважды прописан

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

Выделить код

Код:

iimPlayCode('SET !EXTRACT " '+a+'"\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt');
iimPlayCode('SET !EXTRACT " '+c+'"\nADD !EXTRACT '+d+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt')


вот и получается что вторую часть он кидает на следующую строку.


Когда я писал код под iim, я так видел это:
берем в экстракт

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

Выделить код

Код:

TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT


и берем в экстракт
скрытый текст

Выделить код

Код:

TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT


потом кидаем этот экстракт в переменную и чистим от ненужного
скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")


обнуляем экстракт, и в чистый экстракт добавляем переменную вар1.
потом туда дописыв

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

InfSub, Egorushka1974

InfSub пишет

отсутствовали двойные кавычки при присвоении !extract значения

Начал создавать txt файл. Но работает не корректно:
этим кодом [spoiler][code]var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные

for(w=1; w==5 ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimPlayCode('SET !EXTRACT " '+a+'"\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt');
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT');
var c = iimGetExtract();
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF');
var d = iimGetExtract();
iimPlayCode('SET !EXTRACT " '+c+'"\nADD !EXTRACT '+d+'\nSAV

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 20-11-2017 19:36:43

InfSub пишет

Полностью строку параметров цикла покажите

вот в таком виде код, нажимаю "воспроизвести", и не чего не происходит
[spoiler][code]var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные
var Path= '*';//путь до папки куда сохраняем результаты.

for(w=1; w==10  ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimPlayCode('SET !EXTRACT '+a+'\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=URL_URL.txt');
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT');
var c = iimGetExtract();
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF');
var d = iimGetExtract();
iimPlayCode('SET !EXTRACT '+c+'\nADD !EXTRACT

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

InfSub пишет

А вы уверены что такой путь существует?

путь взял из "свойства папки", какой там указан, такой и указал в коде

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

InfSub пишет

Если у вас Windows, должен быть указан диск, если *nix,  корректный путь, в никсах нет обратных слешей в пути

у меня mac os. я правильно вас понял

скрытый текст
/Users/Admin/Desktop/iMacros

сейчас именно так путь выставил, и поставил w==10 он вообще не реагирует на запуск. убрал w==10, код запустился но опять не создает txt файл.

чет я совсем запутался, что не так то.
в таком виде, нажимаю "воспроизвести", и не чего не происходит
[spoiler][code]var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные
var Path= '/Users/Admin/Desktop/iMacros/';//путь до папки куда сохраняем результаты.

for(w=1; w==10  ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimP

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

Egorushka1974
Спасибо!

Egorushka1974 пишет

не знаю с какого сайта,

Работаю я с результатом поиска на фуйсбуке.
Вот например

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


ссылки публикуются в тегах noindex под спойлером
Возьмем первую группу из списка, в результате в txt в столбик вытаскиваются:
скрытый текст

Выделить код

Код:

"Wow Реклама", "Сообщества" , "Нравится: 80 тыс." , "https://www.facebook.com/wowreklama/?ref=br_rs"


и так по порядку все что нашлось.

Egorushka1974 пишет

взял вашу регулярку, как работает не проверял, сайт неизвестен

эта регулярка тут потому что, в каждом классе дважды указывается url страницы

Роде пробегает, видно подсвечивает, но файл с результатом не создается, не понимаю почему. Путь вроде указал верно. В чем может быть причина?
И у вас в условии стоял w=1000, он вообще не работал, я убрал его, и заработало, но не знаю где

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 19-11-2017 20:06:23

Egorushka1974
Я пытался переписать код из iim в js и сразу в цикл ввести, но у меня не вышло, знаний пока не хватает, и отклика на форумах не нашел. Вот и работаю пока так, как умею.
К сожалению, пока не могу разобрать и адаптировать ваш скрипт под свой.

У мнея так

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

Выделить код

Код:

SET !REPLAYSPEED FAST
SET !ERRORIGNORE YES
TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT
TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT
SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")
SET !EXTRACT NULL
ADD !EXTRACT {{!VAR1}}

SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1")
TAG POS={{!LOOP}} TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT
TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF
SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_A.txt

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

InfSub
Не знаете, а может ли Portable Firefox решить эту проблему? Устанавливать пока не рискую, не могу найти форума, отзывов или хоть какой-то дискуссии по Portable Firefox для MacOS.

Egorushka1974
У меня с самого первого цикла он ведет себя так. Да, и, мне нужно именно сохранять данные. Только вот не понимаю, почему скрипт подлагивает. Вот когда скролю, да, висит жестко, и не откликается, пока полностью скрипт не отработает. А тут по сути вся инфа подгруженна, нужно просто пробежаться по готовому результату, и скинуть нужное в фаил. В этом вопрос.

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

InfSub

подскажите а в чем может быть причина. Работаю двумя кодами, первым скорлю до конца результата в низ. Подсчитал что найдено например 3000 групп, запускаю второй код в цикле 3000, которым записываю названия и адреса в txt. И вот тут уже код работает как будто в режиме MEDIUM, хотя стоит FAST. Видно что немного лагает. Возможно это из-за большого кол-ва циклов, или большого объема подгруженной информации на странице?
FF - 47.0.1   
iMacros - 8.9.7.   
Mac OS

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

Подскажите, скорость воспроизведения iMacros кода зависит от загруженности оперативки. Вижу что FF подзагрузил оперативку, но не завис, откликается все норм. Открыта одна вкладка, но с большим объемом из поискового результата.
И вот запускаю iim на скорости FAST а он работает как на MEDIUM. Это норм?

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

подскажите разобраться, не могу понять где именно пропустил ";"

пишет

SyntaxError: missing ; before statement, line 6 (Error code: -991)

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

Выделить код

Код:

macros += 'SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")'+ n;


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

Выделить код

Код:

var n = '\n';
var macros = '';
macros += 'TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+ n;
macros += 'TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'+ n;
macros += 'SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")'+ n;
macros += 'SET !EXTRACT NULL'+ n;
macros += 'ADD !EXTRACT {{!VAR1}}'+ n;

macros += 'SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1")'+ n;
macros += 'TAG POS={{!LOOP}} TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+ n;
macros += 'TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+ n;
macros += 'SAVEAS TYPE=EXTRACT FOLDER=* FILE=test.txt'+ n;

iimPlayCode(macros);

Board footer

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