Перевод web-страниц через Google Translate в Yahoo Pipes, или переводной контент для сплога с любого блога
Опубликовано в (Yahoo Pipes, Контент, Сплоги) | автор splogmaster | 10-03-2009
Тэги: FeedWordPress, Google Translate, перевод, плагин
Свершилось. Я закончил, а точнее вчера начал с нуля и сегодня закончил супер-мега Yahoo Pipes трубу для автоматического перевода web-страниц (не просто текст, а HTML-код страницы) через сервис-переводчик Google Translate . Используя эту трубу можно сделать сплог на базе переводного контента с любого блога, а блогов хотя бы только на английском языке немерено. Можно делать перевод не только на русский язык, и не только с английского, например, перевод с украинского на русский будет выглядеть очень человекописным и в тоже время текст в большей мере получится уникальным, либо перевод с француского на английский так же будет очень близок к человекописному. К сожалению, полностью сохранить HTML-разметку контента не получается, поскольку сначала приходится разбивать контент на маленькие кусочки, а потом собирать его по кускам, в процессе чего Pipes коверкает часть кода, например, с wordpress-постов исчезает выделение цитатой.
Так же мною была взята новая версия плагина FeedWordPress - в новой версии плагин позволяет автоматически переделывать категории синдицируемого поста в метки на сплоге. Как известно немногим, стандарт RSS 2.0 позволяет присваивать каждому item‘у несколько категорий, но Yahoo Pipes разрешает только одну категорию на каждый item - чтобы перенести все категории переводимого поста в метки на сплоге, мне пришлось немного извратиться внутри трубы и немного переделать плагин FeedWordPress. Ну и конечно же, моя версия плагина тянет все картинки со страницы в папку сплога.
В общем, с учетом полной автоматизации такая труба-переводчик видится мне весьма полезным инструментом. В качестве бонуса я все готовое выкладываю в паблик на некоторое время, 3-7 дней, после этого исходники будут спрятаны, и получить мои переводческие разработки можно будет либо за деньгу, либо под мое очень хорошее настроение. В общем доступе таким инструментам делать нечего.
Поскольку универсальной трубы для любого типа/вида/шаблона блога создать нереально, я покажу создание трубы-переводчика на кокрентом примере, в качестве подопытного я взял первый попавшийся англоязычный блог - hopemarin.wordpress.com:
1. Вспомогательная труба для перевода через Google Translate одной веб-страницы:
В качестве параметра передается URL-страницы, которую нужно перевести. При парсинге переведенной страницы указываем границы начала/конца поста - ведь вся страница нам не нужна, - и, самое главное, мы делим напарсенный контент на мелкие куски, поскольку Yahoo Pipes позволяет работать с кусками данных не более 200кб. За счет лишнего кода от переводчика (после перевода в HTML-коде будет сожержаться не только переведенный текст, но и его оригинал + куча всякого javascript-кода) наш пост растается далеко за 200кб, поэтому его необходимо разбить на куски. Ну и в самом конце мы убираем лишьний html-код из каждого куска. Все, от первой трубы нам больше ничего не нужно.
2. Теперь делаем трубу для слияния кусков контента, полученных в первой трубе, в один кусище/пост:
Просто тупо взяли и соединили все куски в один. В трубах много тупого.
3. Сделаем вспомогательную трубу для перевода простого текста через Google Translate - это нам понадобится для перевода заголовков и категорий:
Простейшая труба, в качестве параметра передается текстовая строка, которую нужно перевести, на выходе получаем перевод нужной строки.
4. Ну и главная труба, которая в качестве параметра будет принимать ссылку на RSS блога-донора, а на выходе мы будем получать полнотекстные, полноHTMLьные переведенные посты с отформатированными категорями для их последующей передачи в FeedWordPress и превращению их в метки сплога:
И снова ничего особо сложного: немного извратились со списком категорий поста, потом перевели заголовок (title) поста, перевели сами категории (category), получили переведенное тело (description) поста, все это проделали нужно количество раз в зависимости от количества постов (это тоже задается параметром, на всякий случай) и получили что задумали - перевод блога-донора для будущего сплога.
Остался еще плагин FeedWordPress в новой версии для работы с метками/тегами. Перед использованием плагина нужно в корне сайта создать папку images и дать ей прав на запись.
Я даже решил сделать демонстрационный пример сплога на базе этой трубы. Получилось конечно не очень, но в целом идея ясна.
Смотрите тут: блог-донор hopemarin.wordpress.com и переводной сплог splogmaster.ru/TR
Сотрудничество с Upsystems.Ru - это профессиональное компьютерное обслуживание и аутсорсинг в Москве.
Спасибо, очень интересно, но в то же время довольно сложно для меня. Для меня проще было бы создать парсер на пхп, а после этот контент переводить тоже с помощью какого-нить скрипта.
Да, интересно.
Но есть вопросик. Сделал подобное с переводом постов. У меня плагин feedwordpress работает переменно. То есть, обнавляю RSS в ручном режиме посты выводит, на автомате не хочет работать. Брал ленты с pipe и feedburner не работают, а с другого блога RSS тянул, тот же burner, на автомате обновляется.
Работа плагина зависит от скорости обработки трубы?
Splogmaster, ты составляешь структуру RSS перед pipe out?
Стоит трубы прожигать и зачем, у burnera обновление 30 мин.?
А если сплоги делать на 000webhost.com там cron или feedwordpress у тебя работал?
работа плагина зависит от скорости отработаки трубы, зависит от скорости работы хостинга. со слодных труб у меня тоже автоматом постинг не работает. если труба следит за обновлением на блоге и постит в сплог новые посты, то лучше постить по одному посту для бытсрой работы трубы. именно для этого я в свое переводной трубе сделал возможность указания количества постов. также для решения проблемы можно использовать скрипт для кэширования rss.
” ты составляешь структуру RSS перед pipe out” - не понял вопроса
“Стоит трубы прожигать и зачем, у burnera обновление 30 мин.?” - я трубы не прожигаю, через сколько обновление у feddburnera я не знаю. по идее, прожигание фидов это что-то типа кэширования, возможно поможет решить проблему с долговыполняемыми трубами.
раньше на 000webhost.com feedwordpress работал только на некоторых серверах, сейчас не знаю. крон вроде бы работал везде.
О спасибо.
Ну и не понятный вопрос, item builder используешь перед выводом? Просто проблемы с feedwordpress при импорте из pipe, ссылки в descriptions не сохраняются (точнее теги ), в pipe debug все отлично.
А как feedwordpress по крону запустить? Какой файл, в readme не нашел, но вроде можно.
item builder я использую иногда, если нужно:)
“ссылки в descriptions не сохраняются (точнее теги )” - какие теги могут быть в description? теги это категории/метки поста, которые видны в дебаггере, но теряются при выводе rss?
насчет крона я не знаю. а зачем оно?:) есть же автообновление в самом плагине. если ты думаешь, что использование крона решит проблему неработающего автообновления, то это наврядли.
Да, я хотел в каждом посте проставлять ссылку на мой любой сайт, через regex. В дебаггере все ссылки есть, после feedwordpress в блоге нет. Можно это как-то решить?
у меня таких проблем никогда не возникало. нужно смотреть, если хочешь показывай трубу и результат постинга или разбирайся сам
Оно как-то через раз, еще поковыряю водопровод.
А почему ты не используешь wp-o-matic?
а зачем мне wp-o-matic, меня устраивают возможности feedwordpress, я к нему уже привык, в коде разобрался, переделал под свои нужды.
Спасибо, что выкладываешь такие трубы в паблик. Я, кстати, подсмотрел у тебя способ конкатинации через стринг билдер. Правда, я бы такие трубы действительно держал в паблике ограниченное время, скажем 3-5 дней или до индексации поста. Подписчикам времени хватит
Что такое “конкатинация” ?:)
Шутишь,да? Ну очепятался,с кем не бывает:) Я имел в виду конкатЕнацию, объединение.
ага, вот конкатЕнация это следующее слово после “мама”, которое я произнес:) эта конкатенация неплохо работает и через простой regex, но в случаях с большим html-кодом лучше пользоваться стрингбилдером, regex любит все на свой лад переделывать
сенкс))
это урезанная версия, или я туплю? почему не используется tr1 в tr4?
сори, нашел, разобрался)) спасибо
Добрый день. Есть проблемма - после добавления любого источника feedwordpress, выводится надпись Feed Finder: New Syndicated Feed и пустое поле под ней. И все. В чем может быть проблема? Как решить ее?
Проблема решаема, но я не знаю как. Если сильны в англ, то можете посмотреть на официальном сайте плагина feedwordpress, там эта проблема обсуждалась. Ну а я в таких случая просто менял хостинг.
Правда решаема:) Если интересно:
добавляем файлы
/MagpieRSS-upgrade/rss.php
/MagpieRSS-upgrade/rss-functions.php
в
/wp-includes
и все заработает:)
хм… странно… заработало добавление обычных рсс… а вот рсс с трубы выдает: no feed found
есть идеи?
Привет, спасибо за описания труб…
вот только твой фидвордпресс выдает ошибку “feedwordpress.php - in line 1890″ при попытке запарсить трубы и другие рсс… причем русская вресия 0.993 работает исправно!
в чем может быть проблема ?
имелось ввиду что “НЕ” обрезает посты тегом more
охота получить такое же - splogmaster.ru/TR
ошибка feedwordpress.php - in line 1890 связана с созданием категорий. моя версия плагина прежназначена только для создания меток, остальные варианты я не тестировал.
про тег more вообще ничего не понял. я никогда не использовал тег more, обрезка постов делается специальным плагином, о котором я не раз писал.
splogmaster.ru/TR сделан на базе моей Wordpress-сборки (есть соотвествующий пост на блоге) + новая версия плагина feedwordpress с этого поста
спасибо за ответ все заработало,
но посты все равно на главной не режет как на TR :((
хотя необходимый плагин активирован
плагин активирован - хорошо, а в шаблоне соответствующие изменения внесены?
а какие именно изменения ? :)))
а разве в описании плагина об этом не говорится?:)
чето я туплю) подскажи что это за плагин
excerpt ?
да, именно он the-excerpt-reloaded
ничего не получается :((
пытался перевести с rss ленты там всего то 1 фотка и описание и ничего не переводится пишет failed failde translate так и не заработал :(((
неужели нельзя как то просто ввел rss ленту на инглише получил rss ленту такую же только на рашн с теми же фотками :(((
Eugene, вчитайся в название поста “Перевод web-страниц” - это значит перевод страниц, а не rss-лент
ААА я тебя люблю )))))) парился с оматиком, когда в посту прочел что feedwordpress умеет картинки тянуть офигел, но новый 2008.1214 отучили от картинок, а твоя 2008.1105 справляется на ура. спасибо!!!!