марта 16

Сегодня поговорим о том, какие возможны варианты взаимодействия zeenoposter 3 и php, и основные моменты работы.

Есть два способа работать с php. В панели инструментов zennoposter’a это объекты “Свой скрипт” и “Своя программа”:

varianty

Вариант №1, Свой скрипт. Удобный и простой в использовании способ. Заключается в получении страницы по определенному урлу, и запись ее содержимого в результат выполнения шага. Ну и конечно с использованием Get запроса. Что нам это дает. Например, создаем на своем хостинге php скрипт, который в зависимости от переданного в урле значения content возвращает различное содержимое. Заходя на zenno.ru/test.php?content=image скрипт отдаст картинку, и зенно ее использует далее в шаблоне, а zenno.ru/test.php?content=video передаст зеннопостеру видео. Вот такой успешный и очень простой в создании симбиоз, о возможностях которого мы еще поговорим в будущих уроках.

Вариант №2, Своя программа. Этот способ в своем уроке рассматривал DarkDiver. Урок вы можете найти в закрытой части форума зеннолаборатории :) .

Чтобы было легче понять принцип, немного проясним ситуацию. Схема такая:

Зеннопостер -> php скрипт -> Зеннопостер.

Это означает, что мы создаем шаблон, в котором объект “Своя программа”. При выполнении шаблона, zennoposter запускает эту программу (в нашем случае php скрипт). И в самой программе у нас содержится код, который в свою очередь управляет зеннопостером. Ну и, конечно, делает какие-то свои дела. Итак, еще раз. Шаблон запускает пхп скрипт–> пхп скрипт управляет окнами, сайтами в зеннопостере и выполняет свой код.

Вот то, чего так долго ждали обладатели Зеннопостера 2.

Но чтобы php мог управлять зеннопостером, ему нужен свой управлятор. PHP классы для взаимодействия php и зенно. Вы их можете скачать у меня (актуальны на 16.03.10), либо на оффициальном сайте.

Немного о том, как запустить “Свою программу”.

1. Добавляем на рабочую поверхность Шаг “Собственный код” из панели инструментов

2. Перетаскиваем на добавленный шаг новую “Ветку шага”

3. На ветку шага, в правую ее часть перетаскиваем объект “Своя программа” из той же панели инструментов

use_sv_progr Теперь обратим внимание на свойства добавленного объекта. И видим там Путь к бинарнику. И там запись вида
“{-//-}\Bin\3rdparty\PHP\php.exe” -f “H:\!!!\ResultCode\! Others\source_for_bot\PHP\test.php” “{instance-ip}” “{instance-port}”
По сути, это консольная команда. Все очень просто, смотрите:
“Чем запустить” -f “Что запустить” “параметр1″ “параметр2″

Чем запустить- {-//-}\Bin\3rdparty\PHP\php.exe это встроенный в зеннопостер php.

Что запустить- H:\!!!\ResultCode\! Others\source_for_bot\PHP\test.php это путь к нашему php скрипту.

Ну и параметры, айпи и порт зенно подставит сам.

В итоге, для решения большинства наших задач нам необходимо заменить только тот кусочек где “Что запустить”. Остальное оставляем как есть.

Вот в принципе и все что нам необходимо для старта. Сегодня-завтра рассмотрим как сделать регистрацию профилей с использованием зенно+php. Или сдл какой-нибудь замутим.

Фев 27

В аське часто стали спрашивать, как изучить php.
Это связано с тем, что в наши дни уже недостаточно быть просто дорвейщиком. Надо еще и php знать, чтобы суметь самому себе писать скрипты. Зачастую, на поиск фрилансера и составление ТЗ уходит больше времени чем на написание скрипта. Это в случае, если скрипт простой, но нужен срочно. Или небольшая поправка к раннему скрипту.
Есть и другой вариант, когда скрипт не простой, а несущий в себе авторские идеи. А палить их не хочется. Счас прогеры прошаренные в плане этого, могут и увести тему. Все мы помним гугл групс и тд.
Теперь о том, КАК. Рассказываю о своем опыте, думаю он применим во многих случаях:
1.Учебники по пхп забудь. Ими пользоваться неудобно.
2.Вместо уроков из учебника, поставь себе задачу. Небольшой скрипт, улучшающий твою работу. Действительно необходимый тебе. Допустим, скрипт убирающий дублирующие строки из файла.
3.Тебе понадобится справочник. Я пользуюсь php.su
4.Тебе понадобится форум. Форум отлично помогает если ты застрял, и мотивация твоя падает, и охото послать php подальше :) . Мой выбор- нуллед. Оперативная поддержка, и плюс возможность набрать посты, чтобы потом что-нибудь скачать. Хотя у меня счас много постов, но я оттуда так ничего и не качаю. А думал буду рад как хз что.

Все.
Освоение php- Небольшая задача, Справочник, Форум.
И именно в таком порядке.
Так осваивал я.

Многие говорят что программирование- это математика. И надо хорошо уметь решать математические задачи, формулы. Фигня. Это пожалуй только для мегапроектов. Освоение php это освоение ЯЗЫКА. Это лингвистика в первую очередь. Как научиться говорить иностранцу- продай колбасу, так и сказать php убрать из файла лишние строки, или еще что. О крупном пока говорить не будем.

Дек 08

Здравствуйте!

Скрипт, который я описывал в прошлом посте, получили себе на почту около десяти человек (те, кто стучался мне в аську 86103шесть). Были люди разные. Даже был один неадекват, о котором, впрочем, вспоминать не хочется. И не будем. Всем остальным- спасибо за внимание, проявленное к моим трудам.

Честно сказать, скрипт получился не совсем такой, каким я себе его представлял. Я надеялся на бОльшую универсальность, широкое применение. А вышло нечто иное… Но, по крайней мере, идея в него заложенная понравилась людям. И можно его раскромсать и переделать под свои нужды. Благо код открытый.

Ну а сегодня хочу представить вашему вниманию php функцию постинга на Wordpress с помощью зеннобота. Постит немудрено, не использует теги, категории. Потому что мне не было необходимости. Вот сама функция:


<?php

function standardWP_posting($siteurl,$sitelogin,$sitepassword,$title,$content) {
 $zb = new ZennoBotConnector("127.0.0.1", "1313");
 $instanceid = $zb->CreateInstance();
 $handler = "manager0.zb";
 // clear cookie if required
 if (strtolower("blank") == "blank") {
 $zb->ClearCookie($instanceid, $handler);
 }
 // clear cache if required
 if (strtolower("false") == "true") {
 $zb->ClearCache($instanceid, $handler);
 }
 // navigating to the page
 $adminko_url= $siteurl."wp-admin/";
 $zb->Navigate($instanceid, $handler, $adminko_url,  "True",  "300");
 // setting input value
 $zb->SetInputValue($instanceid, $handler, "user_login", $sitelogin,  "loginform",  "text", "0", "0", "0");
 // setting input value
 $zb->SetInputValue($instanceid, $handler, "user_pass", $sitepassword,  "loginform",  "password", "0", "0", "0");
 // make "click" action on the element
 $zb->InvokeMember($instanceid, $handler, "wp-submit",  "click", "loginform", "submit", "0", "0", "0");
 // click on the link
 $posting_url=$adminko_url."post-new.php";
 $zb->ClickToAnchor($instanceid, $handler, "Write", $posting_url, "", "0", "0", "0");
 // setting input value
 $zb->SetInputValue($instanceid, $handler, "title", $title,  "post",  "text", "", "", "");
 // setting input value
 $zb->SetInputValue($instanceid, $handler, "tinymce", $content,  "",  "body", "0", "-1", "1");
 // make "click" action on the element
 $zb->InvokeMember($instanceid, $handler, "publish",  "click", "post", "submit", "1", "0", "0");

 while ($zb->IsBusy($instanceid, $handler) !='false') sleep(1);
 $zb->StopInstance($instanceid);
}

?>

Использовать можно так:


<?php

$siteurl='http://zenno.ru/';

$sitelogin='admin';

$sitepassword='тут пароль';

$title='заголовок поста';

$content='содержимое поста';

standardWP_posting($siteurl,$sitelogin,$sitepassword,$title,$content);

?>

Если что-то непонятно, или есть необходимость доработать- пишите в аську. По мере занятости- готов помочь бесплатно.

Не забывайте подписаться на RSS, будет много интересного

Окт 22

Здравствуйте! Интернет развивается, технологии не стоят на месте. Каждый год у вебмастеров появляются новые инструменты для работы. В сентябре 2008го появился замечательный продукт ZennoPoster, а весной 2009го его некая версия для прогеров, ZennoBot.

Не будем вдаваться в нудные описания, вот вкратце:

  • Основная функция продуктов Zenno- автоматизация ваших действий в сети
  • Возможное применение- регистрация email, фришников, создание и заполнение профилей
  • Распространение- ZennoPoster аренда от 15 евро/мес., покупка 298 евро (420$); ZennoBot в 1 поток бесплатно, многопоточность 99 евро.

Моя статья показывает, что ZennoPoster сам по себе- дело муторное по ряду причин, а ZennoBot вещь отличная, надо только суметь приготовить. Я собственно, это блюдо уже давно научился готовить, и сегодня подам к вашему столу. Пригодится в жизни любому вебмастеру.

Основным преимуществом Zenno является то, что пользователь выполняет действия в обычном браузере, а Zenno потом по этим действиям составляет шаблон. Но вот после того как действия в браузере завершены, начинается нудное и непонятное разбирательство во второй закладке ПроектМейкера. Дабы не быть голословным, приведу пример:

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

  • Нажимаем Add IO –> Get/Post –> FromFile
  • Указываем перед каким шагом выполнить это действие
  • Указываем адрес файла
  • Задаем уникальное ID данному действию
  • Копируем Location получившегося действия
  • Вставляем Location вместо Alfred в другом нашем действии

Фуф… Подставили логин. Но ведь нам еще надо подставить email наверняка. И другие значения. Вообщем как ни крути, но иногда нарегать руками получается быстрее чем создать шаблон под ZennoPoster.

Рис.1 тут всегда застреваешь, неудобно

Рис.1 тут всегда застреваешь, неудобно

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

  • Файл с логинами, email’ами должен быть заранее определен по дефолту
  • Скрипт должен сам догадываться что Alfred это логин и тому подобное
  • Работа с браузером должна быть сохранена, ибо это самый быстрый способ создания шаблона.

Результатом труда стал скрипт конвертации шаблонов ZennoPoster’а

  • позволяющий сэкономить до 90% времени, уходящего на создание шаблонов
  • с открытым исходным кодом, доступным для доработки вами
  • полностью рабочая система, по многим своим качествам не хуже, а по многим и лучше чем ZennoPoster и Xedant Human Emulator достается вам АБСОЛЮТНО БЕСПЛАТНО, т.к. ZennoBot в один поток работает задаром.

Как создать шаблон с моим скриптом?

  • Открываем ПроектМейкер
  • Выполняем необходимые действия в браузере
  • Жмем Copy Steps to the template editor
  • Сохраняем шаблон в файл

Внимание! Нам не надо идти в ненавистную вторую закладку ПроектМейкера и потеть над правкой шаблона. Всю основную работу за вас сделает мой скрипт! Просто выполните действия в браузере и сохраните шаблон дефолтным, таким, какой он получился.

  • Заходите в мой скрипт, жмете Добавить шаблон. Указываете путь к шаблону,
  • полученному от ПроектМейкера
  • Проверяете, правильно ли сконвертирован шаблон.
  • Пользуетесь!
Рис.2 Все основные действия были распознаны скриптом-конвертером.

Рис.2 Все основные действия были распознаны скриптом-конвертером.


Логин при запуске шаблона будет браться из файла, email из другого файла, пароль будет сгенерирован автоматом. И только в одном случае распознано неверно- 45gBbn это не email, это значение капчи. Поэтому нажимаем на выпадающий список и выбираем что нужно

Рис.3 Неправильно распознано? Достаточно просто выбрать в списке нужное действие

Рис.3 Неправильно распознано? Достаточно просто выбрать в списке нужное действие

Рис.4 Все! php скрипт написан автоматом, за вас! И вы можете править его, как вам будет угодно. ведь это просто скрипт =)

Рис.4 Все! php скрипт написан автоматом, за вас! И вы можете править его, как вам будет угодно. ведь это просто скрипт =)

Бонус1:

В скрипте реализована работа с сервисом антикапчи http://www.ac-service.info. Раньше, для того чтобы подцепить к php скрипту антикапчу, надо было либо нанимать прогера, либо разбираться самому. Я это уже сделал за вас, просто укажите в файле config.php ваш ключ, полученный в админке сервиса антикапчи.

Бонус2:

Высказывайте любые свои пожелания по доработке скрипта, все они будут по возможности реализованы. Будь то заточка под создание определенных профилей или использование MySQL и т.п.

Знаете, кто получил нобелевскую премию по физиологии и медицине в этом году? Американцы за открытие механизмов защиты хромосом теломерами. К чему это я? Я к тому, что в наше время очень ценна узкая специализация. Обращайте внимание на мелочи в работе, знайте в своем seo маленькую хромосомку, но чтобы добиться больших успехов, изучите ее лучше всех.

Чтобы получить скрипт, достаточно стукнуть мне в аську 86103шесть

Окт 01

Мде. Сколько всего было и произошло. Ну все-таки руки мои добрались и до блогика. В гугле больше никаких позиций не занимает, придется все начинать с нуля…. Ну да ладно, возродим потихоньку. Пока будут вестись работы по восстановлению контента- блог будет хромать(

июля 15

Выкладываю во фри пользование небольшой скрипт для автоматического приглашения в группы vkontakte. Он самый простецкий, но если у меня будет позитивный настрой- я его буду дорабатывать. Работает следующим образом- сохраняете имеющиеся у вас аккаунты для вконтакте, и ссылки на группы. Затем на другой странице выбираете аккаунт, выбираете группу в которую он приглашать будет, и вбиваете ключевое слово для поиска потенциальных участников группы. Например, если ваша группа о поисковом продвижении, то вы можете вписать “seo”, и в группу будут приглашаться люди, на страницах которых есть упоминание о seo.

Итак, вбили все поля- тут начинается магия. Скрипт посылает запрос для зеннобота, тот в свою очередь открывает окошко IE, вводит логин и пасс и начинает приглашать людей в вашу группу.

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

Как установить?

Очень просто. Вам понадобится денвер, curl и виндоус :) . Скачиваете и распаковываете архив с скриптом. Заливаете бекап БД из файла vkontakte.sql.gz. Редактируете config.php. Скачиваете архив с ZennoBot, распаковываете этот архив и запукаете файл ZennoServer.exe.Начинаете работу) при работе обязательно должен быть запущен ZennoServer.exe, незабывайте об этом.

Единственное ограничение скрипта- работа в один поток. Это ограничение от разработчиков zenno.

Ну вот и все. Спасибо, если дочитали

Добавлено 7.12.09: Прошло немало времени, вконтакте изменил алгоритмы и скрипт НЕ РАБОТАЕТ. Если у вас есть необходимость в рассылке приглашений, стучитесь мне в аську 86103шесть и я сделаю скрипт заново. Не бесплатно

мая 12

В новой версии 2.9.8 появилась фича, которой еще не было в 2.9.5. Фича позволяет более удобным образом выбирать случайную строку из заданного файла.
Если вам необходимо извлечь случайную строку из файла, то теперь это вообще просто- вместо нуля в номере строки (String) следует подставить значение “random”. это всё!
Раньше я вообще умел выбирать только первую строку, и удалять ее. затем снова первую, и снова удалять. Теперь же возможности мои растут.
Все спешим за апдейтами к разработчикам в аську ;)
А те кто еще не купил- задумайтесь о покупке) прога правда хороша)

мая 11

В этом посте буду собирать свой FAQ о Zennoposter”е. Вопросы, которые у меня возникали к саппорту зеннопостера

В. Когда стоит ожидать выхода третьей версии зенно?

О. ой не знаю…. даже не предполагаю…

В. Зеннопостер работает коряво. Нажимаю перезагрузить страницу- и бестолку. Часто возникают ошибки. С ошибками вылетает когда вхожу в амдинку вордпресса. Что это? Как быть?

О. Скорее всего, проблема в IE. Зеннопостер исправно работает с 7ой версией IE. На 8ой не тестировался, а 6ая версия ужасно забагована и зеннопостер работает с ней фигово. Ставьте 7ую версию. Ее можно скачать с www.microsoft.com

В. Не получается создать шаблон. Выполняю действие в закладке Record Template- тем не менее оно не записывается в список событий. В чем дело?

О.Возможно, сайт использует фреймы, подгружаемые с другого домена. Зеннопостер пока что не поддерживает работу с таким типом фреймов. Разработчики обещают реализовать такую возможность уже в следующей, 3ей версии зеннопостера

В. Создал шаг подтверждения по емейлу. Пробую проверять его в встроенном дебаггере- не получается. Почему?

О. Пока что дебагер не ищет письма, нужно вручную вводить.

В. Как в дебаггере открыть кнопку, которая покажет окошко, в которое следует вводить капчу?

О. Над браузером в дебаггере есть кнопка для вызова этого окошка.

В. Как правильно работать с капчей? Во время Record Template я щалкнул по ней дважды, нажал “да, это капча”. А дальше что делать?

О.Как обычно, копируете шаги в Edit Template, затем в списке действий увидите действие по обработке капчи. То есть вызов окошка для ввода капчи. Location этого действия копируете в Value для капчи. По сути, получается нечто вроде привычного Load From File, только тут получается “Load From спец.окошко для капчи” :)

Апр 29

В минувшую субботу, 25го числа, один из разработчиков ZennoPoster”a, nuaru, представил новый продукт- Zennobot. Цитирую слова nuaru с форума 4seo.biz :

Эта программа была создана для программистов, которые пишут программы на языках, не работающих с com объектом Internet Explorer или работающих с ним очень криво…

Программа по сути является оболочкой com объекта Internet Explorer, который управляется постредством HTTP запросов на указанный порт. Можно установить сервер программы на один компьютер, а управлять с другого. Для составления HTTP команд можно использовать ProjectMaker из демки ZennoPoster и настраиваемый конвертатор из ZennoBot, который перекодирует шаблон, созданный ProjectMaker в нужный вам код. Т.е. не нужно искать никаких id на станице нужного вам ресурса, никаких кнопок, просто проходитесь по нему с помощью ProjectMaker и конвертируйте созданный шаблон в код вашего языка программирования.В ваших умелых руках ZennoBot может стать:

  • Авторегером аккаунтов фрихостов, мыл, социальных сетей, блогов и т.д. (автомат, полуавтомат)
  • Закладочником соц. сетей
  • Автонаполненителем сетки блогов, доров
  • Отправщиком СМС
  • Постером в форумы
  • Постером в гостевые
  • Инструментом для массового подтверждения регистраций по мылу
  • Парсером поисковиков
  • Парсером контента с различных ресурсов
  • Регером доменов

Скачать можно тут

Внутри есть хелп с примерами и готовыми оболочками для .NET и PHP.

Можете задавать свои вопросы на нашем форуме поддержки программы

Условия распространения: бесплатно :)

Более того, можете писать свои программы на основе ZennoBot и продавать их, только укажите на нас ссылку в этом случае.

Апр 13

Если вы не шарите в php и шарить не желаете- ZennoPoster вам подходит. На сайтах фрилансеров за парсер готовы платить в среднем по 75-250$. В нашем уроке мы рассмотрим как с помощью зеннопостера можно сделать парсер за 40 минут, без наличия начальных знаний php. А парсить мы будем сайт www.lyrics.com , точнее его часть. Отпарсим тексты песен Мадонны и сопутствующие ютубовские видео. И сразу же научимся постить это дело на свой блог. В дальнейшем вы можете приделывать переводы к песням, можете придумать еще что-то свое. Тут остается только фантазировать. В данном туториале я старался расписать все подробнее, надеюсь у вас не возникнет проблем при создании шаблона.

Кстати, о спаленных темах. На умаксе еще в далеком 2007 году была спалена тема, которую мы тут частично счас и автоматизируем. Кратко, суть темы в следующем. Берем тексты стихов или песен. Переводим с помощью translate.google.com. В итоге- у нас на сайте текст на двух языках, причем на одном из языков- 100% уникальный текст. А что плохого в том, что я перевел стихи фиговым переводчиком и выложил их юзеру? Просто стихи, видите ли, очень тяжело переводить…… Вообщем темка по-моему неплохая, я ее так и не опробовал.

Чтож, вернемся к делу. Сперва надо найти Мадонну на www.lyrics.com. Вбиваем в поиск Madonna. Как оказывается, их представлено целых две. Берем ту, что пожирнее))) 1539 текстов песен. Щелкаем. Видим на странице ссылки на тексты песен. И таких страниц с ссылками у нас много. Наша первая задача- собрать со всех страниц все ссылки на песни. Адресов страниц со ссылками не так много, поэтому мы забьем их в файл руками. Смотрим внизу на навигатор, видим что ссылки имеют следующий вид:

Навигатор

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/20

Где в каждой из ссылок меняется только число после слэша, указывающее на номер страницы.Что мы делаем. Копируем в блокнот следующим образом:

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/00

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/20

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/40

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/60

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/80

Вставляем потом после слеша в каждой из пяти ссылок единичку- будет уже 100,120,140,160,180.

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/100

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/120

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/140

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/160

http://www.lyrics.com/index.php/artists/name/madonna-p-64565/180

Затем вставляем туда двоечку- будет уже 200,220,240,260,280. Далее троечку, четверочку. В итоге мы получаем файл с полным списком страниц, на которых есть ссылки на тексты песен. Этот файл вы можете взять в приложении. Ложим полученный файл в эту папку: ProjectMaker\Resources . Открываем ПроектМейкер. Сразу вводим в адресную строку http://www.lyrics.com/index.php/artists/name/madonna-p-64565/ и жмем Go!

Когда страничка загружена- жмем Copy steps to the Template Editor. Теперь нам следует посмотреть код этой страницы, чтобы узнать как правильно составить регулярку, которая вытягивала бы ссылки. Жмем HTML Source чтобы увидеть исходный код и ищем ссылку. Затем переходим в RegExp Builder и пробуем подставлять. Одновременно с этим копируем часть текста, чтобы сразу же проверить работу регулярки. Создание регулярок сделано действительно на высоком уровне. Сделав около 7 попыток, у меня получилась регулярка следующего вида:

(?<=\\<A href\\=\\”)http:\\/\\/www\\.lyrics\\.com\\/index\\.php\\/artists\\/lyric\\/madonna-p-64565-lyrics.*?(?=\\”\\>)

Обратите внимание на то, что «A» и «a», как оказалось, разные буквы. В нашем случае в коде именно большая А. Теперь наша задача- обрабатывать страничку получившейся регуляркой и сохранять результаты в файл. Переходим в Edit Template. Пока что весь шаблон у нас состоит из одного действия- браузинга на заданную страницу (Мы его скопировали кнопкой Copy чуть ранее). Жмем Add IO чтобы добавить второе действие. Выбираем Add IO- Output- Get/Post- Page.

Действие Page означает, что мы будем обрабатывать текущую страницу. Сразу как добавили- прописываем ID. Пишем сюда что угодно, это в нашем деле не имеет значения. И не забывайте заполнять эту графу всякий раз далее в работе. Итак, в поле RegExp вписываем нашу регулярку, и в конце ее добавляем $$$all. Этот макрос означает что если на странице найдется не одно, а два или более участков, попадающих под действие регулярного выражения, то надо их тоже использовать в дальнейшей работе. Так. С изъятием нужного текста разобрались. Теперь добавляем модуль SaveResults чтобы сохранить результаты нашего труда в файл. Добавили модуль, сразу щелкаем Add IO- Input- SaveResults чтобы добавить действие. В File Name мы можем написать как полный путь к файлу, так и относительный. Предпочтительнее второй вариант, поэтому выберем его. Жмем в верхнем меню MacrosBuilder. Открывается окошко. Выбираем там Файлы и директории- Полный путь к директории, в которой запущен ZennoPoster. Копируем этот макрос, и подставляем в наше поле File Name. Но мы хотим сохранить в папке Resources и в файле с названием linksonlyrics.txt. Поэтому у нас получается следующая строка: $($macApplication.StartupPath$)$Resources\linksonlyrics.txt . Теперь внимание, важный момент. Самая первая страница, на которую мы заходим, должна тоже перебираться из файла. Поэтому логичным решением было бы добавить в модуль Get одно действие- брать из нашего заранее приготовленного файла с линками первую строку, и подставлять ее в URL для браузинга. Но есть небольшая фича. Первым действием всегда будет Input Get, поэтому наше вставление линка из файла будет попросту игнорироваться. Решается эта проблема следующим образом. Добавляем еще один модуль Get. В итоге, алгоритм будет такой:

Шаг1.

Действие1. Браузинг на пустую страницу (about:blank)

Действие2. Берем строку из файла

Шаг2.

Действие1. Браузинг на страницу, где URL- строка из файла

Чтож, добавляем модуль Get. Делаем браузинг на пустую страницу. Затем Add IO- Output- Get/Post- From File чтобы брать строку из файла. File Name мы уже с вами научились вписывать, поэтому сразу показываю результат- $($macApplication.StartupPath$)$Resources\madonnalinks.txt Теперь важный момент в понимании работы программы. Результат промежуточного действия в шаге помещается в Location. Чтобы дальше нам использовать результат действия, мы должны скопировать значение поля Location этого действия, и вставить его туда, где нам его необходимо использовать. В нашем случае промежуточный шаг- Взятие строки из файла. Результатом соответственно будет строка. И эту строку нам надо подставлять в URL нашего второго модуля Get. Так мы и сделаем.

Тоже самое надо нам сделать и с результатом обработки страницы. Скопируем Location шага с обработкой страницы регуляркой в поле Value для шага сохранения результатов.Итак, шаблон готов. Теперь он у нас берет строку из файла. Использует ее как URL и получает код страницы. Сохраняет в файл все участки кода, которые попали под действие заданной регулярки. И так до тех пор, пока в файле не закончатся все строки. Результатом многократного запуска этого шаблона у нас станет файл linksonlyrics.txt, который будет содержать 1539 ссылок :) .

Часть 2. Шаблон парсит страницу, достает заголовки, тексты песен, видео, и затем постит на блог

Начальный этап перебирания ссылок из файла и парсинг страницы регуляркой практически не отличается от аналогичного этапа первого шаблона, поэтому попробуйте его сделать самостоятельно. Я остановлюсь лишь на тех моментах, которые могут вызвать затруднение.Тексты песен подгружаются через ajax, чтобы их было нелегко вытащить) Хвала солёной кукурузине, наш дивный механизм позволяет это обойти. Внимательно используйте встроенный просмотр исходного кода и пробуйте разные варианты в редакторе регулярок. Вот какая регулярка для текстов песен получилась у меня:

(?<=\\<DIV id\\=lyric_space\\>).*(?=\\<BR\\>—\\<BR\\>Lyrics powered by)

Далее. С ютубовским видео ориентируйтесь на то, что перед искомым текстом всегда есть <DIV class=video id=youtube_box>, и строка заканчивается на </EMBED>. Тут трудностей возникнуть не должно. Во второй, основной модуль Get добавляйте три действия обработки страницы, с тремя регулярками, обрабатывающими заголовки, тексты песен, и ютубовское видо. SaveResults в этот раз мы делать не будем, и сразу же займемся постингом получившихся данных на наш блог. Для постинга я выбрал свой личный блог http://music-land.co.cc/ . Переходим в закладку Record Template и вводим в адресную строку http://music-land.co.cc/wp-login.php?loggedout=true С этой страницы Зенно всегда будет логиниться на блог. Как вы видите, в адресе присутствует ?loggedout=true это для пущей уверенности что мы выходим из админки, прежде чем снова войти, и ошибок не возникнет. Итак. Переходим по ссылке, вводим логин и пасс, жмем войти.

В админке сразу в правой части видим панель для быстрой публикации постов. Напротив Заголовок пишем Заголовок. Напротив Текст пишем Текст. Жмем «опубликовать». Все. Теперь нам надо добавить проделанные действия к уже существующим. Для этого жмем кнопку «Append Steps to the Template Editor». Если все хорошо, то в итоге у вас должно получиться три шага Get:

Теперь идем во второй Get и копируем Location поля, куда помещается результат поиска Заголовка. Переходим к третьему шагу, находим там действие, у которого Value равно «Заголовок». И меняем на макрос Location’a. А в поле с текстом мы вставляем сразу и слова песни, и код ютубовского ролика. Собственно, все.

На этом мы заканчиваем) Сохраняем получившийся шаблон, тестируем. Я делал шаблон и одновременно писал этот мануал. Как оказалось, ролики ютубовские каким-то образом палятся и работать отказываются. Чтож, в следующий раз мы затронем тему как обойти эту защиту и вставить таки видеоклипы в наш экспериментальный блог.

Результаты работы моего зенно-парсера-постера вы можете увидеть тут: http://music-land.co.cc/
Всего хорошего!
Приложения:
madonna_parser.xml -Шаблон парсинга ссылок на тексты песен
madonna_parser2.xml- Шаблон парсинга текстов песен и видео с последующим постингом на блог
madonnalinks.txt- Файл с ссылками на страницы со списками песен