RSS-редактор для гика
Оказывается, найти в Интернете редактор RSS-лент не так-то и просто. Встречаются или платные варианты, или кривые, или под Windows. Оно и понятно: для большинства блогов и движков RSS-фиды генерируются автоматически, на основе топиков. И всё-таки иногда возникает потребность создавать rss-потоки в ручном или полуавтоматическом режиме.
Поскольку найти готовое решение не удалось, решил написать самостоятельно. Нашел Java-библиотеку для генерации RSS (старенькая, но вполне адекватная, легкая и простая). С GUI решил не связываться, а парсить из текстового файла, особым образом размеченного, например, на основе синтаксиса wiki или asciidoc. Обрабатывать текстовой файл решил с помощью Groovy-скрипта. И вдруг такая идея: а зачем два файла, если внутри Groovy-программ можно прекрасно размещать многострочные текстовые блоки? Получилось вот что:
Сохранив такой код в файл RssBlog.groovy и сделав его исполняемым, можно править его любым текстовым редактором, а после правки запускать на исполнение. В результате должен сформироваться файл blog.rss в формате RSS-2.0. Можно даже дописать в конце автоматическую выгрузку посредством ftp.
Конечно, это не очень изящно, зато быстро написано (за полчаса, включая отладку) и надежно работает, если усвоить нехитрые принципы синтаксиса. В заключение добавлю, что библиотеки, скачанные по вышеприведенной ссылке, нужно поместить в каталог ~/.groovy/lib.
Поскольку найти готовое решение не удалось, решил написать самостоятельно. Нашел Java-библиотеку для генерации RSS (старенькая, но вполне адекватная, легкая и простая). С GUI решил не связываться, а парсить из текстового файла, особым образом размеченного, например, на основе синтаксиса wiki или asciidoc. Обрабатывать текстовой файл решил с помощью Groovy-скрипта. И вдруг такая идея: а зачем два файла, если внутри Groovy-программ можно прекрасно размещать многострочные текстовые блоки? Получилось вот что:
#!/usr/bin/groovy
import viecili.jrss.generator.*;
import viecili.jrss.generator.elem.*;
format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm")
rss = new RSS(RSS.VERSION_2_0)
chan = new Channel('Новостная лента "Голос Мухославска"', "http://example.ru",
'''
Блог содержит актуальные новости из жизни российских регионов. Освещается широкий круг
политических, экономических и культурных проблем.
''')
[
'''Новости животноводства---
У попа была собака. Он ее любил. Она съела кусок мяса - Он ее убил. В землю
закопал, надпись написал: У попа была собака. Он ее любил. Она съела кусок мяса -
Он ее убил. В землю закопал, надпись написал: У попа была собака. Он ее любил.
Она съела кусок мяса - Он ее убил. В землю закопал, надпись написал...
--- http://example.ru/sobaka.html
--- 2011-05-20 01:35''',
'''Модернизация на марше---
В небо спутник запустили из села Кукуево. Ох, и здорово летает
железяка хренова. Сидит Ваня на заборе в алюминевых штанах. А кому какое дело,
что ширинка на болтах. Летела ракета, упала в болото: какая зарплата -
такая работа.
--- http://example.ru/kosmos.html
--- 2011-05-20 01:30''',
].each{
sa = it.split(/\s*-{3,}\s*/)
item = new Item(sa[0], sa[2], sa[1])
if(sa.size() > 3)item.setPubDate(format.parse(sa[3].trim()))
chan.addItem(item)
}
rss.addChannel(chan)
RSSFeedGeneratorFactory.getDefault().generateToFile(rss, new File ("blog.rss"))
Сохранив такой код в файл RssBlog.groovy и сделав его исполняемым, можно править его любым текстовым редактором, а после правки запускать на исполнение. В результате должен сформироваться файл blog.rss в формате RSS-2.0. Можно даже дописать в конце автоматическую выгрузку посредством ftp.
Конечно, это не очень изящно, зато быстро написано (за полчаса, включая отладку) и надежно работает, если усвоить нехитрые принципы синтаксиса. В заключение добавлю, что библиотеки, скачанные по вышеприведенной ссылке, нужно поместить в каталог ~/.groovy/lib.
Комментарии (2)
RSS свернуть / развернутьSergei_T
yababay
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.