February 16th, 2011

ЖЖ в БД (скрипт на Groovy)

В продолжении темы маленьких скриптов на groovy - еще один.
Предыдущие: Большие письма в Gmail, Упражнение на сложение (LATEX)
Он запихивает ваш ЖЖ в базу данных.
(Зачем это делать тоже ясно - SQL нам расскажет всё о нашем (или чужом) ЖЖ - темы, комменты, таги - насколько фантазии хватит собирать статистику)

Сначало нам надо скачать ЖЖ в XML.
Это сделает чужая утилита - ljdump
Придется установить Питон, открыть IDLE (Python GUI), загрузить туда утилиту и запустить. Всё спросит она сама.

После её пробега у вас будет директория с файлами LXXX - посты и CXXX - комменты.

А на эти XMLи мы и запустим мой скрипт.
В этом виде он использует pure Java, embedded базу данных Hypersonic (HSQLDB), но можно подключиться к любой, конечно же. Только убедитесь, что JDBC driver у вас в classpath.

На примере этого скипта легко увидеть как изящно в груви можно парсить XML.
Только это, конечно же годится именно для скриптов. В энтерпрайзе никто не будет загружать весь XML в память (а будут использовать SAX),и никто не будет напрямую слать SQL (а будет Connection Pool, prepared statement, batch, Hibernate какой нибудь).

Вот скрипт:Collapse )Теперь глянем как это использовать.
Составим список моих постов у которых больше 50 комментов:

Collapse )
Результат:
[SUBJECT:Что меня бесит, URL:http://javax-slr.livejournal.com/324397.html, NUMCOM:142]
[SUBJECT:1, URL:http://javax-slr.livejournal.com/329453.html, NUMCOM:137]
[SUBJECT:Вступление, URL:http://javax-slr.livejournal.com/55396.html, NUMCOM:91]
[SUBJECT:Альтернативная история, URL:http://javax-slr.livejournal.com/375084.html, NUMCOM:73]
[SUBJECT:Матрица компетентности программиста, URL:http://javax-slr.livejournal.com/229088.html, NUMCOM:69]
[SUBJECT:Источники радости, URL:http://javax-slr.livejournal.com/330862.html, NUMCOM:65]
[SUBJECT:Опросник на общий контекст: флэшмоб, URL:http://javax-slr.livejournal.com/192595.html, NUMCOM:65]
[SUBJECT:Степень двойки, URL:http://javax-slr.livejournal.com/292479.html, NUMCOM:61]
[SUBJECT:ДНК генеалогия, URL:http://javax-slr.livejournal.com/283962.html, NUMCOM:57]
[SUBJECT:Если бы вы жили в ..., URL:http://javax-slr.livejournal.com/387338.html, NUMCOM:55]
[SUBJECT:Рабоче-карьерное, URL:http://javax-slr.livejournal.com/264434.html, NUMCOM:53]
[SUBJECT:Мир тесен., URL:http://javax-slr.livejournal.com/91867.html, NUMCOM:53]