Создать rss канал шаблон преобразования. Создаем свой RSS канал с помощью Google Apps Script. Как создать свой канал в Яндекс Дзене

RSS-ленты на сегодняшний день прочно обосновались на страницах многих современных сайтов, потому, как данная технология очень удобна для получения информации об оновлениях сайтов. Если на сайте нет RSS-канала, то создать его поможет один из онлайновых генераторов RSS-ленты, который поможет внедрить на своем проекте технологию RSS при отсутствии опыта написания соответствующего кода для своего сайта.

Самый простой способ создать RSS-ленту для понравившегося сайта- воспользоваться сервисами или . Первый из них отличается рускоязычным интерфейсом и даже не требует регистрации. Второй имеет возможность перевода интерфейса на русский. Оба сервиса крайне просты в использовании. Чтобы получить RSS-ленту, достаточно указать ссылку на исходный веб-сайт. Никаких дополнительных инструментов, заводящих пользователя в тупик, не предусмотренно. Задача поиска обновляющихся элементов и оформления ленты целиком возложена на алгоритмы самих сервисов.

Более гибкие возможности редактирования собственных RSS-каналов предлагаются на сайтах и . Feedity сканирует указанную пользователем веб-страницу и составляет список всех расположенных на ней ссылок, которые ведут на новые сообщения или статьи. PonyFish имеет полезную особенность сохранение и передачи cookies, что позволяет обрабатывать страницы, для просмотра которых требуется регистрация.

Неплохие возможности генерации RSS-лент предоставляет сервис . Данный сервис, в отличие от выше рассмотренных работает в "полуавтоматическом" режиме. Пользователь может активно влиять на отбор данных для RSS-ленты и ее оформление. Еще один сервис предлагает для создания каналов новостей три режима: AnySite, MySite, Podcast. Понятно, что первый режим это создание Rss-канала для любого сайта. Второй режим предлагает самостоятельно поставить в коде своих вев-страниц теги разметки, на которые будет ориентироваться робот сервиса. И третий это возможность создания звуковых подкастов.

Если у вас уже есть RSS-лента, то в нее можно включить контекстную рекламу. Самый удачный для этого дела сервис Feedburner принадлежащий поисковому гиганту Google. Он достаточно тесно связан со службой AdSense, так, что при желании можно включить в свою ленту контекстную рекламу. Разместив уже сужествующую ленту на данном сервисе вы получаете возможностьдобавлять к ней ряд полезных сервисов, в том числе подкасты в видеофоматах.

Ну вот пожалуй и все. Воспользоваться одним их вышеприведенных сервисов для создания своей RSS-ленты не представляет из себя ничего сложного, достаточно лишь желания, а выгода для вашего сайта будет неоспоримой.

Есть у этого ресурса RSS лента последних изменений. Но вот беда - лента изменений самая минимальная. Там указано только кем, когда и какая страница редактировалась. Нет полных изменений и нет GUID у элементов ленты, поэтому некоторые RSS клиенты (например, Google Reader) не показывают большую часть новостей, считая их одинаковыми.

Для преобразования ленты в свой, удобный формат, выбор пал на такой специализированный инструмент, как Yahoo Pipes . Но тут постигла неудача. Для получения изменений странички, wiki строго требовала наличия cookie с именем «wikit_e» в http запросе, а научить Yahoo Pipes отсылать куки не получилось. Фокус с HTTP запросом GET и параметром в виде "?COOKIE=" так же не проходил.
В итоге, выбор пал на более гибкий инструмент - Google Apps Script . В итоге получился вот такой скрипт:
// Эта функция будет выполняться автоматически, при вызова скрипта как веб-приложения function doGet() { // Задаем URL исходной RSS ленты var feed = "http://wiki.tcl.tk/rss.xml"; // Определяем ID для доступа к кэшу var id = Utilities.base64Encode(feed); // Определяем кэш и пробуем забрать уже собранную ленту из него var cache = CacheService.getPublicCache(); var rss = cache.get(id); // Если в кэше лента не сохранена - переходим к ее созданию if (rss == null) { // Получаем данные RSS ленты в виде XML var data = UrlFetchApp.fetch(feed).getContentText(); var doc = Xml.parse(data); // Выбираем канал var channel = doc.getElement().getElement("channel"); // Выбираем название канала, ссылку, описание ленты var title = channel.getElement("title").getText(); var link = channel.getElement("link").getText(); var desc = channel.getElement("description").getText(); var guid, date; // Начинаем создавать свою RSS ленту, заполняем название, ссылку и описание rss = ""; rss += "" rss += "" + title + "\n"; rss += "" + link + "\n"; rss += "" + desc + "\n"; // Выбираем все элементы ленты и последовательно проходим по каждому var items = channel.getElements("item"); for (var i in items) { item = items[i]; // Выбираем из ленты заголовок, ссылку, дату новости, описание title = item.getElement("title").getText(); link = item.getElement("link").getText(); // Ссылка должна указывать на diff странички link = link.replace(/\/(\d+)$/, "/_/diff?N=$1#diff0"); date = item.getElement("pubDate").getText(); desc = item.getElement("description").getText(); // Формируем GUID для элемента ленты guid = Utilities.base64Encode(link + date); // Скачиваем diff страницы, используя при этом Cookie "wikit_e" как "rss" var fullpage = UrlFetchApp.fetch(link, {"headers":{"Cookie":"wikit_e=rss"}}).getContentText(); // Вырезаем из страницы только body var matched = fullpage.match(/]*>([\w\W]*)<\/body>/i); // Вырезаем заголовки и подвал страницы matched = matched.replace(/