Перевод RSS в Yahoo! Pipes
Я не знаю китайский язык, поэтому мне недоступна очень большая часть интернета. Однако в последнее время стало появляться всё больше и больше он-лайн переводчиков. Например, я перевожу японские и китайские сайты с помощью Google Translate — его перевод меня вполне устраивает, так как суть текста становится вполне понятной.
Но что делать, если я хочу подписаться на RSS какого-нибудь китайского блога, но чтобы сразу читать на английском? Готовых решений я не нашёл, однако вспомнил, что есть Pipes от Yahoo, с помощью которого это наверняка можно реализовать. Итак, нам нужно получить в итоге переведённый RSS-поток, который можно будет вставить в любой RSS Reader.
Yahoo! Pipes — это графический инструмент, с помощью которого легко создать приложения, объединяющих RSS, сервисы, сайты и т.п. Можно создавать циклы, фильтры.
Сразу же после входа в систему Pipes меня встретили с предложением помощи перевести RSS. (После этого я долго думал, как они узнали о том, что я хочу?)
Ссылка вела на презентацию, в которой подробно разобрано, как составить свой Pipes для перевода RSS с французского на русский:
Сначала нам надо выбрать источник информации: для этого в левой панели из Sources выбираем Fetch Feed, в котором указываем адрес нашего RSS. Затем в Operators выбираем Loop для того, чтобы он циклично обходил каждый элемент из потока:
Оператор Loop состоит из трёх частей: что обрабатывать, как обрабатывать (поле в середине, куда можно вставить модуль обработки) и куда выводить:
В качестве модуля обработки выбираем Translate из String:
Переводчик мы размещаем внутри оператора цикла:
Соединяем два элемента между собой и выбираем в качестве цели и назначения перевода item.description:
Система Pipes устроена так, что в процессе работы всегда можно посмотреть, что получается на выходе каждого из элементов — это Debugger, который находится в нижней части рабочей области. Например, я щёлкнул по Fetch Feed и решил посмотреть, что у меня на выходе:
ой! А тут что-то не то. Почему-то на сайте настоящие иероглифы, а здесь какие-то непонятные символы. И посмотрев вывод элемента Loop, я не заметил перевода. Значит здесь что-то не так. Ничего более умного не придумав, я решил добавить этот RSS в FeedBurner, так как знаю, что он умеет «лечить» потоки:
После этого я поменял адрес потока в элементе Fetch Feed на адрес, который мне выдал FeedBurner, и снова посмотрел в Debugger:
Теперь я создал ещё один Loop для перевода заголовка (item.title) и соединил между собой элементы. Сначала Fetch Feed, затем чисто китайские данные из него идут на первый Loop, где переводится только заголовок. После от первого Loop частично переведённые данные идут на второй Loop, где происходит перевод текста:
Вывод последнего Loop показывает, что всё правильно:
Соединив последний Loop с Pipe Output, я завершил создание своего Pipe. Сохранив его, я получил страницу, на которой можно просмотреть переведённый поток:
На этой же странице находятся ссылки для добавления в популярные RSS-агрегаторы. Правда там не было Google Reader, поэтому я просто скопировал RSS-адрес моего Pipe, который затем добавил в Google Reader:
Вот так довольно быстро и просто можно создать переведённый RSS, который затем можно добавить в любимый RSS Reader.
Коммент.(6)