Позначки

Мене завжди цікавило, яким чином простий громадянин може слідкувати за роботою Верховної Ради України. Завдання це вкрай непросте, ажде подій відбувається там багато, а часу вільного в простого громадянина зазвичай досить мало. Зрозуміло, що потрібна якась автоматизація.

На щастя, в ВРУ є сайт на якому достуна різноманітна інформація, зокрема інформація про голосування в Раді. До прикладу: http://w1.c1.rada.gov.ua/pls/radan_gs09/ns_golos?g_id=5428

Як видно в посиланні, це голосування має ідентифікатор 5428 на сайті ВРУ, назву “Поіменне голосування про направлення на повторне перше читання проектів законів про внесення змін до деяких законодавчих актів України щодо забезпечення єдності судової практики (№2203, №2203-1, №3356, №3356-2)”, дату “06.06.2014 11:57”, суми голосів за/проти/утримались/не голосували/всього, та результат – “Рішення не прийнято”. А також інформацію пофракційно – кількість депутатів у фракції, кількість голосів за/проти/утримались/не голосували/відсутні. Та інформацію про кожен окремий голос – Прізвище та Ініціали депутата, приналежність до фракції, голос (за/проти/утримався/не голосував/відсутній).

На основі цієї інформації можна збирати певну статистику та аналізувати роботу ВРУ в цілому. Наприклад, можна відслідкувати перехід депутатів між фракціями, статистику прогулів, синхронне голосування позафракційних депутатів з певними фракціями (як це визначали chesno.org до прикладу) і такє інше. Власне це я і вирішив автоматизувати.

Так з’явився проект RadaWatch – пишу його я на Java, код повністью відкритий, доступний на GitHub: https://github.com/mvmn/RadaWatch
(для запуску наразі потрібна не тільки Java а ще і Maven, але в майбутньому я додам runnable JAR файли на GitHub для простоти запуску).

Функціонал наразі тільки основний. Для початку, інформацію треба якось отримати з сайту ВРУ і кудись записати – щоб потім із нею працювати. Це вже реалізовано – RadaWatch піднімає реляційну базу даних на “двигуні” H2 DB і дозволяє скачувати інформацію з сайту ВРУ в цю базу для подальшого аналізу. Функції аналізу наразі не реалізовані, але знайомим з мовою запитів SQL людям не стане проблемно робити деякий аналіз вже зараз. H2 DB зручно надає веб-інтерфейс для роботи з базою через SQL (має вбудований веб-сервер для цього), а наприклад такий SQL запит:
select name, title, min(votedate) as fromdate, max(votedate) as todate from individualvote left join votesessionfaction as vf1 on vf1.id = individualvote.votesessionfactionid
left join votesession as v1 on v1.id = vf1.votesessionid
group by name, title order by name, fromdate

Дозволяє визначити час перебування депутатів в різних фракціях.
А такий:
select name, title, min(votedate) as fromdate, max(votedate) as todate from individualvote left join votesessionfaction as vf1 on vf1.id = individualvote.votesessionfactionid
left join votesession as v1 on v1.id = vf1.votesessionid
where name in (select name from individualvote as iv1 left join votesessionfaction as vf1 on vf1.id = iv1.votesessionfactionid group by name having count(distinct title)>1)
group by name, title order by name, fromdate

вибрати з них лише тих, хто побував у 2 чи більше фракціях (бо є такі що побували вже в 3-х – вийшли з ПР в позафракційні, а потім з позафракційних увійшли в групу “Економічний розвиток” або групу “Суверенна європейська Україна” – позафракційність рахується як окерма фракція).

Так, тепер можна виводити депутатів на чисту воду за допомогою чистого SQL – зовсім як в кінофільмі “Дивчина з тату дракона” (-:

Хоча, одна функція з аналізу вже вбудована в програму – це аналіз назв голосувань, який дозволяє згрубша зрозуміти чим займалась Рада (є можливість задати проміжок часу на якому аналізуються заголовки).
Скріншот:
Titles analysis

Ось наразі і все.