Yahoo! Pipes

Управляем потоками информации

Если говорить о веб-сервисах, то свет клином на 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 в реальном времени. Поэтому модули при перетаскивании могут не всегда сразу активироваться, нужно немного подождать, пока сервис разберётся с данными. То же самое и при сохранении "трубопровода" - этот процесс может быть довольно долгим, более минуты.

Михаил АСТАПЧИК

Версия для печатиВерсия для печати

Номер: 

39 за 2010 год

Рубрика: 

Internet
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

Аватар пользователя гога
Хорошая, практичная статья. Побольше бы такого в КВ!
Аватар пользователя Б\у
В общем, хорошая. Я тоже заметил, что Yahoo создали серьезный веб-сервис, но, как то вникнуть не выходило. А тут - целая статья.
Аватар пользователя mike
Спасибо автору!