Yahoo Pipes FAQ
Для новичков в Yahoo Pipes решил написать небольшой tutorial по работе с этим сервисом.
Для начала очень рекомендую хотя бы поверхностно изучить спецификацию RSS, без четкого понимания этих моментов сделать интересную трубу будет проблематично.
Начинать изучать сервис лучше всего с обзора готовых примеров. Следует понимать, что обработка всех блоков Yahoo Pipes идет последовательно “сверху вниз”. Данные, как вода, перетекают по трубам из одной “емкости” в другую, где с ними могут происходить какие-то преобразования.
При создании и отладке труб не надо забывать про встроенный Debugger – область внизу рабочего окна. В Debugger’е можно отслеживать все промежуточные данные и преобразование rss-потоков.
Рассмотрим наиболее полезные модули Yahoo Pipes.
1. Sources
Модули из раздела Sources предназначены для получения данных из внешних источников, например rss лент или результатов поиска некоторых сервисов.
Fetch Feed

Пожалуй, основной инструмент в Yahoo Pipes. Получает и отдает на выходе содержимое RSS ленты, указанной в поле URL. URL можно задать вручную, а можно подставить в виде параметра из другого блока (видите этот серый кружочек справа от поля ввода url?). Можно задавать несколько источников одновременно.
Fetch Page

Загружает html страницу находящуюся по адресу URL в с троку. Можно вырезать лишь часть этой строки, указав уникальный шаблон для начала и конца блока. Кроме того, можно сразу разбить строку на отдельные элементы, например, если мы имеем какой-то список, отформатированный с помощью повторяющимися html тегов. Ограничение на запрашиваемую html страницу – 200Кб и не должно быть запрета на индексацию роботами в meta-тегах. В отличии от Fetch Feed, нормально обрабатывает ru кодировки.
Flickr

Позволяет получить заголовки и картинки по заданному ключевому слову с популярного сервиса для загрузки фотографий Flickr.com. Неудобство в том, что картинка будет очень маленького размера, гораздо более интересно тянуть фотографии непосредственно с RSS фида Flickr.com.
Yahoo! Search

Возвращает поисковые результаты Yahoo по заданному киворду в виде RSS потока. Можно получить title сайта, url, дату последнего обновление в индексе и короткий снипет текста веб-страницы. Site restriction позволяет ограничить область поиска одним или несколькими сайтами.
2. User Inputs
Элементы этой группы позволяют ввести какие-то константы или запросить вод данных от пользователя.
Text Input, Private Text Input

Очень простой элемент, позволяет задать строковые константы во время отладки трубы или во время выполнения. Далее эти строки могут быть использованы для подстановки в другие блоки. Private Text Input отличается от обычного Text Input лишь тем, что позволяет указать данные, которые будут доступны только владельцу трубы и не переносятся, например, при клонировании.
3. Operators
Операторы позволяют производить определенные манипуляции с данными rss потока. Надо понимать, что каждый оператор применяет свое действие для всех items фида.
Filter

Оператор Filter пропускает или наоборот блокирует какие-то данные rss-ленты, удовлетворяющие определенным условиям. Условия можно налагать на любые поля rss ленты, например, мы хотим пропустить только те записи, которые содержат в title слово “new”.
Поля для фильтрации загружаются в дропдаун автоматически при соединении Filter с другими элементами трубы. Это действительно и для любых других операторов.
Loop

Loop циклически перебирает каждый item rss фида, применяя к его элементам какие-то модификаторы или производя определенные действия с данными. Внутри Loop вы можете размещать модификаторы строк или элементы из раздела Sources, для этого необходимо перетащить модуль непосредственно на Loop блок.
Опция emit result – перезапишет заново все содержимое rss-ленты, assign results to – направит вывод результатов в какой-то из тегов, и не повлияет на существующие данные.
Regex

Очень полезный и мощный оператор, но требует знания регулярных выражений. Пример на картинке, чистит текст от html тегов.
Rename

Позволяет переименовать название атрибутов для items. Например, чтобы привести RSS к правильному формату.
Tail, Truncate

Оператор Truncate – обрезает количество items в rss до указанной длинны. Tail – делает то же самое, только “с конца” списка.
Split, Union

Split – разделяет RSS-данные на два одинаковых потока. Union – объединяет вместе до 5 потоков. Если вам необходимо объединить более пяти rss-потоков – просто используйте несколько операторов Union.
Unique

Удалит items, которые содержат дублирующую строку. Например, если вы хотите, чтобы на выходе вашей RSS не было элементов с одинаковым title, то вы можете использовать этот оператор для фильтрации дублей.
4. String
Этот раздел содержит модули, позволяющие манипулировать со строками.
Translate

Очень интересный модуль, с точки зрения предоставляемых возможностей – позволяет переводить строки с одного языка на другой. Имеет один небольшой недостаток – при переводе удаляет все html теги, таким образом теряется форматирование текста.
Сложные трубы удобней всего разбивать на отдельные “под-трубы”, выполняющие определенную функцию, а потом собирать из готовых кусочков целостную систему. На вкладке My pipes вы найдете все свои созданные ранее трубы.
Я постарался рассмотреть наиболее интересные элементы Yahoo Pipes. Общее же их количество несколько больше и периодически появляются новые фичи. Чтобы получить короткую справку по любому из элементов и ссылку на пример – нужно нажать на знак “?” в заголовке любого блока.
Ну смотря какие задачи. YP хорош тем, что позволяет очень быстро воплощать в жизнь какие-то идеи. Вот, например, про попЖЖ я писал – представь, сколько времени потребовалось бы, чтобы писать аналог на PHP. А с пайпсами я сделал это буквально за полчаса или час. Да меньше часа, вроде. Огромнейшая экономия времени. Работает отлично до сих пор.
А, там написано, что я вообще за 15 минут сделал
Не знаю, может быть я тогда и приукрасил, но вполне вероятно, что так и было.
Тормоз, про Loop я не совсем понял.
Идея такая. Имеется обрезанный источник RSS. При помощи модулей Loop+Fetch Page вытаскиваем необходимое содержимое страницы и заменяем им содержимое description.content. Здесь все просто.
Только проблема в том, что сама страница на сайте порезана на несколько частей. В принципе, можно содержимое каждой части также вытаскивать через Loop+Fetch Page. Каждая часть в фиде будет как отдельный item с одним и тем же title.
А вот как их дальше объединить – не пойму. Так что ты там про Loop говорил?
Прямо показывать долго и лень, попробую объяснить вкратце, а дальше уж думай. Во-первых, не забывайте, что у каждого модуля есть справка с примерам, во-вторых, содержимое loop добавляется в отдельный XML-элемент, который ты можешь вставить в description, смотри опять же примеры, встроенные в модули.
Тормоз, ты меня, наверное, не правильно понял. Справку с примерами я смотрел, но нужного мне способа не нашел.
В одном фиде имеются 2 items с одинаковыми title, но разными description.content, у одного “AAA”, у второго “BBB”. Задача получить из 2 items один, с итоговым description.content “AAABBB” или в другой произвольной комбинации.
Способ, который ты предлагаеш, это замена одного содержимого другим, но не их объединение/слияние. Или я опять чего не понял?
Да, ты не понял ) Ты можешь в любой элемент вставлять любой другой элемент в пределах одного item. Я просто в данный момент не помню точный синтаксис, а открывать YP и разбираться некогда. Там что-то вроде author.name, например, или tvoyelement.subelement и т. п. А! Там ещё скобочки нужны, вроде бы фигурные {tvoyelement.subelement}. В общем, поищи хорошенько, я это увидел как раз в одном из справочных примеров.
Прикол как раз в том, что item разные…
Ну блин, для того loop и нужен.
Ну так потрать 5 минут и нарисуй для нас тупых трубу, которая может объединять description (не важно что) двух разных items.
Ну например, я хочу видеть выдачу google news в одном элементе на выходе трубы.
Просим
Нагло пользуетесь моей природной бобротой ) Вообще, сегодня планирую в бомжеленту новый набор делать, да и ремонтировать там кое что нужно, так что к вечеру постараюсь выложить пример.
Нет, я просто почти уверен, что так сделать нельзя (по крайней мере так было, когда я писал этот пост, и занимался вплотную пайпсами). Интересно было бы посмотреть решение.
BrokenBrake.biz/2008/07/yahoo-pipes.html
Кстати, сейчас по запросу Yahoo Pipes в выдаче гугла торчит твоя заметка, в заголовке которой сплог, говносайт и дор.
Вот как тебе не стыдно, Arser? ))
И в Яндексе тоже.
Arser молодец – взял Тормоза на слабо и тот сваял такие трубы – закачаешся. Это ж оказывается такие кренделя с пайпами выделывать можно. Супер!
Угу, отлично
Ключевая фича, что к элементам можно обращаться так:
${ufo.0.description}
Кстати по запросу Yahoo Pipes идет довольно много людей, интересуется народ
Кнечно интересуется, ещёбы =)
[...] и Кисточки, и виртуоз в сантехнике, уже давно написал FAQ для Труб. По трубам также много полезной информации на этом [...]
[...] Yahoo Pipes FAQ от Arser’а – faq/tutorial по Yahoo! Pipes для новичков [...]
[...] основе Yahoo Pipes, как им пользоваться можете прочитать зедсь. Выдираем любой нам необходимый контент с буржунета. [...]
[...] этим ссылкам (на русском языке): – Yahoo! Pipes (Википедия) – Yahoo Pipes FAQ – Всё про Yahoo Pipes в Рунете – Yahoo pipes: задаем параметры – [...]
[...] которые были изучены: Всё про Yahoo Pipes в Рунете Yahoo Pipes FAQ Yahoo pipes — больше чем просто RSS агрегатор.Введение [...]
Наконец-то нашел подробное руководство по трубам! Спасибо)
[...] Источник [...]