Управляем потоками информации
Если говорить о веб-сервисах, то свет клином на Google не сошёлся. Есть интересные сервисы и у других компаний. В этой статье познакомимся с инструментом Yahoo! Pipes, позволяющим манипулировать содержанием чуть ли не всего Интернета. Сервис может оказаться полезным для профессиональных блогеров, веб-журналистов.
Сантехники Веба
Как обычно, осенью активизируются коммунальщики и начинают везде менять водопроводные и канализационные трубы. Но свои трубы есть и в Сети. Только по этим трубам течёт не вода, а информация. Благодаря веб-сервису Yahoo! Pipes интернетчики тоже могут заняться монтажом и пуско-наладкой виртуальных информационных трубопроводов.
Yahoo! Pipes - это веб-сервис, который предназначен, в первую очередь, для обработки и манипуляций с RSS-потоками, которые ещё называют лентами новостей. Эти RSS-каналы имеются на многих сайтах, блогах. В них обычно даётся описание изменений на сайте, блоге. Для сбора, обработки и чтения этих каналов используют специальные программы-агрегаторы.
По своему назначению веб-сервис Yahoo! Pipes как раз и относится к классу агрегаторов информации. Он позволяет получать потоки из разных источников в Интернете, обрабатывать, задавать им правила при помощи различных фильтров и получать на выходе модифицированный канал RSS.
Причём всё это можно делать прямо в браузере, в графическом режиме. Никаких скриптов здесь писать не нужно. Фильтры обработки информации выполнены в виде графических блоков, соединяемых между собой линиями-трубами, и все манипуляции делаются мышью.
Источниками данных для сервиса могут быть не только RSS-каналы. Yahoo! Pipes работает и с информацией в форматах CVS, XML, JSON. Также сервис может обрабатывать непосредственно html-страницы, хотя и с некоторыми ограничениями. Имеется возможность получать данные из Google, Flickr.
Yahoo! Pipes - это мощный инструмент. Но эта мощь имеет и обратную сторону. Это сервис не "для домохозяек", и он требует понимания принципов и структуры данных в Интернете. Главное здесь - это знание структуры RSS-потоков. Чем больше этих знаний, тем лучше, так как сервис позволяет решить задачи, для которых в ином случае приходится писать специальную программу или скрипт.
Может быть, именно из-за относительной сложности этому сервису посвящено не так много статей в компьютерной прессе. Хотя сервис существует давно, несколько лет.
Пока Yahoo! Pipes популярен у так называемых "оптимизаторов" и "продвигателей" сайтов. Но этот инструмент, созданный программистами Yahoo!, может оказаться полезным всем, кому нужно держать перед глазами и обрабатывать большое количество всевозможных информационных ресурсов - сайтов, блогов, rss-лент и т.д. Например, крутым блогерам.
Ведь что главное у настоящего блогера? Это крутая френдлента. А френдленты в блогах - они как раз и основаны на потоках RSS. Можно сказать, что френдлента в том же Livejournal или Blogspot - технологически это тоже RSS-агрегатор.
Принципы работы
Проще всего понять принцип работы Yahoo! Pipes будет юниксоидам. В этом сервисе используется принцип конвейерной обработки данных при помощи "трубопроводов" (pipe). Эта "труба" в UNIX-системах позволяет последовательно передавать данные со стандартного выхода одной программы на стандартный вход другой и таким образом создавать гибкие цепочки из команд.
Yahoo! Pipes - это тоже множество простых модулей, выполняющих какую-нибудь одну задачу. Эти модули имеют вход и выход, которые можно соединять между собой и получать конвейер обработки данных.
Модули Yahoo! Pipes, в основном, специализированы для работы и манипуляции с данными rss-лент в формате XML. Но есть и модули для обработки данных как простого текста. И, как мы уже говорили выше, в Yahoo! Pipes всё делается в графическом режиме - мышкой в браузере.
Интерфейс
Для практического знакомства с Yahoo! Pipes идем на pipes.yahoo.com, регистрируемся в системе и попадаем в сервис. Язык сервиса английский.
Здесь жмем кнопку "Create a pipe" и появится окно редактирования "трубопровода". Оно имеет три основные панели.
С левой стороны находится панель модулей и инструментов. Они сгрупированы в меню по разделам: Source, User Inputs, Operators, URL, String, Locators, Date, Number.
Самая большая панель - это главная область, куда мышью в режиме "тащи-бросай" перетаскиваются модули из левой панели. Модули имеют сверху и снизу, соответственно, точки входа и выхода. Эти точки соединяются линиями-трубами между собой. Если навести курсор мыши в область точки входа-выхода, то появятся ножницы, кликнув на которые, можно удалить соединительную линию-трубу.
Обработка данных в этих модулях идет последовательно сверху вниз. Данные, как вода, перетекают по линиям-трубам из одной "емкости" в другую, где с ними могут происходить какие-то преобразования.
Чтобы получить короткую справку по какому-либо из элементов, нужно нажать на знак вопроса в заголовке любого модуля. И внизу левой панели появится описание модуля и ссылки на примеры.
При создании и отладке труб не надо забывать про Debugger - область внизу рабочего окна. В Debugger можно отслеживать все промежуточные данные и текущее преобразование rss-потоков.
Сам процесс создания "трубопровода" представляет собой таскание мышью блоков-модулей и соединение их линиями-трубами.
Описание модулей
Так как таскание модулей и соединение их трубами большого труда не составляет, то познакомимся с самими модулями. Эти модули и есть главная сила Yahoo! Pipes. Рассмотрим основные категории этих блоков-обработчиков, которые предоставляет сервис.
Sources. В этом разделе находятся модули импорта и загрузки потоков из Сети. Загрузить можно конкретный rss-адрес, страницу html, файл cvs или json. Здесь есть модуль поиска на странице RSS-ленты "Feed Auto-Discovery", когда нет желания самому искать ссылку на ленту новостей; модуль поиска по базам Google, Flickr и географической базе Yahoo!.
User Inputs. Этот раздел представляет модули для интерактивного ввода пользователем значений. Эти значения будут обработаны в "трубопроводе" и использованы для формирования конечной ленты. Поддерживаются такие типы данных, как текст, число, дата, местоположение, URL.
Operators. Очень важный раздел. Здесь размещены модули для манипуляций с элементами потока данных. Наиболее важным здесь является модуль Filter, который позволяет фильтровать элементы потока данных согласно устанавливаемым условиям. Например, такими условиями может быть совпадение с регулярными выражениями, наличие определённого содержания в потоке, порядок и размер элементов в потоке.
Loop Module - это тоже важный модуль раздела операторов. Сам он ничего не модифицирует, но последовательно перебирает указанные в нём элементы и применяет к ним модуль обработки, который помещают в середину самого этого модуля Loop. Для этого в Loop есть специальное окно, куда надо перетащить нужный блок обработки.
Очень важным является модуль Regex. Он позволяет производить преобразования потока данных на основе регулярных выражений UNIX и может помочь в удалении из потока мусора, ненужных тегов и т.д.
Также в этом разделе есть модули разделения RSS-потока и обратного их соединения. Есть модули переименования элементов и изменения порядка следования данных в RSS-ленте, а также удаления элементов-дубликатов из RSS-ленты.
String. В этом разделе содержатся модули, позволяющие манипулировать данными лентами как текстовой строкой. Например, модуль Translate переведёт содержимое выбранного элемента на один из указанных языков. Обычно используется в модуле Loop.
Вот это и есть основные группы модулей Yahoo! Pipes, которых вполне хватит для первоначальной игры с сервисом. И действительно, с сервисом нужно для начала просто поиграть, чтобы понять, что к чему.
Hello, Pipes!
Для примера создадим небольшой "трубопровод", который переводит RSS-поток с одного языка на другой. В нашем случае возьмём ленту новостей с сайта formula1.com и переведём её на русский язык.
Заходим на сервис, нажимаем "Create a pipe" и открываем новую "трубу".
Из раздела Sources перетаскиваем на главную панель модуль Fetch Feed и вводим в него адрес RSS-потока www.formula1.com/rss/news/latest.rss.
Из раздела Operators тащим модуль Loop, а в середину этого модуля перетаскиваем модуль Translate из раздела String. В полученном гибриде модулей устанавливаем поля for each и assign result to в значения item.title, а в модуле Translate выбираем перевод English-to-Russian. Это мы перевели все заголовки <title> в нашей ленте.
Теперь переведём в ленте сообщения <description>. Снова проделываем все манипуляции, что и шагом выше, только вместо item.title выставляем item.description.
И теперь самый ответственный момент. Соединяем последовательно "трубами" сверху вниз наши модули и автоматически появившийся модуль Pipe Output.
Трубопровод готов. Сохраняем его и переходим по ссылке Run Pipe, где наблюдаем результаты наших сантехнических опытов. Здесь же имеется ссылка на модифицированную ленту, которую можно вставить в собственный блог во френдленту. Хотя, по правде сказать, машинный перевод - это не самое впечатляющее в сервисах Yahoo!.
Ещё добавлю, что работает с загружаемыми потоками Yahoo! Pipes в реальном времени. Поэтому модули при перетаскивании могут не всегда сразу активироваться, нужно немного подождать, пока сервис разберётся с данными. То же самое и при сохранении "трубопровода" - этот процесс может быть довольно долгим, более минуты.
Михаил АСТАПЧИК
Комментарии